如果扇区大小大于 512 字节,MBR 是如何存储的?

How is MBR stored if the sector size is bigger than 512 bytes?

据我所知,MBR 大小为 512 字节,以 0x55AA 结尾。

我的问题是:

  1. 磁盘扇区大小大于 512 字节的情况有多普遍? (例如服务器中使用的磁盘等)

  2. 如果扇区大小为 4096,MBR 将如何存储?第 4095 个字节等于 0x55 还是第 511 个字节?

  3. 在我的 C 代码中读取 MBR 之前是否需要检查扇区大小?这是我需要担心的事情,还是只读取磁盘的第一个 512 个字节就足够了?

即使底层硬件使用更长的块,大多数设备也提供块大小为 512 字节的“标准”接口。

如果扇区的大小大于 512 字节,MBR 将看起来完全相同的字节。所有数据都将处于相同的偏移量。只是该扇区的剩余部分将不会被使用。

如果扇区大小小于 512 字节,则 MBR 将占用多个扇区。

Do i need to check for sector size before reading MBR in my C code?

通常单个扇区是您需要读取的最小块,因此最好知道它的大小,因为您需要分配缓冲区来存储此数据。