利用 parted 命令创建 GPT 分区(大容量)


一、MBR 和 GPT 区别

1.1 MBR
  • MBR分区表(即主引导记录)大家都很熟悉,是过去我们使用windows时常用的
  • 所支持的最大卷:2T,而且对分区有限制:最多4个主分区或3个主分区加一个扩展分区
1.2 GPT
  • GPT(即GUID分区表)。是源自EFI标准的一种较新的磁盘分区表结构的标准,是未来磁盘分区的主要形式。与MBR分区方式相比,具有如下优点。
  • 突破MBR 4个主分区限制,每个磁盘最多支持128个分区。支持大于2T的分区,最大卷可达18EB。

对于 GPT 的分区,建议使用 parted 工具进行分区,fdisk 在 GPT 这块不是很好。

二、parted 命令介绍

2.1 命令行模式
# 该模式可以直接在命令行下对磁盘进行分区操作,比较适合编程应用
parted [option] device [command]

# 示例
parted /dev/sdb print   # 显示 /dev/sdb 分区
2.2 交互模式
# 该模式可以直接在命令行下对磁盘进行分区操作,比较适合编程应用。
parted [option] device [command]

# 示例
parted /dev/sdb   # 进入交互模式
GNU Parted 3.2
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
2.3 常用选项
(parted) help                                                             
  align-check TYPE N                        check partition N for TYPE(min|opt) alignment
  help [COMMAND]                           print general help, or help on COMMAND
  mklabel,mktable LABEL-TYPE               create a new disklabel (partition table)
  mkpart PART-TYPE [FS-TYPE] START END     make a partition
  name NUMBER NAME                         name partition NUMBER as NAME
  print [devices|free|list,all|NUMBER]     display the partition table, available devices, free space, all found partitions, or a particular partition
  quit                                     exit program
  rescue START END                         rescue a lost partition near START and END
  resizepart NUMBER END                    resize partition NUMBER
  rm NUMBER                                delete partition NUMBER
  select DEVICE                            choose the device to edit
  disk_set FLAG STATE                      change the FLAG on selected device
  disk_toggle [FLAG]                       toggle the state of FLAG on selected device
  set NUMBER FLAG STATE                    change the FLAG on partition NUMBER
  toggle [NUMBER [FLAG]]                   toggle the state of FLAG on partition NUMBER
  unit UNIT                                set the default unit to UNIT
  version                                  display the version number and copyright information of GNU Parted
  • help 打印帮助信息
  • mklabel 创建分区表, 即是使用msdos(MBR)还是使用gpt,或者是其他方式分区表
  • mkpart 创建新分区
    格式:mkpart PART-TYPE START END
2.4 PART-TYPE类型主要有primary(主分区), extended(扩展分区), logical(逻辑区). 扩展分区和逻辑分区只对msdos
  • rm 删除一个分区
  • resizepart 调整指定的分区的大小
  • quit 退出该交互界面

三、示例

3.1 fdisk 对磁盘进行分区
# 首先对于容量较大的磁盘使用 fdisk 工具会得到如下提示

Welcome to fdisk (util-linux 2.27.1).
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.
The size of this disk is 5.5 TiB (6001175126016 bytes). DOS partition table format can not be used on drives for volumes larger than 2199023255040 bytes for 512-byte sectors. Use GUID partition table format (GPT).

Created a new DOS disklabel with disk identifier 0x30e8c209.

Command (m for help): 
3.2 更改分区表
(parted) mklabel gpt                                                      
(parted) print                                                            
Model: SEAGATE ST6000NM0034 (scsi)
Disk /dev/sda: 6001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags: 

Number  Start  End  Size  File system  Name  Flags
3.3 创建分区
(parted) mkpart primary 0% 100%                                           
(parted) p                                                                
Model: SEAGATE ST6000NM0034 (scsi)
Disk /dev/sda: 6001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name     Flags
 1      1049kB  6001GB  6001GB               primary
3.4 此时即可格式化文件系统了
mkfs.xfs /dev/sd

四、排错

4.1 分区没有对齐
(parted) mkpart primary 0 6TB                                            
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? 
  • 解决方式一
(parted) mkpart primary 0% 100%
(parted) p                                                                
Model: SEAGATE ST6000NM0034 (scsi)
Disk /dev/sda: 6001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name     Flags
 1      1049kB  6001GB  6001GB               primary
  • 解决方式二
(parted) mkpart primary 0TB -1                                          
(parted) p                                                                
Model: SEAGATE ST6000NM0034 (scsi)
Disk /dev/sdb: 6001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name     Flags
 1      1049kB  6001GB  6001GB               primary

你可能感兴趣的:(利用 parted 命令创建 GPT 分区(大容量))