访问驱动器内位置的方法有两种,一种是CHS方案,另一种是LBA方案。
CHS代表气缸,磁头,扇区,是确定从驱动器读取或写入位置的最底层方法。您告诉它使用柱面x,头y和扇区z,并在内存(缓冲区)中的地址上读取或写入该位置的内容。它是从(传统的,旋转的铁锈)硬盘驱动器的实际物理组件派生而来的,您在其中具有物理圆柱体和读取头。该扇区是最小的可寻址单元,传统上固定为512字节。
LBA是逻辑字节寻址,其中驱动器通过其偏移量读取和写入扇区地址,例如,读取磁盘上的第123837个扇区或将其写入磁盘上的第123734个扇区(从零开始)。
问题?这些值均受范围限制。实际上,由于CHS限制的严重性,必须引入LBA。对于CHS,C(圆柱体)的可能值为1023,而H(缸头)的最大值为255,而S(扇区)最多只能达到63,这意味着您最多可以有1024个圆柱体255缸头x 64扇区x 512字节(以传统CHS格式映射),总共不到8 GiB!使用CHS,根本无法访问大于8 GiB的磁盘!
因此,LBA引入了32位限制,从而为您提供了2 ^ 32 x 512字节或2 TiB的磁盘大小限制-这就是MBR磁盘不能超过2TiB的原因,因为它使用CHS和LBA来指定分区大小,而两者都不能支持超过2TiB的任何内容。
引入了更新更好的选项,例如GPT分区方案,该方案将LBA扩展为64位,从而为您提供了比2 ^ 64 x 512字节所需的存储容量大得多的功能- 但有一个陷阱:很多遗留问题硬件和旧版操作系统,旧版BIOS实现以及旧版驱动程序不支持UEFI或GPT,并且许多人希望可以轻松升级某些产品,使其超过2TiB限制,而不必重写整个堆栈从头开始。而且,最终,我们达到了4096个扇区大小。
看到上面讨论的所有限制,一件事是一个固定的假设:扇区大小。从第一天开始,它就是512字节,从那以后一直保持这种状态。但是最近,硬盘制造商意识到有机会发挥一些魔力:采用传统的CHS或32位LBA,只需将扇区大小替换为4096(4k)而不是512字节即可。当操作系统通过请求LBA 1(因为第一个是LBA 0)说“给我磁盘上的第二个扇区”时,我们不会给它提供512-1023字节,而是给它4096-8191字节。
突然,我们的2TiB限制已升级到2 ^ 32 x 4096字节,即16 TiB,而不必放弃MBR,切换到UEFI或GPT或任何其他东西!
唯一的问题是,如果操作系统不知道这是一个使用4096个扇区而不是512字节扇区的魔术磁盘,那么将会出现不匹配的情况。每次操作系统说“嘿,磁盘,请向我写入这512个字节以抵消xxx”时,磁盘将用4096个字节来存储这512个字节(其余的为零或垃圾数据,假设您不会以内存下溢),因为它们不以字节为单位进行通信,而是以扇区为单位进行通信。
因此,BIOS现在(有时)提供了一个选项,使您可以手动指定应使用512字节的扇区大小,而不是较新磁盘使用的本机4096字节的扇区大小,但请注意,您不能使用它来访问更多磁盘MBR系统上磁盘的2TiB,就像过去的“美好时光”一样。但是,支持4k的现代OS可以利用所有这些优势来利用这种魔力来读取和写入4096字节的数据块和数据!
(另一个优点是事情要快得多,因为如果您一次要读取和写入4096个字节,则读写4GiB数据的操作会更少。)