本文将深入解析Linux系统中的fdisk命令。fdisk是一个强大的磁盘分区管理工具。
本文将从基础开始,介绍fdisk的基本使用方法,包括查看磁盘信息、创建分区、修改分区类型等。随后,本文探讨了fdisk命令的用法,如磁盘标签、逻辑分区的创建、删除分区等操作。介绍如何有效地使用fdisk在磁盘上进行灵活的分区管理。最后,通过实验巩固对fdisk命令的使用,对磁盘进行灵活的分区管理。
磁盘和分区的基本概念
Linux系统中一切皆文件。内核中用户设备管理的守护进程为udev,它负责处理设备的插拔事件、设备的创建与删除以及设备的命名等任务。在udev中,设备等命名规则由一系列规则文件定义,这些规则文件通常存储在/etc/udev/rules.d/目录下。在RHEL/CentOS 7中,设备管理的守护进程为systemd-udevd。一些常见设备的命名规则如下表:
例如,/dev/sdb3设备名称中的字符含义如下:
一个MBR分区的磁盘示例如下:
早期的Linux发行版在磁盘分区时采用的是柱面表示法,现在通常会采用扇区的表示方法,通常会更直观一些。fdisk默认使用扇区的表示方法。
一个硬盘设备可以简单的理解为由大量的扇区组成的,也就是硬盘的最小存储单元为扇区。在上图示例中,扇区的大小为512字节,现在也有4k大小扇区的硬盘。在所有扇区中,第一个扇区是最重要的,里面保存了主引导记录和分区表。黄色部分的主引导记录占446个字节,绿色部分的分区表占64个字节,最后表示黄色部分和绿色部分的结束符,加在一起正好是512字节。
做分区时需要关注绿色部分的分区表,它又分为四个部分,每个部分记录分区从什么扇区开始,到什么扇区结束。例如,第一个分区sdb1从2048扇区开始,到20973567扇区结束。
对MBR分区的磁盘来说,最多能够划分4个分区。如果想要更多的分区,需要使用拓展分区,如下图:
图中首先分了三个区:sdb1、sdb2、sdb3,第四个分区(淡蓝色部分)有所有剩余的磁盘空间。在分区表第四个分区中,除了指示起始扇区,还指定了其分区类型。分区表的第四个分区类似于指针,指向了拓展分区表,在拓展分区表中保存了继续细分的逻辑分区的起止扇区。
MBR分区的磁盘中第一个扇区是最重要的。它可以有四个分区,或者三个分区和一个拓展分区。这就是MBR分区结构的天花板。如果想要更多的基本分区需要使用gpt分区。
fdisk命令
fdisk是一个古老的分区管理命令。在disk的常用选项里,最常用的是-l,列出分区表。
fdisk /dev/sdb将进入磁盘分区管理界面:
在上图显示了一些信息。第一行显示了fdisk是util-linux中的一些命令。第二行表示当前的更改在内存中,直到你写入。fdisk对分区的编辑并不是直接生效的,它先写到内存中,是临时的。当确保分区编辑无误时,通过w命令进行提交,或者通过q命令放弃编辑。第三行说明当前磁盘不存在分区表,fdisk第一次见到这个磁盘时会为其增加标签和磁盘唯一标识。
通过m可以查看fdisk的子命令。
常用的子命令有:
a:切换可引导标志。即标明分区是否可以作为引导分区。
d:删除分区。
l:列出已知分区。
n:添加一个新分区。
p:打印分区表。
q:放弃编辑,退出修改。
t:更改分区系统的id。
w:将分区表写入磁盘并退出。
此外,可以看到fdisk支持创建新的空的GPT分区(g)。不建议在fdisk中管理gpt分区的磁盘。
接着,我们在/dev/sdb上创建一个新的分区:
输入n,创建一个新的分区。fdisk询问创建基本分区(primary)或拓展分区(extended),选择p,创建一个基本分区。fdisk询问创建分区编号(partition number),默认为1,我们选择默认值。建议按序创建。随后fdisk询问新分区的开始位置(first sector),开始位置以扇区为单元,默认值为2048,同样选择默认值。为什么0-2048的扇区不能用呢?主要是考虑到保存主引导记录和分区表等数据以及物理扇区和逻辑扇区的对齐。随后fdisk询问分区的结束位置(last sector)。有两种指定方法:指定最后一个扇区的位置或使用+size指定一个相对开始的扇区位置。我们采用第二种方式,+10G,即相对第一个扇区的10G后的扇区。fdisk提示第一个分区的类型和大小。
输入p,打印分区表的信息。目前我们创建的分区表信息只在内存中保存。在我们写到磁盘之前需要反复仔细确认。p命令的第一行展示了/dev/sdb的大小,第三行展示了扇区的大小。在分区表位置,device表示分区名,boot表示分区是否为可引导分区,用"*"号标识,start和end分别是起止扇区位置,大小为10G。id为分区类型,83为linux普通分区。如果为82为swap分区,如果为8e则为linux lvm分区。
检查无误后,输入w,将本次编辑的分区表写入到磁盘中。
以上是fdisk命令的基本使用方式。
实验:三个基本分区+1个拓展分区(2个逻辑分区)
接下来我们通过一个实验进一步熟悉对fdisk命令的使用。
物理磁盘/dev/sdb为40G,将其分为3个基本分区和一个拓展分区。从拓展分区中划分两个逻辑分区。容量分配如下:
/dev/sdb1:10G
/dev/sdb2:10G
/dev/sdb3:10G
/dev/sdb4:剩余空间
/dev/sdb5:5G
/dev/sdb6:剩余空间
其中,/dev/sdb1位可引导的linux分区,/dev/sdb2为swap分区,/dev/sdb3为lvm分区。
第一步,分别创建对应大小的分区
第二步:修改/dev/sdb1为可引导分区
第三步:修改/dev/sdb2为swap分区
第四步:修改/dev/sdb3为lvm分区
第五步:创建大小为5G的/dev/sd5逻辑分区
第六步:创建所有剩余空间的/dev/sdb6逻辑分区
第七步:检查编辑的分区表信息
第八步:保存分区表信息到磁盘
fdisk -l查看分区信息: