首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

通过 GPT 和 Linux 充分利用大型驱动器(2)

通过 GPT 和 Linux 充分利用大型驱动器(2)

引导装载程序支持GPT 的引导装载程序是多样的,取决于计算机上的固件类型。在 BIOS 下,只有 Grand Unified Bootloader (GRUB) 2 正式支持 GPT。目前大多数 Linux 发行版使用 GRUB 2 作为默认引导装载程序,但有些版本继续使用较旧的 GRUB Legacy。GRUB Legacy 并没有正式支持 GPT,但包含 GPT 支持的补丁版本现已上市。更古老的 Linux Loader (LILO) 没有明确支持 GPT,但其磁盘寻址方法以扇区位置为基础,所以它往往是可用的(在实践中)。
如果您在一台基于 BIOS 的计算机上使用 GRUB 2,请务必创建一个 BIOS                    Boot Partition,它保存 GRUB 第二个阶段的代码。(该分区被标识为在 GNU Parted 下面设置自己的 bios_grub 标志,或者被标识为 gdisk 下面的类型 EF02。)BIOS Boot Partition 在某些配置中可能小至 32KiB,但它有时必须稍大一点。鉴于现代分区校准策略,1 MiB 大小是常见的。
如果您的计算机使用 EFI,任何支持 EFI 的引导装载程序都将使用 GPT;但 Linux 的 EFI 引导装载程序选择很棘手。截至 2012 年中期,一些引导装载程序仍然不可靠,或者说有系统特定的怪事。根据我的经验,Linux 内核的 EFI 存根装载程序(在 3.3.0 内核中引入)是最可靠的,其次是 EFI LILO (ELILO),这是 Fedora 所使用的大量补丁过的 GRUB Legacy 版本,最后是 GRUB 2。除了引导装载程序,您可能还需要一个单独的引导管理器,以实现操作系统选择,如果您采用双重引导,并使用内核的 EFI 存根装载程序或 ELILO 来引导 Linux,则尤其需要引导管理器。这项任务的两个常见选择是 rEFIt 和 rEFInd,后者是前者最新的分支。(请注意我保持 rEFInd。)请参阅  获取所有这些程序的相关链接。
EFI 要求有 EFI System Partition (ESP) 进行引导。(Mac 对此规则有些例外,但它们附带了定义的 ESP。)ESP 应该包含一个 FAT32 文件系统。EFI 标准没有指定大小,不过大小介于 100MiB 到 500MiB 之间通常效果很好。如果您使用 Linux 内核的 EFI 存根装载程序或 ELILO,您可能需要将内核存储在 ESP 上,建议将 ESP 创建为上限大小。
实用工具支持GPT 支持的第三个领域是系统实用工具。Linux 提供三种主要的分区工具系列,均不同程度支持 GPT:
  • fdisk 系列。这些程序(fdisk、cfdisk 和                  sfdisk)是文本模式的工具,可以处理 MBR 和一些更独特的分区表,但它们不能处理 GPT。
  • GNU Parted (libparted)。GNU Parted 项目提供一个库                    (libparted) 和一个文本模式的实用工具                    (parted) 进行分区。若干个图形用户界面 (GUI) 实现工具也构建于                    libparted 之上。libparted 库可以处理 MBR、GPT 和几种其他分区表类型。
  • GPT fdisk。该系列(gdisk、cgdisk 和 sgdisk)根据 fdisk 系列进行建模,但可以在 GPT 磁盘上工作。(请注意,我是 GPT fdisk 的作者。)
作为一般性规则,基于 GNU Parted 的工具(尤其是 GParted 或 Palimpsest Disk Utility 等 GUI 工具)易于使用;不过,GPT fdisk(特别是 gdisk)可以访问更多 GPT 特性。因此,您可能想使用 GParted 或其他 GUI 工具来设置您的磁盘,但使用 GPT fdisk 来微调您的配置或修复 GPT 磁盘的损坏。
如果您想使用 GNU Parted 在磁盘上创建新的 GPT 分区,您应该启动程序,然后使用它的 mklabel 命令,如  所示。
清单 1. 使用 GNU Parted 创建 GPT 磁盘分区
1
2
3
4
5
6
7
# parted /dev/sdd
GNU Parted 3.1
Using /dev/sdd
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel
New disk label type? gpt
(parted)




此时,您可以使用 GNU Parted 的 mkpart 命令开始创建分区,或者以别的方式操作分区。该过程类似于用 parted 管理 MBR 分区,只需一点修改。例如,不需要指定一种分区类型为主分区或逻辑分区;但您可以为分区输入一个名称。
使用 gdisk 类似于使用 fdisk。在空白磁盘上启动程序,创建一个新的 GPT,如  所示。
清单 2. 使用 gdisk 创建 GPT 磁盘分区
1
2
3
4
5
6
7
8
9
10
11
12
# gdisk /dev/sdd
GPT fdisk (gdisk) version 0.8.4

Partition table scan:
  MBR: not present
  BSD: not present
  APM: not present
  GPT: not present

Creating new GPT entries.

Command (? for help):




