您的位置:首页 > 运维架构 > Linux

GUID partition table, GPT 磁盘分区表(在Linux中添加一块大于 2TB 的新磁盘)

2017-05-14 19:57 281 查看
因为过去一个扇区大小就是 512bytes 而已,不过目前已经有 4K 的扇区设计出现!为了兼容于所有的磁盘,因此在扇区的定义上面, 大多会使用所谓的逻辑区块地址(Logical Block Address, LBA)来处理。GPT 将磁盘所有区块以此 LBA(预设为 512bytes 喔!) 来规划,而第一个 LBA 称为 LBA0 (从 0 开始编号)。

与 MBR 仅使用第一个 512bytes 区块来纪录不同, GPT 使用了 34 个 LBA 区块来纪录分割信息!同时与过去 MBR 仅有一的区块,被干掉就死光光的情况不同, GPT 除了前面 34 个 LBA 之外,整个磁盘的最后 33 个 LBA 也拿来作为另一个备份!这样或许会比较安全些吧!详细的结构有点像底下的模样:



上述图示的解释说明如下:

LBA0 (MBR 相容区块)

与 MBR 模式相似的,这个兼容区块也分为两个部份,一个就是跟之前 446 bytes 相似的区块,储存了第一阶段的开机管理程序! 而在原本的分割表的纪录区内,这个兼容模式仅放入一个特殊标志的分割,用来表示此磁盘为 GPT 格式之意。而不懂 GPT 分割表的磁盘管理程序, 就不会认识这颗磁盘,除非用户有特别要求要处理这颗磁盘,否则该管理软件不能修改此分割信息,进一步保护了此磁盘喔!

LBA1 (GPT 表头纪录)

这个部份纪录了分割表本身的位置与大小,同时纪录了备份用的 GPT 分割 (就是前面谈到的在最后 34 个 LBA 区块) 放置的位置, 同时放置了分割表的检验机制码 (CRC32),操作系统可以根据这个检验码来判断
GPT 是否正确。若有错误,还可以透过这个纪录区来取得备份的 GPT(磁盘最后的那个备份区块) 来恢复 GPT 的正常运作!

LBA2-33 (实际纪录分割信息处)

从 LBA2 区块开始,每个 LBA 都可以纪录 4 笔分割纪录,所以在默认的情况下,总共可以有 4*32 = 128 笔分割纪录喔!因为每个 LBA 有 512bytes,因此每笔纪录用到 128 bytes 的空间,除了每笔纪录所需要的标识符与相关的纪录之外,GPT 在每笔纪录中分别提供了 64bits 来记载开始/结束的扇区号码,因此,GPT 分割表对于单一分割槽来说,
他的最大容量限制就会在『 264 * 512bytes = 263 * 1Kbytes = 233*TB = 8 ZB 』,要注意 1ZB = 230TB 啦! 你说有没有够大了?

现在 GPT 分割预设可以提供多达 128 笔纪录,而在 Linux 本身的核心装置纪录中,针对单一磁盘来说,虽然过去最多只能到达
15 个分割槽,不过由于 Linux kernel 透过 udev 等方式的处理,现在 Linux 也已经没有这个限制在了! 此外,GPT 分割已经没有所谓的主、延伸、逻辑分割的概念,既然每笔纪录都可以独立存在, 当然每个都可以视为是主分割!每一个分割都可以拿来格式化使用喔!

以上转载来至《鸟哥的Linux私房菜——基础班》

以下是对于GPT的实际应用经验。

你有没有试过使用 fdisk 对大于
2TB 的硬盘进行分区,并且纳闷为什么会得到需要使用 GPT 的警告? 是的,你看到的没错。我们无法使用 fdisk 对大于 2TB 的硬盘进行分区。

在这种情况下,我们可以使用 
parted
 命令。它的主要区别在于 fdisk 使用 DOS 分区表格式而 parted 使用 GPT 格式。

提示:你可以使用 
gdisk
 来代替 
parted


在本文中,我们将介绍如何将大于 2TB 的新磁盘添加到现有的 Linux 服务器中(如 RHEL/CentOS 或 Debian/Ubuntu)中。

我使用的是 
fdisk
 和 
parted
 来进行此配置。

首先使用 
fdisk
 命令列出当前的分区详细信息,如图所示。

首先使用 
fdisk
 命令列出当前的分区详细信息,如图所示。
# fdisk -l




列出 Linux 分区表

为了本文的目的,我加了一块 20GB 的磁盘,这也可以是大于 2TB 的磁盘。在你加完磁盘后,使用相同的
fdisk
 命令验证分区表。
# fdisk -l




列出新的分区表

提示:如果你添加了一块物理磁盘,你可能会发现分区已经创建了。此种情况下,你可以在使用 
parted
 之前使用 
fdisk
 删除它。
# fdisk /dev/xvdd


在命令中使用 
d
 开关删除分区,使用 
w
 保存更改并退出。



删除 Linux 分区

重要:在删除分区时你需要小心点。这会擦除磁盘上的数据。

现在是使用 
parted
 命令分区新的磁盘了。
# parted /dev/xvdd


将分区表格式化成 GPT
(parted) mklabel gpt


创建主分区并分配磁盘容量,这里我使用 20GB (在你这里可能是 2TB)。
(parted) mkpart primary 0GB 20GB




使用 parted 创建分区

出于好奇,让我们用 
fdisk
 看看新的分区。
# fdisk /dev/xvdd




验证分区细节

现在格式化并挂载分区,并在 
/etc/fstab
 添加相同的信息,它控制在系统启动时挂载文件系统。
# mkfs.ext4 /dev/xvdd1




格式化 Linux 分区

一旦分区格式化之后,是时候在 
/data1
 下挂载分区了。
# mount /dev/xvdd1 /data1


要永久挂载,在 
/etc/fstab
 添加条目。
/dev/xvdd1     /data1      ext4      defaults  0   0


重要:要使用 GPT 分区格式需要内核支持。默认上 RHEL/CentOS 的内核已经支持 GPT,但是对于 Debian/Ubuntu,你需要在修改配置之后重新编译内核。
转载地址:LCTT https://linux.cn/article-8398-1.html

个人学习用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux 磁盘