关于MBR和GPT这两种分区表,wiki上讲的很清楚。不过有些同学可能看不了,你需要先了解科学上网。这里我就只把它们的结构图贴上,简要说明了。

  • MBR

MBR使用磁盘的最开始的512Byte,结构图如下。可以看到只有中间的64Byte是用来描述分区表的,每16Byte描述一个分区,所以最多只能同时划分4个主分区。

而描述硬盘分区结构信息的这16Byte是如下这样的结构。可以发现只有最后4Byte是用来描述分区总的扇区数的,4Byte是32位,也就是分区最大只能是2^32*512Byte,大概是2.2TB。

# 备份MBR分区表[root@localhost ~]# dd if=/dev/sda of=/backup/mbr.bak bs=512 count=1
  • GPT

GPT的结构是下面这样的,一个逻辑块(LBA)大小是512Byte。出于兼容性考虑,LBA 0(即硬盘的第一个扇区)仍然用作MBR,之后LBA 1是分区表头。LBA 2-33都用来描述分区表项,每个LBA可描述4个分区,即每个分区使用128Byte来描述。

另外,GPT分区将在磁盘最后的33个扇区作为主分区表的备份,称为备份分区表。

而每个分区表项是如下这样的结构,可以看到它使用8Byte描述分区起始位置和结束位置,那么就是

(2^64-1)*512Byte=9.4ZB(9.4×10^21字节)。

# 备份GPT分区表[root@localhost ~]# dd if=/dev/sda of=/backup/gpt.bak bs=512 count=34

  • parted

在执行parted命令过程中,我得到了这样一个警告信息,说是分区在划分时没有对齐,可能会影响性能。

(parted) mkpart boot 0 200M                                               Warning: The resulting partition is not properly aligned for best performance.Ignore/Cancel?

参照这两篇文章

parted的交互模式

[root@localhost /]# parted /dev/sdb                                       GNU Parted 3.1Using /dev/sdbWelcome to GNU Parted! Type 'help' to view a list of commands.(parted) mklabel gpt                                                      Warning: The existing disk label on /dev/sdb will be destroyed and all data on this diskwill be lost. Do you want to continue?Yes/No? y                                                                 (parted) mkpart boot 2048s 200M                                           (parted) mkpart swap 200M 2248M                                                (parted) mkpart data 2248M 100%                                           (parted) print                                                            Model: VMware, VMware Virtual S (scsi)Disk /dev/sdb: 21.5GBSector size (logical/physical): 512B/512BPartition Table: gptDisk Flags: Number  Start   End     Size    File system  Name  Flags 1      1049kB  200MB   199MB   ext4         boot 2      200MB   2248MB  2048MB               swap 3      2248MB  21.5GB  19.2GB               data(parted) rm 3                                                             (parted) print                                                            Model: VMware, VMware Virtual S (scsi)Disk /dev/sdb: 21.5GBSector size (logical/physical): 512B/512BPartition Table: gptDisk Flags: Number  Start   End     Size    File system  Name  Flags 1      1049kB  200MB   199MB   ext4         boot 2      200MB   2248MB  2048MB               swap(parted) mkpart data 2248M -1                                             (parted) print                                                            Model: VMware, VMware Virtual S (scsi)Disk /dev/sdb: 21.5GBSector size (logical/physical): 512B/512BPartition Table: gptDisk Flags: Number  Start   End     Size    File system  Name  Flags 1      1049kB  200MB   199MB   ext4         boot 2      200MB   2248MB  2048MB               swap 3      2248MB  21.5GB  19.2GB               data(parted) name 3 backup                                                                   (parted) print                                                            Model: VMware, VMware Virtual S (scsi)Disk /dev/sdb: 21.5GBSector size (logical/physical): 512B/512BPartition Table: gptDisk Flags: Number  Start   End     Size    File system  Name    Flags 1      1049kB  200MB   199MB   ext4         boot 2      200MB   2248MB  2048MB               swap 3      2248MB  21.5GB  19.2GB               backup(parted)                                                                  (parted) quit                                                             Information: You may need to update /etc/fstab.

危险操作:清除GPT分区表

[root@localhost ~]# dd if=/dev/zero of=/dev/sdb bs=512 count=34

parted的非交互模式

[root@localhost ~]# cat parted-script.sh #!/usr/bin/bashparted -s /dev/sdb mklabel gptparted -s /dev/sdb mkpart boot 2048s 200MiBparted -s /dev/sdb mkpart swap 200MiB 2248MiBparted -s /dev/sdb mkpart backup 2248Mib 100%parted -s /dev/sdb print[root@localhost homework]# bash parted-script.sh Model: VMware, VMware Virtual S (scsi)Disk /dev/sdb: 21.5GBSector size (logical/physical): 512B/512BPartition Table: gptDisk Flags: Number  Start   End     Size    File system  Name    Flags 1      1049kB  210MB   209MB   ext4         boot 2      210MB   2357MB  2147MB               swap 3      2357MB  21.5GB  19.1GB               backup