用于创建和操作分区的 gdisk 命令类似于在 fdisk 中使用的那些命令,如使用 n 创建一个分区。由于在 GPT 磁盘上使用 parted,不需要将分区指定为主分区、扩展分区或逻辑分区。在 gdisk 中的类型代码以 MBR 类型代码为基础,但要乘以 0x100,例如,一个 Linux 交换分区在 MBR 中是类型 0x82,在 gdisk 中是 0x8200。您可以用 c 命令设置分区名称,也可以执行更多高级操作,详见 gdisk 的主页和在线文档。
无论您使用 parted 还是 gdisk,在完成操作时,您都可以使用普通的 Linux 文件系统管理工具(如 mkfs)在磁盘上创建文件系统。您也可以创建像在 MBR 磁盘上一样多的逻辑卷管理和 RAID 配置。
如果您喜欢 GUI 工具,可以选择 Gnome Partition Editor (GParted)。单击 Device > Create Partition Table 创建一个新的 GPT 数据结构。单击 Advanced,然后从 Select new partition table type 列表中选择 gpt,如  所示。单击 Apply 创建新的 GPT 数据结构。然后可以像操作一个 MBR 磁盘一样创建新的分区。
图 2. 在 GNOME Partition Editor 中创建 GPT 分区时必须明确设置 GPT 标签类型GPT 创建工具 GNU Parted 和 GParted 的在本质上都是破坏性的:如果您有一个 MBR 磁盘,使用这些工具将它转换为一个 GPT 磁盘的惟一方法是销毁现有的 MBR 分区。如果您想转换一个现有的 MBR 磁盘,GPT fdisk 在启动时就会自动完成该转换。但是,请记住,该转换使一个 BIOS 引导的磁盘显示为不可引导,除非您重新安装引导装载程序。
Linux 采用了少量 MBR 分区类型代码(比如 0x82 和 0x83)来识别它的 MBR 分区。也有类似的 GUID 代码识别 Linux GPT 分区。一个重要的说明是,Linux 和 Windows 对它们的数据分区历来使用相同的 GUID。因此,仅从它们的分区表 GUID 区分 Linux 分区和 NTFS 文件系统或 FAT 分区是不可能的。这在只有 Linux 的系统上并不重要,但如果您在一个基于 EFI 的计算机上双重引导 Windows 和 Linux,或者如果您在一个可移动磁盘上创建 Linux 分区,并在 Windows 中使用该移动磁盘,结果是您的 Linux 分区在  Windows 中显示为未初始化的分区,而 Windows 会在您尝试访问这些分区时问您是否要格式化分区。您可以在 gdisk 中通过为您的 Linux 分区提供一个 gdisk 类型代码 8300 修正该问题。将来,libparted 应该支持这个新的类型代码,但截至 libparted 版本 3.1,它尚未实现。
大型文件系统支持如果您切换到 GPT 是因为正在使用一个非常大的 RAID 配置,那么可能要检查在您部署的文件系统中是否支持大型文件系统。 总结了这些限制。(注意,分区选项不同,有些值也会不同)。这些值中的一部分相当大,可能使用不熟悉的后缀,例如,1TiB 是 1024GiB,1 pebibyte (PiB) 是                1024TiB,1 exbibyte (EiB) 是 1024 petabytes,还有 1 zebibyte 是 1024PiB。
表 1. 文件系统卷和大小限制文件系统最大卷大小最大文件大小第二扩展文件系统 (ext2) 和第三扩展文件系统 (ext3) 16TiB2TiB第四扩展文件系统 (ext4)1EiB16TiBReiserFS16TiB8TiB日志文件系统 (JFS)32PiB4PiBXFS16EiB8EiBB-tree 文件系统(Btrfs 尚在开发)16EiB16EiB
除了文件大小和卷大小限制外,还有文件系统性能差异。这个主题非常复杂,因此,您可能需要咨询某些专家,他们运行的安装程序应与您正在计划的安装程序类似。
GPT 分区建议GPT 分区可能会产生一些特殊问题,特别是您的计算机使用 EFI 或在一个多重引导环境中运行时:
  • 如前所述,在任何引导磁盘上,EFI 都需要一个 ESP。
  • 同样如些所述,如果您打算从一台基于 BIOS 的计算机上的 GPT 进行引导,您应该创建一个 BIOS Boot Partition。
  • 许多 GPT 分区工具在每个分区后面创建 128MiB 左右的空间(ESP 不适用这个规则)。这个规则是为了使磁盘工具可以使用这个空间来帮助完成它们的任务。
  • 在 Mac OS X 系统上,创建的分区的大小是 4KiB 的倍数(通常是 8 个扇区)。这个特性与 HFS Plus 文件系统有关,大多数现代 Macs 都使用该文件系统。
您可以遵循这些规则,也可以对它们置之不理,这完全取决于您自己的判断。Linux 很灵活,即使您不理睬这些规则,它也不会出现问题,除非您的计算机需要一个 ESP 或 BIOS Boot Partition 来引导。
另一个规则并不是 GPT 特定的规则,但它对于自 2010 年年初开始生产的大部分大容量磁盘很重要:这些磁盘使用 4KiB 物理扇区,但 512 字节的逻辑扇区。如果分区与物理扇区边界不一致,这种差异会导致潜在的严重性能问题。自 2010 年年底发布的分区工具一般能够很好地处理这个问题,但如果您在使用较旧版本的工具,请务以创建正确匹配的分区。
结束语                 由于较旧的 MBR 的大小限制,GPT 将成为硬盘分区的标准。幸运的是,Linux 对这种转变做好了充分准备。尽管 Linux 用户可能不得不放弃某些工具(例如 fdisk),但其他可用工具(例如,libparted 和 GPT fdisk)可以取代它们。理解这些要求将帮助您在时机到来时轻松地实现转变。您需要设置内核配置、引导装载程序配置,以及用于创建和管理分区的实用工具。
返回列表