微基准测试揭秘硬盘物理几何结构:45MB 到 5TB 硬盘多方面测量分析
通过微基准测试发现硬盘的物理几何结构现代硬盘能在很小的空间内存储大量数据至今仍是大容量但非高性能存储的默认选择。硬盘自 20 世纪 50 年代就已出现目前常见的 3.5 英寸规格实际宽度为 4 英寸于 20 世纪 80 年代初问世。从那时起3.5 英寸硬盘的容量增加了约 106 倍从 10 MB 增至约 10 TB顺序吞吐量提高了约 103 倍访问时间缩短了约 101 倍。尽管通过可移动磁头栈访问旋转磁盘的基本原理没有改变但为了提高存储密度和性能硬盘变得更加复杂。早期硬盘有数千个扇区排列在数百个同心磁道上而现在的硬盘则有数十亿个扇区其中包含数千个坏扇区分布在数十纳米间距的数十万个磁道上。除了高层次的性能吞吐量和寻道时间测量外还可以通过微基准测试来表征硬盘的哪些特性呢最初的目标是在不打开硬盘的情况下检测磁盘的盘片数量但在现代硬盘中这个看似简单的任务需要先测量其他几个属性才能推断出记录面的数量。过去已经有人对硬盘驱动器的几何结构进行过表征使用的算法与之并无太大差异。然而旧算法的许多假设在现代硬盘上已不再成立。例如Skippy 算法一种用于测量盘面数量、柱面切换时间和磁头切换时间的快速算法在现代硬盘上已不再适用因为该算法假设磁道在多个盘片上采用特定的排列顺序而现代硬盘已不再使用这种顺序。硬盘将数据存储在一个或多个旋转磁盘的堆叠中。数据以同心磁道的形式写入。一组读写磁头在磁盘上径向移动将磁头定位到所需的磁道上。通常每个盘片有两个磁头每个面一个整个磁头组作为一个整体一起移动。读取数据时先将磁头移动到所需磁道寻道等待所需数据的起始位置旋转到磁头下方然后继续顺序读取直到读取完所有请求的数据或者到达磁道末尾此时需要将磁头移动到下一个磁道。硬盘的“几何结构”描述了数据如何排列在盘片、磁道和扇区中。过去这通常用三个数字来描述柱面从外到内的同心环数量、磁头记录面的数量即每个柱面的磁道数量和每个磁道的扇区数这就是著名的 CHS 缩写。硬盘的扇区容量就是 C×H×S。如今C 和 S 是可变的只有 H 仍然保持不变。每个记录面的磁道数量不一定相同每个磁道的扇区数也会因磁盘位置而异外圈较长的磁道比内圈磁道包含更多扇区。本文介绍了几种微基准测试方法旨在提取硬盘的物理几何结构以及其他一些相关测量值。这些测量包括旋转周期、每个扇区的物理位置角度和半径、磁道边界、磁道偏移、寻道时间以及对坏扇区的一些观察。使用这些微基准测试对从 45 MB1989 年到 5 TB2015 年的各种硬盘进行了表征。本文未尝试对其他重要性能方面如缓存进行表征。文章接下来首先介绍硬盘几何结构的背景知识然后描述微基准测试的集合从基本的读取访问时间测量开始逐步构建更复杂的算法。文章的第二部分展示了对 17 块测试硬盘的微基准测试结果。总结背景硬盘由旋转磁盘和磁头组组成。数据排列在记录面每个盘片有两个面、磁道和扇区上。2000 年以后的硬盘基本不再有“柱面”的概念。可测量内容通过对特定扇区读取序列进行计时可以测量硬盘的转速RPM、每个扇区的角位置和寻道时间。这些基本测量方法可用于确定磁道边界、磁道在表面上的排列方式以及记录面的数量。访问时间在测试的硬盘中进行一次全行程寻道需要 1.3 到 3.6 转。磁头加速缓慢在第一转中可访问的磁道非常少。短行程寻道对减少寻道时间的效果有限因为即使是短距离寻道也需要相对较长的时间。寻道时间的测量并不简单。寻道时间图可用于观察声学管理AAM。AAM 会减慢长距离寻道速度以降低噪音但不会影响短距离寻道。可以通过在磁盘上搜索磁道偏移来找到磁道边界。较新的硬盘在每个表面上使用不同的密度磁道大小。了解磁道数量和大小后可以估算磁道密度和位密度。在测试的最新硬盘中平均磁道间距为 80 nm平均位长为 17 nm。结合寻道曲线和磁道大小通常可以揭示磁道布局。磁道布局有很大的多样性。旧硬盘采用“柱面”布局而新硬盘在切换磁头之前会先访问一组相邻的磁道。可以利用磁道边界信息测量磁道偏移。磁道偏移有多种类型。柱面、蛇形或区域变化时的偏移通常比相邻磁道之间的偏移更大。磁道偏移通常在硬盘的整个过程中保持恒定但在 Maxtor 7405AV 硬盘上并非如此。磁道偏移在每个记录面上通常是相同的但在 Seagate ST1 硬盘上并非如此。结合上述方法可以发现并可视化坏扇区。大多数磁盘都有坏扇区的空洞有些甚至会跳过整个磁道。微基准测试颇具挑战。尽管付出了很多努力但算法仍无法在所有硬盘上完美运行。第 2 页展示了 17 种硬盘型号从 45 MB 到 5 TB的测量结果。背景硬盘几何结构从软件的角度来看硬盘就像一大块扇区传统上每个扇区为 512 字节现在为 4096 字节软件对扇区的物理位置了解甚少。例如一个 300 GB 的硬盘可能有 585,937,500 个 512 字节的扇区编号从 0 到 585,937,499。早期的一些硬盘接口要求主机计算机上的驱动器控制器了解磁盘的物理布局。集成驱动电子设备IDE20 世纪 80 年代中期硬盘最终将磁盘控制器集成到了驱动器中。集成磁盘控制器将逻辑软件可见扇区号转换为物理位置为计算机提供了一个简单的扇区块接口同时允许更复杂的物理布局。不幸的是出于软件兼容性的原因扇区号在很长一段时间内仍然被编码为 CHS 三元组直到逻辑块寻址LBA将扇区号编码为一个数字变得流行起来。虽然在逻辑上硬盘只是一大块扇区但扇区、磁道和磁头或记录面在物理上仍然存在只是软件很难了解它们。本节将对这些物理特征进行一些基本定义。扇区数据以大小相等的块形式存储。扇区是可以对磁盘进行读写的最小数据单位。自 20 世纪 80 年代以来512 字节的扇区一直是标准而新硬盘约 2011 年之后使用 4096 字节的扇区标记为高级格式。扇区还有额外的元数据也会写入磁盘表面如扇区号和纠错码。在使用嵌入式伺服的驱动器所有非古老的驱动器上磁盘上还有伺服模式用于定位磁盘磁头。所有这些都会占用磁盘表面的空间但对主机是不可见的。磁道磁道是磁盘表面上沿磁盘旋转一周排列的连续扇区组成的圆圈。在磁道内读取扇区时磁头会随着磁盘旋转沿着磁道移动。跨越磁道边界需要将磁盘磁头移动到下一个磁道磁道间寻道或者切换到不同的磁头以读取不同磁盘表面上的磁道磁头切换。在区域位记录之前磁盘上的每个磁道大小扇区数量都是相同的。区域位记录将更多扇区存储在物理上更长的外圈磁道中而内圈磁道存储的扇区较少。由于每旋转一周读取一个磁道无论长度如何硬盘在靠近驱动器开头的位置具有更高的吞吐量。磁道大小在不同记录面之间也可能不同因为即使在同一个驱动器内记录面和磁头的质量也会有所差异。硬盘如软盘使用同心圆形磁道而 CD 和 DVD 使用单个螺旋磁道。柱面柱面是多个表面上位于相同半径处的磁道集合。在旧硬盘中不同表面上的磁道是对齐的因此访问同一柱面内的磁道只需要切换磁头而不需要移动磁头。在现代硬盘中柱面的概念已经不再有意义。随着磁道密度的增加不同记录面上的磁道无法很好地对齐以形成柱面并且磁头切换所需的磁头移动比移动到同一表面上的相邻磁道更大这使得磁头切换比移动到相邻磁道更慢。区域由于外圈磁道在物理上更长因此可以比内圈磁道存储更多的扇区。为了简化相邻磁道被分组到区域中每个区域内的每个磁道大小每个磁道的扇区数量相同。区域位记录形成了我们熟悉的吞吐量曲线外圈磁道的吞吐量高于内圈磁道吞吐量以离散的步骤下降。传统上区域被认为是柱面的组其中区域内所有表面上的所有磁道大小相同。由于现代硬盘上的磁道大小在不同记录面之间可能不同因此在现代硬盘中将区域视为同一记录面上相邻磁道的组更为合理。磁道偏移顺序访问时磁头会在一圈内读取一个磁道然后移动到下一个磁道再进行下一圈的读取。如果所有磁道的起始角度位置相同那么移动到下一个磁道所需的非零时间会导致磁头到达时错过下一个磁道的开头从而浪费近一整圈。为了缓解这个问题每个磁道会有一定的偏移使其起始位置比前一个磁道稍晚以便磁盘磁头有足够的时间从上个磁道的末尾移动到下个磁道的开头在下个磁道的第一个扇区到达磁头下方之前完成移动。通过适当选择磁道偏移磁道之间只需要浪费一小部分旋转时间。测试的硬盘的偏移范围为旋转的 6% 到 36%这意味着顺序访问实际上有 74 - 94% 的时间用于实际读取数据。磁道布局如果硬盘只有一个记录面有两种合理的方式将磁道排列在表面上从外到内或从内到外。当硬盘有多个记录面时将磁道排列在表面上的方式就更多了。之前的研究已经为其中一些排列方式命名但实际中还有更多常见的布局。将尝试扩展分类法以涵盖更多常见布局。在磁盘外径上放置第一个磁道后有两种明显的策略来放置后续磁道。后续磁道可以先放置在相同半径柱面的不同记录面上然后再寻道到下一个半径或者可以先在同一记录面上放置一组磁道然后再切换表面。传统上旧硬盘切换磁头比移动磁头快因此选择了第一种选项。在较新的硬盘中磁头切换比寻道到相邻磁道慢因此在移动到下一个表面之前会在同一表面上放置一组连续的磁道。这种选择导致了两种磁道布局类型称为“先磁头”寻道前多次磁头切换和“先寻道”磁头切换前多次寻道布局。常见的“先磁头”布局有两种。一种布局是每个柱面按相同顺序循环遍历所有表面正向也称为传统布局另一种是每个柱面反转表面顺序交替也称为柱面蛇形布局。对称地也有两种类似的布局是从内到外排列柱面但尚未见过使用这种布局的硬盘。“先寻道”磁道布局会在切换磁头之前先在同一表面上排列一组磁道。组的大小通常远小于整个表面通常为数百到数千个磁道并且组的大小通常相当规则。这组磁道有时也被称为蛇形布局。由于使用了蛇形布局常见的“先寻道”布局有四种。首先蛇形布局内的磁道可以始终从外到