Linux准备在未来磁盘存储中使用GUID Partition Table

3TB 磁盘早已上市,而大得多的 RAID 阵列现在也很常见,了解 MBR 分区模式的替代方法已变得很重要。很明显,MBR 的继任者是 GUID Partition Table (GPT)。了解如何确保您的 Linux 系统为未来的磁盘存储做好充分准备。

在开始寻找您的">硬盘分区模式替代方法之前,最好回顾一下迫使这种变化出现的限制。理解这些限制(和克服这些限制的建议工具)将使您能够对应该以多快的速度从主引导记录 (MBR) 跳到 GUID Partition Table (GPT) 做出判断。如果新磁盘采购任务迫在眉睫并且您正在考虑采用 GPT,那么这一点尤为重要。即使在较小的磁盘上,GPT 也比 MBR 更有优势,但是您必须平衡这种优势与现实转换遇到的困难。

理解 MBR 的限制

MBR 分区系统是一个数据结构补丁的大杂烩,用于克服早期的限制。MBR 自身完全驻留在一个硬盘的第一个扇区(512 字节)上。MBR 的前 400 个字节专门用于存储代码:引导装载程序 (boot loader)。计算机引导时,基本输入/输出系统 (BIOS) 读取并执行这段代码。

在这个代码区域之后,MBR 将数据存储在大约 4 个分区上,这些分区称为主分区。每个分区采用两种方法进行描述:“柱面/磁头/扇区 (CHS)” 标记法和 “逻辑块寻址 (LBA)” 标记法。今天,CHS 标记法几乎成为了老古董,因为它是一个 24 位的数字。这意味着它只限于描述 8GB 大小的磁盘区域。假设一个扇区大小为 512 字节,32 位的 LBA 值支持 2TiB 大小。但是这个 2TiB 上限不太容易突破;因为在 MBR 中没有留下任何未分配的字段,可用于向 LBA 地址添加更多位。

除了这个可见的 2TiB 问题之外,MBR 还有其他困难。主要的困难是 4 个主分区的限制。要克服这个限制,其可能的方法是将一个主分区放到一边,作为一个占位符(称为扩展分区),用于容纳任意数量的附加分区(称为逻辑分区)。然而,这是一种笨拙的权宜之计,会导致一些问题。比如,安装多个操作系统时,如果过多的操作系统要求自身拥有过多的主分区,就会出现困难。

MBR 还有数据完整性问题。它是一个单一数据结构,容易受到误操作和磁盘故障的损坏。另外,由于逻辑分区以一种链接表结构定义,如果一个逻辑分区损坏,就会阻止对其余逻辑分区的访问。这些数据结构都没有任何形式的错误探测功能,因此,损坏很难定位。

理解磁盘的计量

磁盘大小历来以千字节 (KB)、兆字节、千兆字节 (GB) 和太字节 (TB) 为计量单位。不幸的是,这些单位的含义往往并不清楚。千、兆 和其他名称均取自国际系统 (SI) 单位,它们描述了公制所使用的单位。正因为如此,SI 单位使用十进制(基数为 10)乘数,千 意味着以 1000 为基本单位,兆 指以 1,000,000 为基本单位,依此类推。然而,在计算机领域,二进制(基数为 2)单位往往更方便。因此,SI 前缀经常(但并不总是)被应用为与某些十进制单位接近的二进制单位,千 表示 1,024,兆 表示 1,048,576,等等。

不幸的是,SI 单位在二进制计量中的这种不一致的应用,可能会导致混乱。传统硬盘制造商和某些磁盘实用工具历来以基于 10 的方式使用 SI 单位,而其他实用工具则使用基于 2 的单位。这种选择导致所报告的大小存在差异。在软盘的日子里,这种差异很小;但在今天,差异大幅增加。在 TB 级,差距大约有 10%。因此,在 2005 年,电气和电子工程师学会 (IEEE) 为二进制单位创建了一个新标准,其名称为 IEEE1541-2002(以下简称 IEEE1541)。这个新系统针对二进制单位采用新的名称和后缀缩写 kibibytes(KiB,210 字节)、mebibytes(MiB,220 字节)、gibibytes(GiB,230 字节)、tebibytes(TiB,240 字节),依此类推。

在本文中,IEEE1541 和 ​​SI 单位均有使用,这取决于哪种单位在上下文中最合适。由于大多数(但不是全部)数据结构限制最适合使用二进制进行描,因此使用 IEEE1541 单位,但是磁盘大小和某些数据结构限制更接近于十进制的限制,因此要使用 SI 单位。

GPT 的解决方案

