主引导记录最大驱动器大小
Master Boot Record maximum drive size
我正在阅读一些关于主引导记录布局的内容,我对分区布局如何导致可在具有 MBR 的设备上使用的存储大小的大小限制特别感兴趣。
MBR 中的每个分区都是使用 16 字节条目定义的。这16个字节的用法如下:
- 第一个字节,如果值为80,表示活动分区
- 第二个字节,分区开始的头号。这意味着 MBR 可以寻址 256 个不同的磁头
- 第3字节,前6位用于捕获分区第1扇区的扇区号。这意味着 MBR 可以寻址 64 个不同的扇区
- 第4个字节+第3个字节的最后2位(共10位)存储分区开始的磁道号。这意味着总共可以使用 MBR 分区条目寻址 1024 个磁道。
- 第 5 个字节(OS 指标)
- 第6字节分区结束的头号
- 第7字节,前6位用于捕获分区最后一个扇区的扇区号
- 第8个字节+第7个字节的后2位存储分区结束的磁道号
- 字节 9、10、11 和 12 捕获分区开始之前的扇区数量
- 字节 13、14、15 和 16 捕获分区中有多少个扇区
假设我们在 MBR 中只有 1 个分区,我将其设为活动分区。第零个扇区由MBR本身占用,而第一个分区从扇区1开始。那么该分区中的扇区总数为:
2^10 = 1024 (number of tracks)
2^6 = 64 (number of sectors)
2^8 = 256 (number of heads)
1024 * 64 * 256 = 16,777,216 sectors
每个扇区包含 512 个字节,我们得到的最大分区大小为 8,589,934,592 (8.5 GB)。如果这是正确的(我对此表示怀疑),那么 MBR 可寻址的磁盘的最大大小不应该是 8.5 GB 吗?我看到到处都在谈论 2.1 TB,但我无法理解。
CHS 寻址早已过时。最近的 MBR 系统将分区信息存储为 LBA(“逻辑块地址”)并且驱动器在内部将其映射到 cylinders/heads/sectors(在对 bad/spare 扇区执行任何必要的重新映射之后)。
根据 Wikipedia,LBA 偏移量和大小存储为 32 位小端值,位于 MBR 分区 [=21] 的偏移量 0x08
和 0x0c
(分别) =]条目。这对应于您的字节 9-16.
32 位地址意味着限制实际上是 2^32 * 512 = 2TB。这种限制是现代系统使用 GPT 分区的主要原因之一。许多驱动器也使用 4096 字节扇区而不是 512。
我正在阅读一些关于主引导记录布局的内容,我对分区布局如何导致可在具有 MBR 的设备上使用的存储大小的大小限制特别感兴趣。
MBR 中的每个分区都是使用 16 字节条目定义的。这16个字节的用法如下:
- 第一个字节,如果值为80,表示活动分区
- 第二个字节,分区开始的头号。这意味着 MBR 可以寻址 256 个不同的磁头
- 第3字节,前6位用于捕获分区第1扇区的扇区号。这意味着 MBR 可以寻址 64 个不同的扇区
- 第4个字节+第3个字节的最后2位(共10位)存储分区开始的磁道号。这意味着总共可以使用 MBR 分区条目寻址 1024 个磁道。
- 第 5 个字节(OS 指标)
- 第6字节分区结束的头号
- 第7字节,前6位用于捕获分区最后一个扇区的扇区号
- 第8个字节+第7个字节的后2位存储分区结束的磁道号
- 字节 9、10、11 和 12 捕获分区开始之前的扇区数量
- 字节 13、14、15 和 16 捕获分区中有多少个扇区
假设我们在 MBR 中只有 1 个分区,我将其设为活动分区。第零个扇区由MBR本身占用,而第一个分区从扇区1开始。那么该分区中的扇区总数为:
2^10 = 1024 (number of tracks)
2^6 = 64 (number of sectors)
2^8 = 256 (number of heads)
1024 * 64 * 256 = 16,777,216 sectors
每个扇区包含 512 个字节,我们得到的最大分区大小为 8,589,934,592 (8.5 GB)。如果这是正确的(我对此表示怀疑),那么 MBR 可寻址的磁盘的最大大小不应该是 8.5 GB 吗?我看到到处都在谈论 2.1 TB,但我无法理解。
CHS 寻址早已过时。最近的 MBR 系统将分区信息存储为 LBA(“逻辑块地址”)并且驱动器在内部将其映射到 cylinders/heads/sectors(在对 bad/spare 扇区执行任何必要的重新映射之后)。
根据 Wikipedia,LBA 偏移量和大小存储为 32 位小端值,位于 MBR 分区 [=21] 的偏移量 0x08
和 0x0c
(分别) =]条目。这对应于您的字节 9-16.
32 位地址意味着限制实际上是 2^32 * 512 = 2TB。这种限制是现代系统使用 GPT 分区的主要原因之一。许多驱动器也使用 4096 字节扇区而不是 512。