关于MBR和GPT这两种分区表,wiki上讲的很清楚。不过有些同学可能看不了,你需要先了解科学上网。这里我就只把它们的结构图贴上,简要说明了。
https://zh.wikipedia.org/wiki/%E4%B8%BB%E5%BC%95%E5%AF%BC%E8%AE%B0%E5%BD%95
https://zh.wikipedia.org/wiki/GUID%E7%A3%81%E7%A2%9F%E5%88%86%E5%89%B2%E8%A1%A8
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?
参照这两篇文章
CentOS parted分割大于2TB硬盘的performance问题处理 | 月飞博客
How to align partitions for best performance using parted
parted的交互模式
[root@localhost /]# parted /dev/sdb GNU Parted 3.1 Using /dev/sdb Welcome 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 disk will 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.5GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk 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.5GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk 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.5GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk 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.5GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk 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/bash parted -s /dev/sdb mklabel gpt parted -s /dev/sdb mkpart boot 2048s 200MiB parted -s /dev/sdb mkpart swap 200MiB 2248MiB parted -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.5GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk 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