硬盘的相关资料:
$ sudo fdisk -l
Disk /dev/sda: 250.1 GB, 250058268160 bytes
255 heads, 63 sectors/track, 30401 cylinders, total 488395055 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
...
Run Code Online (Sandbox Code Playgroud)
所以有写有255个头。
来源:http : //www.tldp.org/LDP/sag/html/hard-disk.html
看看上面的图片,看起来有 255(磁头数)/2(每盘两个磁头)=127 盘,这似乎是一个非常令人难以置信的数字。如何解释物理头的含义?
正如评论中指出的那样,这些天为物理驱动器几何结构报告的柱面/磁头/扇区数在现实中没有基础。 您可以放心地忽略这些数字。
为了了解发生了什么,我们必须一路回到 1981 年的原始 IBM 型号 5150 PC。
5150 的原生配置是磁带和软盘存储的某种组合。它最初甚至不支持硬盘(可以改装,但这需要单独的控制器卡以及比出厂时更强大的电源;此外,它们是一种非常昂贵的奢侈品)。对于软盘,按照磁头、柱面和扇区对媒体进行寻址是有意义的;这些数量非常方便地转换为物理介质上的给定位置,并且在软件以及控制器固件和驱动器硬件中都相对容易使用。当您几乎要为任何类型的存储按字节付费时,这种简单性是一件非常好的事情。
因为 5150 的内存量非常有限,包括 RAM 和存储空间(基本型号有 16 KiB 的 RAM;此答案的文本将占用其 RAM 的一半左右,更不用说使用任何软件来处理文本了),尽可能少地浪费是很重要的。因此,相关工程师提出了一组当时可能看起来很大的限制:柱面使用 10 位编码,磁头使用 8 位编码,扇区号使用 6 位编码,所有这些都可以用一些位移魔法整齐地打包成三个字节。这允许寻址 256 个磁头、每个磁头 1024 个柱面和每个柱面 64 个扇区。(在实践中,不用于每个数字0。)使用512个字节的扇区,这允许寻址总计8吉布,一个的巨大在1981年的数据量即使是更实际的十头驱动器给你的上限320 MiB,当时 5150 推出时的“高端”存储介质是160 KB软盘(每个磁道使用 8 个扇区和 40 个磁道或柱面)。如果我们根据将这些软盘替换为单层 DVD(其存储容量略高于 4 GiB,而不是那些 8 GiB 驱动器)来推断这一点,我们将看到能够存储 100 TB 数量级的单个驱动器。很快就会看到市场上的任何一个?我不这么认为。
一个复杂的因素是原始 IDE 标准使用了不同的 CHS 编码。它使用 28 位作为 CHS,将柱面编码为 16 位,将头部编码为 4 位,将扇区编码为 8 位。由于每个人都喜欢兼容性,通过取两者中的最大值,我们得到 10 个柱面位、4 个头位和 6 个扇区位。由于未使用扇区 0,因此这允许寻址 1,032,192 个扇区,每个扇区为 512 字节,可计算为 504 MiB。遇到的第一个限制是硬盘驱动器:500 MB 的障碍。通过使用具有 512 字节扇区的完整 IDE CHS 方案并且不关心 IBM CHS 兼容性,您可以解决 127.5 GiB。
此外,256 磁头驱动器从未真正在市场上流行过。(即使在今天,大多数硬盘驱动器使用的盘片还不到六个,每个盘片的每一面都有一个磁头。)所以有人想到了借用未使用的位并重新利用它们的技巧。因此,一个驱动器可能会显示它的磁头数量是它实际数量的四倍,但实际上使用这两个额外的位来寻址柱面。固件可以很容易地进行转换,因为它不需要像原始 5150 CHS 寻址格式那样受到约束,更不用说 IDE/ATA 和 IBM CHS 寻址的最小公分母了。但是,为了保持兼容,驱动器仍必须呈现 CHS 几何结构。因此,LBA 辅助翻译几何诞生了。 这允许使用 CHS 方案的完整理论 8 GiB 寻址范围,但给我们带来了诸如驱动器报告它们有数百个磁头之类的怪物,以便有某种方法可以通过 CHS 几何结构寻址所有驱动器的扇区。
CHS 以某种方式幸存下来,直到 1990 年代后期,当时常见的硬盘驱动器大小开始逐渐接近其理论极限。那时,很明显需要一些完全不同的东西。驱动器也变得越来越先进,大约在那个时候,驱动器开始能够对操作系统透明地重新映射坏扇区(这以前是操作系统文件系统代码的责任,这就是为什么例如 MS -DOS 6.x "ScanDisk" 能够对整个驱动器进行物理读/写扫描)。特别是当您进入透明扇区重映射领域时,CHS 寻址的整个概念变得毫无意义,因为没有任何内容表明您要求的 CHS 地址与最终被使用的地址有任何关系。
这个想法的诞生是为了简单地将驱动器作为一组扇区来处理。 SCSI 已经有一段时间了,最初使用 21 位 LBA,但后来转向 32 位 LBA,但 PC 已经彻底陷入 CHS 阵营,即使22 位 LBA 甚至在原始 IDE 标准中也是一个选项追溯到1980 年代中期。这是 LBA,或逻辑块寻址。出于我们的目的,相关的初始标准化 LBA 模式是 LBA-28,它允许寻址 128 GiB 的 512 字节扇区;在ATA-6 中,它被 LBA-48 取代。所有现代(大多数 1996 年后) 驱动器是 LBA,并且操作系统知道驱动器能够具有 512 字节或 4096 字节扇区。当操作系统的磁盘驱动程序需要一定数量的数据时,它会发出对扇区号 N 或区间扇区号 M 到 N 的读取请求。然后物理驱动器可以自由地将其转换为它使用的任何内部几何结构,无论通过什么方式它选择使用。这包括映射到物理盘片或芯片,以及其中的位置,以及透明的扇区重新映射。操作系统永远不需要知道或关心这些细节。这就是为什么您可以插入 SSD 并且它可以正常工作,尽管柱面、磁头和扇区的整个概念对于固态存储完全没有意义。我们目前使用 48 位 LBA 寻址,它允许寻址 2^48(大约 3*10^14)个扇区。具有 512 字节扇区,可寻址 128 PiB;转向 4,096 字节扇区在理论上已将其进一步提高到 1 EiB,尽管这可能需要更改设备通信协议。即便如此,128 PiB 远远超出了当前技术实际可行的范围,至少在不久的将来这不太可能成为问题。(你需要大约 20,000 个新奇的 6 TB 驱动器全部条带化到一个阵列中才能接近。)
现代驱动器还公开 SMART 自我监控数据,因此如果操作系统或应用程序确实关心,它可以找出一些关于正在发生的事情,例如扇区重新映射。但是操作系统不需要查看这些信息,因为(理论上,无论如何)它都是由驱动器内部处理的。
归档时间: |
|
查看次数: |
3276 次 |
最近记录: |