分区介绍及linux fdisk 使用

介绍了磁盘的分区的概念,以及在linux下面,使用fdisk程序来进行分区

相信大家在接触电脑的时候,最开始都是windows吧,系统盘 C 盘,大家都知道,当然还有其 D 盘,E盘,F盘,以及更多,每个盘,都是一个分区。这个是硬盘的分区。

那么硬盘为什么要分区呢?这个,在网上,很多人说,我的硬盘没有分区,其实不是没有分区,只有一个 C 盘的时候,这个 C 盘,也是一个分区,区别是在于一个分区和多个分区的情况,一个分区也是有分区,并不是没有分区,这点大家要明白。

分区的概念,相当于一套房子里,有卧室,有厨房,卫生间。或者可以比喻成一个柜子,里面有很多个抽屉,有大的,有小的,抽屉就可以理解成分区。

一块硬盘,使用前,要经过三个步骤

1. 低级格式化
2. 分区
3. 高级格式化

其中,低级格式化,是硬盘厂商做的事情,每一块硬盘出厂前,厂商就已经对它进行低级格式化了,这也是一个必须的步骤,低级格式化的目的是将磁盘划分出柱面和磁道,再将磁道划分成若干个扇区,每个扇区又划分出标识部分ID,间隔区GAP和数据区DATA等等。另外,低级格式化,对硬盘是一种损耗,不到万不得已,不建议进行低级格式化。

分区的就是硬盘的区分,这个概念在之前已经提过,而高级格式化,也就是创建文件系统,就是我们在电脑上的格式化操作。

PS:以下提及的扩展分区,逻辑分区,以及最多4个主分区,这都是 MBR 分区机制下的概念,各位同学们要注意啦!硬盘的分区机制有两种,分别是 MBR 和 GPT ,这个我会在后面的更新中继续说到。

另外,就是一个硬盘最多有4个主分区,若要划分超过4个以上的分区,就需要用到扩展分区,扩展分区是不能直接使用的,要在扩展分区上建立逻辑分区,才可以使用,在理论上来讲,逻辑分区可以有很多个。

而至于为什么最多只能4个主分区,这是因为,硬盘的每个扇区为一般为 512 字节,当然扇区的大小,这个是硬盘厂商来定义的,多少都可以,512字节的扇区,已经成为了习惯。没有谁愿意去改这种习惯。硬盘的第一个扇区,也就是前512个字节,存放的是主引导记录加上分区表,至于主引导记录是什么,这个是引导操作系统的,本文不提及,说的话,东西太多了,大家可以自行查阅资料,第一个扇区(512)字节,分成三个部分,第一个部分是主引导记录,446字节,第二个部分是分区表,64字节,第三部分是对硬盘加密的标识,2字节,这样就是

446+64+2=512字节

对硬盘加密就是改字最后两个字节,而一个主分区,需要占16个字节,64/16=4,所以,这个就定义了一块硬盘,最多可以分4个主分区,而扩展分区,也是一个主分区,但和主分区意义不一样。主分区是单纯的一个分区,一块硬盘最少要有一个主分区,windows系统需要安装在主分区上,否则不能启动,而linux 系统,我们在安装的时候,也需要把 /boot 放到主分区上。

扩展分区,实际上是无法直接使用的,需要在扩展分区的基础之上再划分逻辑分区,才可以使用,这个理论上可以划分无限个逻辑分区的。除了主分区以外,就是扩展分区,只能有一个。

所以在我们需要划分5个或者5个以上的分区,就需要使用扩展分区和逻辑分区,一般的做法是划分一个主分区,剩余的空间全部给了扩展分区,再扩展分区的基础上,再创建逻辑分区。

还有一点,就是 linux 系统和 windows 系统不同,在 linux 系统里面,没有盘符的概念,因为 linux 系统,只有一个 / 目录,所有的分区都是挂载在某个目录下,可以使用 mount 命令查看,而 windows 则有多个根目录,根目录为 C: D: E: 类似于这样。linux 目录结构是一棵倒长的树,具体这个我后续会在博客里更新。

下面来讲一下 linux 系统分区的使用。一般使用 fdisk 命令,但 fdisk 不支持对大于 2T 的硬盘操作,单个硬盘大于 2T,需要使用 parted

使用 fdisk -l 查看分区,也可以在后面加上 设备名称,如: fdisk -l /dev/sda

[root@localhost ~]# fdisk -l /dev/sda

Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0001abcd

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64        3917    30944256   8e  Linux LVM
[root@localhost ~]# 