GPT 定义是 Intel® 为一个 BIOS 替换创建的 Extensible Firmware Interface (EFI) 规范的一部分。尽管 GPT 是旨在替代今天大多数计算机上的旧 BIOS 标准的一部分,将 GPT 用在基于 BIOS 的系统上还是有可能的。但是,如果您的计算机已经使用 EFI,这一事实则是采用 GPT 的另一个理由。无论您的计算机使用旧 BIOS 还是 EFI,GPT 都将修复 MBR 的许多限制:

GPT 只使用 LBA,因此,CHS 问题就不复存在。 磁盘指针的大小为 64 位,假设 512 字节扇区,这意味着 GPT 可以处理的磁盘大小最高达 512 x 264 字节(8 zebibytes,即 86 亿 TiB)。 GPT 数据结构在磁盘上存储两次:开始和结束各一次。在因事故或坏扇区导致损坏的情况下,这种重复提高了成功恢复的几率。 循环冗余检验 (CRC) 值针对关键数据结构而计算,提高了数据崩溃的检测几率。 GPT 将所有分区存储在单个分区表中(带有备份),因此扩展分区或逻辑分区没有存在的必要。GPT 默认支持 128 个分区,当然您也可以更改分区表的大小,如果您的分区软件支持这种更改的话。 虽然 MBR 提供 1 字节分区类型代码,但 GPT 使用一个 16 字节的全局唯一标识符 (GUID) 值来标识分区类型。这使分区类型更不容易冲突。 GPT 支持存储人类可读的分区名称。您可以使用这个字段来命名您的 Linux® /home、/usr、/var 和其他分区,以便它们在分区软件中更容易识别。

磁盘的第一个扇区专用于一个保护性 MBR,它是一个法定 MBR 数据结构,它定义一个单一分区类型 0xEE (EFI GPT)。在低于 2TiB 磁盘上,这个分区将扩展到整个磁盘;在更大的磁盘上,它的大小应为 2TiB。这个想法的目的是保护 GPT 磁盘免受不支持 GPT 的磁盘工具损坏。如果这类工具检查磁盘,它们将把磁盘视为没有空闲空间的 MBR 磁盘。(有的磁盘工具能够创建一个混合 MBR,除 EFI GPT 分区外,这个混合 MBR 将最多定义三个 MBR 分区。这个想法的目的是使一个不支持 GPT 的操作系统,比如,Windows® 的大多数预览版 Windows Vista®,与 GPT 分区在一个磁盘上共存。然而,这个配置显然是非标准的,杂乱的)。

由于 GPT 包含了一个保护性 MBR,一台基于 BIOS 的计算机可以使用存储在这个保护性 MBR 的代码区域的引导装载程序从一个 GPT 磁盘引导,但这个引导装载程序和操作系统必须都支持 GPT。(不过,一些有缺陷的 BIOS 无法从 GPT 磁盘引导。)EFI 包含自己的引导装载程序,因此您可以在一个基于 EFI 的系统上从一个 GPT 磁盘引导。

GPT 的主要问题是兼容性:低级别磁盘工具和操作系统必须全部支持 GPT。这种支持对 Linux 相当普遍,尽管您可能需要处理一些细节,并针对低级别磁盘维护更换您使用的部分工具。如果您要多重引导一台计算机,您必须检查所有操作系统的 GPT 支持。

如果您管理许多 Linux 系统,或者如果您打算在不久的将来添加一个超过 2TiB 的磁盘,您可能要考虑采用 GPT 进行一个安装测试。在完全必要时才进行安装测试可以使您事先对 GPT 的特性有关身体验,并了解一些支持 GPT 的 Linux 实用工具的奇怪行为。

利用 MBR 和 GPT 磁盘的组合来运行一个系统,这是有可能实现的。例如,您可以从 MBR 磁盘引导,但仍然使用 GPT 作为数据磁盘。这样的配置对基于 BIOS 的系统上的 Windows 是最有用的,因为 Windows 无法使用 BIOS 从 GPT 启动,但 Windows Vista 和更高版本的 Microsoft 操作系统可以使用 GPT 数据磁盘。

时间: 2024-09-17 20:33:04

Linux准备在未来磁盘存储中使用GUID Partition Table的相关文章

Linux基金会透露未来 Linux内核可能会引入形式验证

本月19日在北京举办的 LC3 大会 (LinuxCon + ContainerCon + CloudOpen)应该是全球最顶级的开源大会了,而这一为期两天的开源盛会过去几年在北美.欧洲和日本都举办过,而此次是其首次来到中国.就在同一天,Linux 发布了 4.12-rc6 的 release,而Linux 基金会在这次大会上也独家透露了一些未来 Linux 内核开发的新特性. Linux 基金会的执行董事 Jim Zemblin 是本次大会的主持人,他同时也出席了本次大会的发布会,接受了中国媒

