![分区表消耗32K数据?](https://linux22.com/image/89051/%E5%88%86%E5%8C%BA%E8%A1%A8%E6%B6%88%E8%80%9732K%E6%95%B0%E6%8D%AE%EF%BC%9F.png)
我创建了一个 100MB 大小的文件,并使用losetup
将其分配给/dev/loop0
.
因此,我用来fdisk
创建一个空的 DOS 分区表,以及一个跨越整个磁盘的新分区。
对我来说不寻常且无法理解的一件事是,上述分区从第 63 扇区开始;这意味着分区表占用62个扇区,即31Kb。
我的印象是,有关分区条目的所有数据都记录在主引导记录(驱动器的第一个扇区)中,因此只有磁盘的前 512 字节应该是越界的。
检查驱动器,第一个扇区之后的扇区并未完全填充为空,因此显然我缺少一些有关分区表的细节。
fdisk 打印(显示类型 = 扇区):
Device Boot Start End Blocks Id System
/dev/loop0p1 * 63 192779 96358+ 83 Linux
答案1
MBR 分区格式已有三十年历史,并且由于历史原因而变得怪异。
当时,计算机需要知道硬盘的几何形状。数据在硬盘上是如何组织的?从三个维度来看:气缸、磁头和扇区。
(图表由狮子金布罗)
几何形状存储为当时足够大的最大值:8位用于磁头数量(1-255),6位用于磁道上的扇区数量(1-63),10位用于数量每个磁头的磁道数,即柱面数(1-1023),一个扇区包含 512 字节。如今计算机不需要知道磁盘的实际几何形状(这些数字甚至没有意义),但格式仍然保留,并且使用 MBR 分区的磁盘具有以 CHS 格式表示的大小,但重要的是三个数字的乘积等于扇区总数。
分区开始的起始地址以CHS格式表示,并且许多较旧的操作系统不支持跨越不同磁道的分区,即分区必须在柱面边界上对齐。这意味着第一个分区有 63 个扇区的倍数。
有 31 kB 的空间未用于分区内容。它可用于引导加载程序。
现代的GPT分区格式,这是具有 >1 TB 磁盘的较新 PC 的标准,喜欢在 1 MB 边界上对齐分区,因此在第一个分区开始之前大约有 1023 kB 可用空间。同样,这可以由引导加载程序使用。现代操作系统也会在 1MB 边界上对齐 MBR 分区,从而放弃 CHS 兼容性,并确保分区位于具有 4 kB 扇区(= 8 个 512 kB 传统扇区)的驱动器上的扇区边界上。在扇区边界上对齐分区(例如磁盘使用的实际扇区大小,即其首选传输大小)有助于提高性能。