什么是PARTED?
用于在Linux中创建、删除和以其他方式操作磁盘分区的常用工具是parted
命令。本文将介绍使用parted命令处理Linux分区的方法。
parted 命令对于大型磁盘设备和许多磁盘分区特别适合。
parted与fdisk和cfdisk命令之间的区别
- GPT 格式:
parted
命令可创建可用于全局创建唯一标识符分区表 (GPT),而fdisk
和cfdisk
仅限于 msdos 分区表。 - 更大的磁盘:一个 msdos 分区表最多只能格式化 2TB 的磁盘空间尽管在某些情况下最高可达 16TB)。然而,一个 GPT 分区表,有可能处理高达 8 zebibytes 的空间。
- 更多分区:使用主分区和扩展分区,msdos 分区表允许只有16个分区。使用 GPT,默认情况下您最多可以获得 128 个分区,并且可以选择拥有更多。
- 可靠性:msdos 分区中只存储一份分区表副本。 GPT保留分区表的两个副本(在磁盘的开头和结尾)。GPT 还使用 CRC 校验来检查分区表的完整性。
随着磁盘越来越大,在使用它们时需要更大的灵活性,目前建议使用 parted 进行磁盘分区。 具体 GPT 与 MBR 的区别请参考文档:https://www.volcengine.com/docs/6584/104989
如何制作分区表
大多数磁盘分区表是作为操作系统安装过程的一部分创建的。在添加额外的存储设备时,直接使用 parted 命令最有用。
通过相关演示,来具体介绍如何使用parted
命令对存储设备进行分区:
- 列出分区:使用
parted -l
来标识你要分区的存储设备。通常第一个硬盘 /dev/sda 或 /dev/vda 将包含操作系统。
parted -l
- 打开存储设备,使用
parted
命令来选中需要分区的磁盘,在本文示例中选中的是实例中的第二块盘 /dev/vdb。
# parted /dev/vdb
GNU Parted 3.2
Using/dev/vdb
Welcome to GNU Parted! Type 'help' to view a list ofcommands
(parted)
- 设置分区表:设置分区表类型为 gpt(然后输入 Yes 接受)。
(parted) mklabel gpt
Warning: The existing disk label on /dev/vdb will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? yes
(parted)
mklabel 和 mktable parted 命令用于相同的目的。支持的分区表包括:aix、amiga、bsd、dvh、gpt、mac、msdos、pc98、sun、loop。 mklabel 不会生成分区,而是生成分区表。
- 查看分区表:显示相关存储设备的信息。
(parted) print
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 8796GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
(parted)
- 创建分区:要创建一个新分区(分区磁盘起始点为0-2000GB),请键入以下内容。
(parted) mkpart primary 0 2000GB
Warning: The resulting partition is not properly aligned for best performance: 34s % 2048s != 0s
Ignore/Cancel? I
(parted) print
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 8796GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 17.4kB 2000GB 2000GB primary
(parted)
主、逻辑和扩展是 msdos 分区表的分区类型。在 gpt 分区表的情况下,分区类型的用作是分区的名称。必须在 gpt 下提供分区名称。所以在上面的例子中,primary 是名称,而不是分区类型。
- 使用单元选择器添加分区:要添加ext4类型的分区并设置扇区大小,请键入以下命令。
(parted) mkpart primary ext4 2000GB 100%
(parted) print
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 8796093022kB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 17.4kB 2000000001kB 1999999983kB primary
2 2000000385kB 8796091974kB 6796091589kB ext4 primary
(parted)
- 保存并退出:退出时,所做的更改将自动保存,输入quit,如下所示。
(parted) quit
Information: You may need to update /etc/fstab.
调整分区大小
调整分区大小可以在保留现有数据的同时扩展分区上的可用空间。由于分区大小调整可能会导致数据丢失,因此必须遵循以下规则: 1. 分区不应该被挂载或者被使用 2. 分区只能是从最后开始增长 3. 分区必须先调整大小,然后再调整文件系统
- 增长分区:键入以下内容以列出分区信息,然后将第一个分区的大小从2000GB增长到3000GB,然后退出 parted。
# parted /dev/vdb
GNU Parted 3.2
Using /dev/vdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 8796GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 17.4kB 2000GB 2000GB ext4 primary
(parted) resizepart 1 3000GB
(parted) print
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 8796GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 17.4kB 3000GB 3000GB ext4 primary
(parted) quit
Information: You may need to update /etc/fstab.
- 增长文件系统:要调整文件系统的大小以使用扩展分区上的空间,请在shell中键入以下命令。
# resize2fs /dev/vdb1
resize2fs 1.45.6 (20-Mar-2020)
Resizing the filesystem on /dev/vdb1 to 732421870 (4k) blocks.
The filesystem on /dev/vdb1 is now 732421870 (4k) blocks long.
移除一个分区
可以使用parted
中的rm
命令删除分区。
- 使用
parted
命令打开磁盘,并列出分区列表信息。
# parted /dev/vdb
GNU Parted 3.2
Using /dev/vdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 8796GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 17.4kB 3000GB 3000GB ext4 primary
2 3000GB 4000GB 1000GB primary
3 4000GB 5000GB 1000GB primary
4 5000GB 8796GB 3796GB primary
(parted)
- 删除分区:要从分区表中删除第四个分区,输入以下内容。
(parted) rm 4
(parted) print
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 8796GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 17.4kB 3000GB 3000GB ext4 primary
2 3000GB 4000GB 1000GB primary
3 4000GB 5000GB 1000GB primary
(parted)
- 输入
quit
保存退出。
(parted) quit
Information: You may need to update /etc/fstab.
如果您有其他问题,欢迎您联系火山引擎技术支持服务