在 linux 系统中,对于硬盘的标识,SCSI接口 SATA接口 USB接口,等这些存储设备,使用 sd 表示, 如 sda sdb sdc,IDE 使用 hd 表示,如 hda hdb hdc hdd,virtio 虚拟化的虚拟磁盘,使用 vd 表示,如vda vdb vdc,而后面的字母a b c d, 代表硬盘的顺序,a 表示第一块,b 表示第二块,c表示第三块,依此类推。所以我这里是 sda

分区的标示,主分区以 1 2 3 4 标识,5以后为逻辑分区。

如上操作,我这块硬盘有两个分区,两个都是主分区,所在是 sda1 sda2。其中 sda2 是 LVM,这个在后续同样也会介绍。

使用 fdisk 加设备名,进入分区程序,如 /dev/sdb

[root@localhost ~]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x58d33b17.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): 

输入 m 或者 输入 help 可以查看帮助

Command (m for help): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

Command (m for help): 

介绍几个常用的命令。

p 查看分区
n 创建分区
d 删除分区
w 保存分区设置并退出 fdisk
q 不保存分区设置,并退 fdisk
t 更改分区类型

创建一个新分区,先使用 fdisk 加设备分进入,按下 n 创建分区。

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)

这里有两个提示,并且等待你继续输入,这时,输入p 代表将要创建一个主分区,输入 e ,代表将要创建一个扩展分区,这里我们输入 p

p
Partition number (1-4): 

这里要输入分区的号码,为 1 到 4 为什么是1 – 4,前面说过,一块硬盘最多只能有4个主分区,并且我这是新加的一块硬盘,目录还没有分区,直接输入1,在不确定的时候,你可以在创建分区之前使用 p 查看

Partition number (1-4): 1
First cylinder (1-15665, default 1):

这里是分区开始的位置,单位是柱面,这个我们保持默认就行,直接回车

First cylinder (1-15665, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-15665, default 15665): 

这里是分区结束的位置,也决定了我们分区的大写,这里可以写柱面,不过柱面计算起来,有点麻烦,可以直接写容量,比如 +200M 、 +10G,就可以,写好后按回车键确认。如果不写内容,直接按回车,就是将所有的剩余空间,全部分给了这个分区。

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
e
Partition number (1-4): 2
First cylinder (2613-15665, default 2613): 
Using default value 2613
Last cylinder, +cylinders or +size{K,M,G} (2613-15665, default 15665): 
Using default value 15665

Command (m for help): 

这里再按n 创建一个扩展分区,这里注意区号,因为1已给了一个分区,再写1,会报错的。所以写2,并且将所有的剩全空间给这个扩展分区。在容量那里,都不输入,则是默认,将所有剩作空间给那个分区

再来创建逻辑分区

Command (m for help): n
Command action
   l   logical (5 or over)
   p   primary partition (1-4)

这里可以看到,e选项已经没有了,变了 l 也就是逻辑分区,前面说过,扩展分区只能有一个,并且,创建了扩展分区之后,才可以创建逻辑分区。创建过程都是一样。

完成以后,可以使用 p 查看,再按w保存,并退出。

PS:所有的操作,都不会即时生效,在你按下w,并按回车确认的时候,才会保存

删除分区,则按d 然后 再输入要删除的序号,需要注意的是,逻辑分区由于在扩展分区的基础这这上建立的,如果删除扩展分区,则所有逻辑分区都会被删除。

若删除错误的话,可以 按q 退出,再重新进来。或者按 CTRL + C 也可以退出。

退出后,可以使用partprobe 更新一下磁盘信息

partprobe /dev/sdb

partprobe 后可以根设备名,这样只更新指定的设备,若不加,则更新全部,就是所有的

格式化:

mkfs.ext4 /dev/sdb1
mkfs.ext4 /dev/sdb5
mkfs.ext4 /dev/sdb6

mkfs.ext4 这个命令,是将设备格式化成 ext4 文件系统,可能也可以格式化其它的,比如

mkfs.ext3 /dev/sdb1 
mkfs.ext2 /dev/sdb1

当然,也可以使用如下的命令,效果是一样的

mkfs -t ext4 /dev/sdb1

格式化完后,挂载即可以使用

mount /dev/sdb1 /mnt

mount 命令格式如下 mount 【要挂载的设备】【要挂载的目录】

mount 命令的选项很多,这个后期我还会更新mount 用法。

猜您喜欢