Linux 磁盘分区布局简析

总结:

  1. 无论是Windows还是Linux,分区时默认都是在扇区 2,048 上开始设置第一个分区的起始点
  2. 分区工具以 8 的倍数在每个分区起始点进行对齐以确保硬盘性能,因为4K 字节扇区将 8 个传统 512 字节扇区合并为一个 4K 字节扇区,如下图所示
    在这里插入图片描述

分区表类型

MBR 分区表

针对 MBR 而格式化的 IDE 驱动器有 3 种类型的分区:主分区、逻辑分区和扩展分区。分区表位于磁盘的主引导记录 (MBR) 中。MBR 是磁盘的第一个扇区,所以分区表不是它的一个非常大的部分。这将磁盘上的主分区数量限制为 4 个。需要 4 个以上的分区时,就像常常遇到的情况一样,必须将主分区变成扩展分区。扩展分区是一个或多个逻辑分区的容器。这样,就可以在使用 MBR 布局的驱动器上拥有 4 个以上的分区。

MBR 布局还将支持的磁盘最大大小限制到大约 2TB。较新的 GUID 分区表(或 GPT)布局解决了此大小限制,还解决了分区数量较少的限制。

简单地讲,扩展分区是一个或多个逻辑分区的容器。此分区模式最初用于 MS DOS 和 PC DOS,允许 PC 磁盘供 DOS、Windows 或 Linux 系统使用。您只能有一个扩展分区,而且其中的空间必须是连续的。数据存储在扩展分区中的逻辑分区中。只有首先在扩展分区中创建逻辑分区,然后才能将数据存储在扩展分区中。

Linux 将主分区或扩展分区按 1 到 4 进行编号,所以 dev/sda 可以有 4 个主分区 /dev/sda1、/dev/sda2、/dev/sda3 和 /dev/sda4。或者它可以有最多 3 个主分区和 1 个扩展分区。一种常见的布局是拥有单一的主分区 /dev/sda1 和一个扩展分区 /dev/sda2。如果定义了逻辑分区,它们从 5 开始编号,所以 /dev/sda 上的第一个逻辑分区将为 /dev/sda5,即使磁盘上没有主分区且只有一个扩展分区 (/dev/sda1)。所以如果想要在 IDE 驱动器上有 4 个以上的分区,需要给扩展分区留出一个分区编号。尽管现在对于具有热插拔功能的内核,IDE 驱动器上分区最大数量理论上限制为 15 个,但不一定能创建最后几个分区。如果计划在一个驱动器上使用 12 个以上的分区,请小心确认所有功能都可正常工作。

GUID 分区表 (GPT)

GPT 被设计为适用于基于 UEFI(Unified Extensible Firmware Interface,统一可扩展固件接口)系统,而不是适用于基于 BIOS 的系统,以便从 GPT 磁盘引导,但可以通过一些方法绕过此限制(求大佬教学)。
GPT 驱动器默认情况下最多支持 128 个分区

分区工具

  1. fdisk只能用于MBR分区,gdisk,parted可以用于GPT分区。
  2. 在使用柱面作为单位时, parted 和 fdisk 输出所显示的开始柱面和结束柱面之间有明显的差异。这是由于事实上 parted 从 0 开始计算柱面,而 fdisk 从 1 开始计算
  3. 可使用 fdisk 和 -u=cylinders 选项显示柱面中的单位,或者在交互式模式下使用 u 子命令在扇区和柱面之间进行切换。最新的 fdisk 版本会告诉您现在已弃用的柱面单位。 Changing display/entry units to cylinders (DEPRECATED!).

fdisk

fdisk 系列是大多数 util-linux 或 util-linux-ng 分发包的一部分,支持直接编辑 MBR 数据结构,但它不能创建或修改文件系统。在 util-linux V2.17 中,fdisk 对分区的 8 扇区对齐不提供任何直接支持;对齐仍然是基于柱面的。这种情况在 V2.18 中有所改变,在默认情况下,fdisk 在扇区 2,048 上开始设置第一个分区的起始点。如果您在 fdisk 中使用是 1MiB 或更大大小的倍数的分区大小来创建所有分区,那么 fdisk 会保持您的分区是根据 1MiB 的倍数进行对齐的,分区的大小应该是 8 个扇区的倍数。

