fdisk分区命令

Posted pipci

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 允许我们在每块硬盘上创建最多四个主分区。它们中的其中一个可以作为扩展分区,并下设多个逻辑分区。1-4 扇区作为主分区被保留,逻辑分区从扇区 5 开始。

一、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   377466881     8G        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 操作系统兼容标记

G  eneric
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 +sizeK,M,G,T,P (2048-10485759, default 10485759):  +1G                 #这里输入新增分区的大小可以通过扇区数来增加,也可以通过+sizeK,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 +sizeK,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 +sizeK,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                      #查看可用分区类型

技术图片
#其中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,这里输入l也可以查看分区的类型

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分区这里请注意

1、新建分区

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 +sizeK,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                                               #GPT下输入p显示的分区信息和MBR下略有不同,没有分区类型id的选项
/dev/sdb1   2048       2099199     2097152         1G        Linux filesystem       #成功创建了一个主分区

Command (m for help):

 

2、 修改分区的类型

Command (m for help): l                                #查看分区的类型,GPT下同样的分区类型对应的编号不同了,这里要注意

技术图片

 上面只是显示了部分按空格显示更多的信息

 

Command (m for help):  t                                          #输入t更改分区类型,这里输入l也可以查看分区的类型
Partition number (1,2, default 2):  2                      #输入要更改的分区
Hex code (type L to list all codes):  31                  #输入分区类型的编号 

 

Changed type of partition ‘Linux filesystem‘ 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: gpt
Disk identifier: 836D334F-D0EE-4AD3-8581-EC9ABFF31F50

 

Device    Start    End       Sectors   Size   Type
/dev/sdb1      2048         2099199    2097152        1G          Linux filesystem
/dev/sdb2    2099200    4196351     2097152      1G          Linux LVM                                #分区类型为已经更改

 

Command (m for help):

 

 

以上是关于fdisk分区命令的主要内容,如果未能解决你的问题,请参考以下文章

fdisk分区命令

Linux硬盘分区 fdisk 和 parted命令详解

fdisk命令

fdisk命令 实战案例

linux下使用fdisk命令进行磁盘分区

fdisk命令磁盘分区