fdisk分区命令

fdisk是Linux系统中最常用的分区工具,通过这个命令也可以查看系统中所有可用的分区,但是这个命令只支持MBR的分区表(这句话应该只对某些系统,CentOS7-1810适用,Debian9.5和openSUSE15应该已经支持GPT分区表,下面对fdisk的操作都是在Debian9.5下操作),所以这个命令不能对大于2T的硬盘进行分区,大于2T的硬盘我们需要用GPT分区表来进行分区,GPT分区我们就要用gdisk或parted分区工具来进行分区。

Linux 内核是如何理解硬盘的?
作为人类,我们可以很轻松地理解一些事情;但是电脑就不是这样了,它们需要合适的命名才能理解这些。

在 Linux 中,外围设备都位于 /dev 挂载点,内核通过以下的方式理解硬盘:

/dev/hdX[a-z]: IDE 硬盘被命名为 hdX
/dev/sdX[a-z]: SCSI 硬盘被命名为 sdX
/dev/xdX[a-z]: XT 硬盘被命名为 xdX
/dev/vdX[a-z]: 虚拟硬盘被命名为 vdX
/dev/fdN: 软盘被命名为 fdN
/dev/scdN or /dev/srN: CD-ROM 被命名为 /dev/scdN 或 /dev/srN

一、fdisk参数使用方法:

fdisk [-l] 设备名

参数
-l :显示指定磁盘设备的分区表信息,如果没有指定磁盘设备,则显示/proc/partitions 文件中的信息,也就是系统中所有的磁盘设备。

举例:
-----------------------------------------------------------
root@debian:~# fdisk -l #没有指定任何磁盘设备

Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors #第一块磁盘/dev/sda容量20G
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos #分区表的类型为MBR (dos表示MBR分区表,gpt表示GPT分区表)
Disk identifier: 0xefdc905c

Device Boot Start End Sectors Size Id Type #磁盘/dev/sda下的分区
/dev/sda1 * 2048 37748735 37746688 18G 83 Linux
/dev/sda2 37750782 41940991 4190210 2G 5 Extended
/dev/sda5 37750784 41940991 4190208 2G 82 Linux swap / Solaris

Disk /dev/sdb: 5 GiB, 5368709120 bytes, 10485760 sectors #第二块磁盘/dev/sdb容量5G
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

root@debian:~#
-----------------------------------------------------------
使用 "fdisk -l" 查看分区信息,不同的发行版可能显示的信息不同,通过上面的信息能够看到我们添加的两块硬盘(/dev/sda 和 /dev/sdb)的信息。我们解释一下这些信息,其上半部分是硬盘的整体状态,/dev/sda 硬盘的总大小是20GB等信息。

信息的下半部分是分区的信息,共 7 列,含义如下:

Device:分区的设备文件名。
Boot:是否为启动引导分区,在这里 /dev/sda1 为启动引导分区。
Start:起始柱面,代表分区从哪里开始。
End:终止柱面,代表分区到哪里结束。
Sectors:分区的大小,单位是扇区。
Size:分区的容量
id:分区内文件系统的 ID。
Type:分区的文件系统是什么。


二、fdisk交互模式磁盘分区

通过命令“fdisk 设备文件名” 就可以进入fdisk程序的交互模式,在交互模式中可以通过输入fdisk程序所提供的指令完成相应的操作,举例如下

-----------------------------------------------------------
root@debian:~# fdisk /dev/sdb

Welcome to fdisk (util-linux 2.29.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.
Created a new DOS disklabel with disk identifier 0xe3779e93.

Command (m for help): m                                                                   #输入m可以获得帮助信息

Help:

DOS (MBR)
a toggle a bootable flag                                                                        #设置可引导标记
b edit nested BSD disklabel                                                                #编辑 bsd 磁盘标签
c toggle the dos compatibility flag                                                  #设置 DOS 操作系统兼容标记

Generic
d delete a partition                                                                                 #删除一个分区
F list free unpartitioned space                                                           #列出空闲的未分区空间
l list known partition types                                                                 #显示已知的分区类型。82 为 Linux swap 分区,83 为 Linux 分区
n add a new partition                                                                            # 新建分区
p print the partition table                                                                    #显示当前磁盘的分区列表
t change a partition type                                                                      #改变分区类型
v verify the partition table                   #验证分区表
i print information about a partition            #打印有关分区的信息

Misc
m print this menu                     #显示帮助菜单
u change display/entry units                        #改变显示记录单位
x extra functionality (experts only)             #附加功能(仅专家)

Script
I load disk layout from sfdisk script file           #从sfdisk脚本文件加载磁盘布局
O dump disk layout to sfdisk script file           #将磁盘布局转储到sfdisk脚本文件

Save & Exit
w write table to disk and exit                 #保存退出
q quit without saving changes              #不保存退出

Create a new label
g create a new empty GPT partition table         #新建空白GPT分区表,这个应该就表明fdisk已经支持GPT,还需要进一步的认证。
G create a new empty SGI (IRIX) partition table         #新建空白IRIX分区表
o create a new empty DOS partition table         #新建空白DOS分区表
s create a new empty Sun partition table          #新建空白SUN磁盘标签


Command (m for help):
-----------------------------------------------------------

三、分区管理

1、新建主分区

root@debian:~# fdisk /dev/sdb            #要新建分区的磁盘/dev/sdb不要加数字加数字就变成了分区

Welcome to fdisk (util-linux 2.29.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.
Created a new DOS disklabel with disk identifier 0xd9b1702f.

Command (m for help): n              #输入n新建分区,默认直接创建MBR分区表
Partition type
p primary (0 primary, 0 extended, 4 free)       #主分区
e extended (container for logical partitions)       #扩展分区
Select (default p): p                  #输入p新建主分区
Partition number (1-4, default 1):           #输入分区号,直接回车就行,默认为1
First sector (2048-10485759, default 2048):      #输入起始扇区,直接回车就行,默认2048最前面开始
Last sector, +sectors or +size{K,M,G,T,P} (2048-10485759, default 10485759): +1G                 #这里输入新增分区的大小可以通过扇区数来增加,也可以通过+size{K,M,G,T,P}方式来增加,这里要增加1G的容量就表示为+1G       

Created a new partition 1 of type 'Linux' and of size 1 GiB.      #提示创建了1G的分区

Command (m for help): p                     #输入p查看创建的分区
Disk /dev/sdb: 5 GiB, 5368709120 bytes, 10485760 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
Disklabel type: dos                        #分区表类型为MBR
Disk identifier: 0xd9b1702f

Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 2099199 2097152 1G 83 Linux

2、剩余可用的空间

Command (m for help): F                     #输入F查看剩余可用的空间
Unpartitioned space /dev/sdb: 4 GiB, 4293918720 bytes, 8386560 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes

Start End Sectors Size
2099200 10485759 8386560 4G                   #可以看到可用空间为4G

3、创建扩展分区及逻辑分区

Command (m for help): n                     #输入n继续创建分区
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p): e                          #输入e创建扩展分区
Partition number (2-4, default 2):                  #输入扩展分区号,直接回车就可以
First sector (2099200-10485759, default 2099200):          #输入起始扇区数,直接回车就可以
Last sector, +sectors or +size{K,M,G,T,P} (2099200-10485759, default 10485759): +2G                                    #增加2G的容量

Created a new partition 2 of type 'Extended' and of size 2 GiB.       #创建扩展分区成功

Command (m for help): n                       #输入n继续创建分区
Partition type
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)                      #只有创建了扩展分区才会有这个选项
Select (default p): l                         #输入l创建逻辑分区