fdisk 最新版本的风险就是:如果磁盘开始的时候就存在不合理的对齐,那么在您创建后续分区时,fdisk 不会自动纠正。您还可以输入未合理对齐的手动分区起始扇区。因此,在使用 fdisk 时,总是会检查分区起始点,以确保它是 8 的倍数。执行这项操作时,验证程序使用了扇区作为其单元值;如果在主菜单中键入 u,那么即使是 2.17 以后的版本也可以使用柱面。输入 p 后出现的显示框指出您可以用它来检查这些细节,如 清单 1 所示。虽然单元值并不是明确表述的,但显然这些单元位于扇区中,因为起始值和最终值都很大。在这种情况下,最终值在磁盘的最后一个扇区上;将该值与输出起点附近的总扇区值进行比较。请注意,fdisk 2.17 和更早的版本可能会抱怨,分区在合理对齐的情况下没有在柱面边界上终止。您可以忽略这条警告。

清单 1. 显示了合理对齐的 fdisk 输出的示例

Command (m for help): p
 
Disk /dev/sdb: 2000.4 GB, 2000398934016 bytes
256 heads, 63 sectors/track, 242251 cylinders, total 3907029168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
 
Device Boot         Start         End      Blocks   Id  System
/dev/sdb1            2048     2097151     1047552   83  Linux
/dev/sdb2         2097152  3907029167  1952466008   83  Linux

当操作 MBR 磁盘时,要意识到扩展分区的对齐并不是很重要。这些分区保留了定义逻辑分区的单个扇区(one-sector)数据结构,因此,从某种意义上讲,扩展分区无法 合理对齐。对齐主分区和逻辑分区时要谨慎操作。

GPT fdisk

GPT fdisk 实用程序只在 GPT 磁盘中有用。0.5.2 以前的版本并不执行任何对齐,但您可以通过指定合理的起始扇区数量来手动对齐分区。0.5.2 和 0.6.0 以及 0.6.0 到 0.6.5 都将所有分区的起始扇区调整为大型磁盘的 8 扇区边界(超过 800GiB 的磁盘),但这不适用于较小的磁盘。0.6.6 为所有未分区的磁盘引入了一种 Windows 样式的 2,048 扇区 (1MiB) 对齐,并试图根据现有分区推断出过去使用的磁盘对齐。

通过 0.5.2 及其后期版本,您可以通过专家菜单上的 l 选项手动调整对齐值。该选项将大量扇区作为一个选项。为了实现高级格式化磁盘的合理对齐,可将该值设置为 8 或其倍数。验证选项(任何菜单上的 v)根据当前对齐值报告未合理对齐的所有分区;gdisk 显示了扇区值中的分区起始点和最终点。清单 2 显示了使用该程序来验证合理分区对齐:

清单 2. 显示了合理对齐的 gdisk 输出的示例

Command (? for help): p
Disk /dev/sdb: 3907029168 sectors, 1.8 TiB
Logical sector size: 512 bytes
Disk identifier (GUID): 4B18D328-5E8E-49DB-8690-9FE89807ABF8
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 3907029134
Partitions will be aligned on 8-sector boundaries
Total free space is 6 sectors (3.0 KiB)
 
Number  Start (sector)    End (sector)  Size       Code  Name
   1              40          409639   200.0 MiB   8300  Unused /boot
   2          409640          819239   200.0 MiB   8300  Unused /boot
   3          819240      3907029134   1.8 TiB     8E00  Linux LVM
 
Command (? for help): v
 
No problems found. 6 free sectors (3.0 KiB) available in 1
segments, the largest of which is 6 (3.0 KiB) in size.

4 KB 扇区磁盘上的 Linux:实用性建议
https://www.ibm.com/developerworks/cn/linux/l-4kb-sector-disks/index.html

猜你喜欢

转载自blog.csdn.net/RBPicsdn/article/details/88754843