创建分区

本节将介绍如何对一个硬盘进行分区以及删除分区。

假设我们有一个硬盘/dev/sdb,它还没有任何的分区,如下:

[root@localhost ~]# lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sdb      8:16   1 223.4G  0 disk 

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

Disk /dev/sdb: 239.9 GB, 239902654464 bytes, 468559872 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

接下来,我们对硬盘/dev/sdb进行分区,目标是分成一个主分区,扩展分区中分两个逻辑分区。首先,执行命令fdisk /dev/sdb,然后会提示输入交互命令(完整的交互命令见本文附录),输入p表示打印分区情况,n表示新建分区,我们输入n来新建分区。然后会提示选择创建的分区类型,p表示主分区,e表示扩展分区,我们输入p来创建一个主分区。然后会继续提示该分区的编号,由于还没有分区存在,所以编号可以选择14,我们直接回车选择默认值1。然后会继续提示输入起始扇区的索引值,由于12047的扇区已经被系统使用不可分配,我们直接回车选择默认值从2048开始。接着,它会提示输入结束扇区的索引值或者大小,我们输入+50G然后回车,此时一个50G大小的主分区就创建好了。接着,我们在命令提示符中输入w表示把刚才的操作从内存写入到磁盘分区表中。此次命令结束。

[root@localhost ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x93de47a2.

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 
First sector (2048-468559871, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-468559871, default 468559871): +50G
Partition 1 of type Linux and of size 50 GiB is set

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

此时,虽然分区表已经被修改了,但是我们还看不到刚才的分区效果,我们还得执行一条命令partprobe,然后我们就可以看到刚才的分区了。如下

接着,我们把硬盘/dev/sdb上剩余的空间创建一个扩展分区。首先,执行命令fdisk /dev/sdb,接着在命令提示中输入n,然后输入e选择扩展分区,接着直接回车使用默认的分区号2,然后直接回车起始扇区使用默认的值,然后再直接回车结束扇区也使用默认的值,此时剩余的空间就都划分到了扩展分区中。最后,输入w把更改从内存写入到磁盘分区表中。

接着,我们执行partprobe命令,然后再来查看分区情况,如下。我们发现,在lsblk命令中看到的/sdb2的大小为1K(虽然不知道为什么是1K,但没关系)。同时发现,/dev/sdb2SystemExtended,可以看出,它是一个扩展分区。

接着,我们在/dev/sdb2这个扩展分区中创建两个逻辑分区。首先输入命令fdisk /dev/sdb,接着输入n,此时由于已经建立了扩展分区,那么再新建分区的话就只能是主分区或者是逻辑分区,所以提示变成了pll表示逻辑分区)。我们输入l,逻辑分区的编号是从5开始的,不需要我们选择。接着我们直接回车起始扇区使用默认值(即从扩展分区的起始扇区开始),然后输入+80G,最后输入w

此时我们先不执行partprobe命令,步骤与上面类似,如下

两个逻辑分区都创建好了以后,我们执行partprobe命令然后查看分区情况,如下。这个时候,我们基本可以知道如何从lsblk命令与fdisk命令的输出判断某个分区是哪种类型的分区了。在lsblk的输出中,编号小于等于4(sdb1到sdb4)的为主分区或扩展分区,而其中大小为1K的为扩展分区,其余的为主分区;编号大于等于5(sdb5、sdb6)的为逻辑分区。在fdisk的输出中,同样,编号小于等于4的为主分区或扩展分区,而标志为Extended的为扩展分区,标志为Linux的为主分区;编号大于等于5的为逻辑分区。

那么到此,我们的分区任务就已经完成了。

删除分区

最好不要直接删除已经挂载的分区,如果分区已经挂载,请先卸载再删除,以免出现难以预料的问题。

接着上面的内容,现在我们要删除分区/dev/sdb6。首先,执行命令fdisk /dev/sdb,然后输入d,然后输入6,最后输入w,删除操作完成。

接着,我们执行命令partprobe,然后查看硬盘/dev/sdb的分区情况,如下,分区删除成功

附录1:fdisk交互命令(部分)

命令

说明

a

设置可引导标记

d

删除一个分区

l

分区类型

n

新建分区

p

显示分区列表

q

不保存退出

t

改变一个分区的类型

w

保存退出

附录2:分区类型

Reference

[1] http://blog.51cto.com/13508525/2285413

Last updated

Was this helpful?