这篇内容没什么比较新的内容,都是一些旧知识的总结。最近抽空看了下RHEL8版本的相关官方考试教材内容。看了RH134部分磁盘管理部分较之前的版本变化挺多的,先从这篇基础的磁盘管理开始吧。从红帽的历史发行版上来看,这部分先后介绍过使用fdisk、gdisk分区工具,在RHEL8版本上又更新成了parted工具,该工具其实很早之前就有了,只不知名度较前二者稍差一些。

一、磁盘分区基础知识

MBR分区,由来已久的分区格式,最多有四个主分区,使用扩展分区和逻辑分区最多可以划分15个分区,单个分区最大2TB。

GPT是UEFI标准的一部分,GPT最多提供128个分区,GPT 使用全局唯一标识符(GUID)来识别每个磁盘和分区。与MBR存在单一故障 点不同,GPT 提供分区表信息的冗余。主GPT位于磁盘头部,而备份副本(次要GPT)位于磁盘尾部。GPT 使用校验和来检测GPT头和分区表中的错误与损坏。

gpt-disk
gpt-disk

1、查看分区信息

 1[root@361way ~]# parted /dev/vda print
 2Model: Virtio Block Device (virtblk)
 3Disk /dev/vda: 42.9GB
 4Sector size (logical/physical): 512B/512B
 5Partition Table: msdos
 6Disk Flags:
 7Number  Start   End     Size    Type     File system  Flags
 8 1      1049kB  42.9GB  42.9GB  primary  ext4         boot
 9[root@361way ~]# parted /dev/vda unit s print   //s表示扇区
10Model: Virtio Block Device (virtblk)
11Disk /dev/vda: 83886080s
12Sector size (logical/physical): 512B/512B
13Partition Table: msdos
14Disk Flags:
15Number  Start  End        Size       Type     File system  Flags
16 1      2048s  83884031s  83881984s  primary  ext4         boot
17[root@361way ~]# parted /dev/vda unit b print  //b表示字节
18Model: Virtio Block Device (virtblk)
19Disk /dev/vda: 42949672960B
20Sector size (logical/physical): 512B/512B
21Partition Table: msdos
22Disk Flags:
23Number  Start     End           Size          Type     File system  Flags
24 1      1048576B  42948624383B  42947575808B  primary  ext4         boot

2、写入磁盘标签

1以root用户身份,使用以下命令将MBR磁盘标签写入磁盘。
2[root@host ~]# parted /dev/vdb mklabel msdos
3要写入GPT磁盘标签,请使用以下命令。
4[root@host ~]# parted /dev/vdb mklabel gpt

mklabel子命令可擦除现有的分区表。仅当想重复使用磁盘而不考虑现有数据时,才应使用mklabel。在一块空白盘上不进行该操作,进行parted分区时会报 Error: /dev/vdc: unrecognised disk label 错误。

二、parted分区

parted提供了交互式分区操作和直接命令式分区操作。交互式通过parted /dev/vda 回车后,可以分别输入不同的指令,交互通过mkpart,确认分区格式类型。如果直接是命令行式操作的话,需要遵循如下命令格式:

parted-mkpart
parted-mkpart

1[root@host -]# parted /dev/vdb help mkpart
2mkpart PART-TYPE [FS-TYPE] START END  make a partition

一条指令完分区的操作如下:

1[ root@host ~ ]# parted /dev/vdb mkpart primary xfs 2048s 1000MB

运行udevadm settle 命令。此命令会等待系统检测新分区并在/dev目录下创建关联的设备文件。只有在完成上述操作后,它才会返回。

上面的操作中,因为一定要写后面end的大小,这点有点感觉不感友好,不能自动补全所有可用的大小。还需要事先使用print查看一次。

三、删除分区

可以使用rm指令进行分区删除操作:

 1[root@servera ~]# parted /dev/vdc
 2GNU Parted 3.2
 3Using /dev/vdc
 4Welcome to GNU Parted! Type 'help' to view a list of commands.
 5(parted) print
 6Model: Virtio Block Device (virtblk)
 7Disk /dev/vdc: 5369MB
 8Sector size (logical/physical): 512B/512B
 9Partition Table: gpt
10Disk Flags:
11Number  Start   End     Size    File system  Name    Flags
12 1      1049kB  5369MB  5368MB               mydata
13(parted) rm 1
14(parted) quit
15Information: You may need to update /etc/fstab.
16[root@servera ~]# udevadm settle

上面的操作和以下操作等价:

1[root@servera ~]# parted /dev/vdc rm 1

四、分区挂载

分区挂载这一块儿和之前没什么大的区别,具体如下:

1[root@servera ~]# mkfs.xfs /dev/vdc1
2[root@servera ~]# mount /dev/vdc1 /opt/
3[root@servera ~]# lsblk --fs /dev/vdc
4NAME   FSTYPE LABEL UUID                                 MOUNTPOINT
5vdc
6└─vdc1 xfs          115a8453-b1c1-4a24-ac67-56886dd2f149 /opt
7[root@servera ~]# grep opt /etc/fstab
8UUID="115a8453-b1c1-4a24-ac67-56886dd2f149"       /opt                      xfs     defaults        0 0
9[root@servera ~]# systemctl daemon-reload

第三个字段包含文件系统类型,如xfs或ext4。 第四个字段是以逗号分隔的、应用于设备的选项列表。defaults 是一组常用选项。 mount(8) man page中还记录了其他可用的选项。dump命令使用第五个字段来备份设备。其他备份应用通常不使用此字段。

最后一个字段(fsck 顺序字段)决定了在系统启动时是否应运行fsck命令,以验证文件系统是否干净。该字段中的值指示了fsck的运行顺序。对于XFS文件系统,请将该字段设为日,因为XFS并不使用fsck来检查自己的文件系统状态。对于ext4 文件系统,如果是根文件系统,请将该字段设为1;如果是其他ext4文件系统,则将该字段设为2。这样,fsck 就会先处理根文件系统,然后同步检查不同磁盘上的文件系统,并按顺序检查同一磁盘上的文件系统。

交换分区划分的指令如下:

1[root@serverb ~]# parted /dev/vdb mkpart swap1 linux- swap 2000MB 2512M