使用parted命令对磁盘进行分区

计算操作系统技术服务知识库
什么是PARTED?

用于在Linux中创建、删除和以其他方式操作磁盘分区的常用工具是parted命令。本文将介绍使用parted命令处理Linux分区的方法。 parted 命令对于大型磁盘设备和许多磁盘分区特别适合。

parted与fdisk和cfdisk命令之间的区别
  • GPT 格式:parted命令可创建可用于全局创建唯一标识符分区表 (GPT),而fdiskcfdisk仅限于 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命令对存储设备进行分区:

  1. 列出分区:使用 parted -l 来标识你要分区的存储设备。通常第一个硬盘 /dev/sda 或 /dev/vda 将包含操作系统。
 parted -l
  1. 打开存储设备,使用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)
  1. 设置分区表:设置分区表类型为 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 不会生成分区,而是生成分区表。

  1. 查看分区表:显示相关存储设备的信息。
(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)    
  1. 创建分区:要创建一个新分区(分区磁盘起始点为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 是名称,而不是分区类型。

  1. 使用单元选择器添加分区:要添加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)                                                                  
  1. 保存并退出:退出时,所做的更改将自动保存,输入quit,如下所示。

(parted) quit
Information: You may need to update /etc/fstab.

调整分区大小

调整分区大小可以在保留现有数据的同时扩展分区上的可用空间。由于分区大小调整可能会导致数据丢失,因此必须遵循以下规则: 1. 分区不应该被挂载或者被使用 2. 分区只能是从最后开始增长 3. 分区必须先调整大小,然后再调整文件系统

  1. 增长分区:键入以下内容以列出分区信息,然后将第一个分区的大小从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.
  1. 增长文件系统:要调整文件系统的大小以使用扩展分区上的空间,请在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命令删除分区。

  1. 使用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)  
  1. 删除分区:要从分区表中删除第四个分区,输入以下内容。
(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)                                  
  1. 输入quit保存退出。
(parted) quit                                                             
Information: You may need to update /etc/fstab.

如果您有其他问题,欢迎您联系火山引擎技术支持服务

0
0
0
0
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论