Adding logical partition 5                          #扩展分区号从5开始
First sector (2101248-6293503, default 2101248):
Last sector, +sectors or +size{K,M,G,T,P} (2101248-6293503, default 6293503): +1G

Created a new partition 5 of type 'Linux' and of size 1 GiB.

Command (m for help): p
Disk /dev/sdb: 5 GiB, 5368709120 bytes, 10485760 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
Disklabel type: dos
Disk identifier: 0xd9b1702f

Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 2099199 2097152 1G 83 Linux           #主分区
/dev/sdb2 2099200 6293503 4194304 2G 5 Extended            #扩展分区
/dev/sdb5 2101248 4198399 2097152 1G 83 Linux          #逻辑分区

4、删除分区

Command (m for help): d                    #删除分区
Partition number (1,2,5, default 5): 2               #删除扩增分区2,上面的逻辑分区也会一同删除

Partition 2 has been deleted.

Command (m for help): p
Disk /dev/sdb: 5 GiB, 5368709120 bytes, 10485760 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
Disklabel type: dos
Disk identifier: 0xd9b1702f

Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 2099199 2097152 1G 83 Linux

Command (m for help):

5、修改分区类型

Command (m for help): l                      #查看可用分区类型

fdisk分区命令
#其中82为Linux swap分区、83为Linux分区、8e为LinuxLVM分区、b为Windows FAT32分区、e为Windows FAT16分区。

Command (m for help): t                  #输入n更改分区类型
Partition number (1,2,5, default 5): 5        #更改分区5的类型

Partition type (type L to list all types): 8e            #输入更改分区类型为8e

Changed type of partition 'Linux' to 'Linux LVM'.          #提示更改成功

Command (m for help): p
Disk /dev/sdb: 5 GiB, 5368709120 bytes, 10485760 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
Disklabel type: dos
Disk identifier: 0xd9b1702f

Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 2099199 2097152 1G 83 Linux
/dev/sdb2 2099200 6293503 4194304 2G 5 Extended
/dev/sdb5 2101248 4198399 2097152 1G 8e Linux LVM         #更改后的分区类型

Command (m for help):

6、保存修改的结果

Command (m for help): w                        #输入w保存配置,如果不想保存可以输入q退出
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.


使用w指令保存后,则在fdisk中所做的所有操作都会生效,且不可回退。如果分区表正忙,则需要重启机器后才能使新的分区表生效。

四、新建GPT分区


不是所有的发行版带的fdisk都支持GPT分区这里请注意

Command (m for help): p
Disk /dev/sdb: 5 GiB, 5368709120 bytes, 10485760 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
Disklabel type: dos                  #现在的分区类型为MBR
Disk identifier: 0xd9b1702f

Command (m for help): g            #输入g创建GPT分区
Created a new GPT disklabel (GUID: 8C0F4613-2830-40E1-8D23-596D1B7F5DDB).

Command (m for help): n            #新建分区
Partition number (1-128, default 1):       #可以看到这里没有扩展分区的概念了
First sector (2048-10485726, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-10485726, default 10485726): +1G

Created a new partition 1 of type 'Linux filesystem' and of size 1 GiB.

Command (m for help): p
Disk /dev/sdb: 5 GiB, 5368709120 bytes, 10485760 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
Disklabel type: gpt
Disk identifier: 8C0F4613-2830-40E1-8D23-596D1B7F5DDB

Device Start End Sectors Size Type
/dev/sdb1 2048 2099199 2097152 1G Linux filesystem       #成功创建了一个主分区

Command (m for help):

 

 

 

上一篇:二进制密码锁


下一篇:linux – 分区表消耗32K数据?