XFS:大数据环境下Linux文件系统的未来

本文讲的是XFS:大数据环境下Linux文件系统的未来,Linux有好多种件系统,但往往最受关注的是其中两种:ext4和btrfs.XFS开发者Dave Chinner近日声称,他认为更多的用户应当考虑XFS.他谈到了为了解决XFS中最严重的可扩展性问题所做的工作,还谈到了他认为将来的发展走向.如果他说的一点都没错,接下来几年我们在XFS方面有望看到更多的动静. XFS经常被认为是适合拥有海量数据的用户的文件系统.Dave表示,XFS非常适合扮演这个角色;它对许多工作负载而言向来表现不俗.以前往

Linux 基金会透露未来 Linux 内核可能会引入形式验证

本月19日在北京举办的 LC3 大会 (LinuxCon + ContainerCon + CloudOpen)应该是全球最顶级的开源大会了,而这一为期两天的开源盛会过去几年在北美.欧洲和日本都举办过,而此次是其首次来到中国.就在同一天,Linux 发布了 4.12-rc6 的 release,而Linux 基金会在这次大会上也独家透露了一些未来 Linux 内核开发的新特性. Linux 基金会的执行董事 Jim Zemblin 是本次大会的主持人,他同时也出席了本次大会的发布会,接受了中国媒

WPF老矣,尚能饭否——且说说WPF今生未来(中):策略

本文接上文<WPF老矣,尚能饭否--且说说WPF今生未来(上):担心>继续. "上篇"中部分精彩的点评: 虽然WPF不再更新了,但是基于WPF的技术还是在发展着,就比如现在的WinRT,只不过API换了一套而已,xaml还是xaml,数据绑定还是数据绑定,依赖属性还是依赖属性,模板还是模板.其实学过WPF的转WinRT还是比较爽的,Blend的操作也没变,只不过现在WinRT的人才需求量的确有点坑. 最后感谢WPF给我们带来MVVM这种开发方式.开发模型.   by @h8

c#.NET中生成GUID

GUID(全局统一标识符)是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的.通常平台会提供生成GUID的API.生成算法很有意思,用到了以太网卡地址.纳秒级时间.芯片ID码和许多可能的数字.GUID的唯一缺陷在于生成的结果串会比较大." 1. 一个GUID为一个128位的整数(16字节),在使用唯一标识符的情况下,你可以在所有计算机和网络之间使用这一整数. 2. GUID 的格式为"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

在Linux平台及IPv4环境中构建IPv6测试环境

随着互联网技术的不断发展,传统的 IPv4 地址已不能满足用户的需要.新一代的 IPv6 协议也日益被广泛的接受和使用,越来越多的软件系统都要求支持 IPv6 网络协议.然而现有网络环境对 IPv6 的支持仍然非常有限,这给软件的开发和测试都带来了一定的困难.本文将介绍如何使用 Apache 在现有的 IPv4 网络中构建模拟的 IPv6 环境. 在 Linux 平台及 IPv4 环境中构建 IPv6 测试环境 1 IPv6简介 IPv6(Internet Protocol Version 6)

在Linux系统的命令行中为MySQL创建用户的方法

  这篇文章主要介绍了在Linux系统的命令行中为MySQL创建用户的方法,包括对所建用户的权限管理,需要的朋友可以参考下 要访问一个MySQL服务器,你需要使用一个用户帐号登录其中方可进行.每个MySQL用户帐号都有许多与之相关连的属性,例如用户名.密码以及权限和资源限制."权限"定义了特定用户能够在MySQL服务器中做什么,而"资源限制"为用户设置了一系列服务器资源的使用许可.创建或更新一个用户涉及到了对用户帐号所有属性的管理. 下面展示了如何在Linux中创建

Linux系统递归生成目录中文件的md5的方法

  这篇文章主要介绍了Linux系统递归生成目录中文件的md5的方法,利用PHP脚本实现,需要的朋友可以参考下 linux下使用md5sum递归生成整个目录的md5 今天要用md5sum操作目录,递归生成目录下所有文件的md5值,结果发现它不支持递归操作于是写了个php脚本处理下 代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 3

link中的guid能不能转换为8位流水码?如果可以请问如何转换?

问题描述 link中的guid能不能转换为8位流水码?如果可以请问如何转换? link中的guid能不能转换为8位流水码?如果可以请问如何转换? 解决方案 你可以产生一个8位的流水码,并且将每个guid和它对应,然后查表.