现代硬盘的物理结构对上层软件而言几乎是不可见的。操作系统看到的只是一段连续的逻辑块地址(LBA),而磁道、扇区、盘面、磁头切换等物理特性被硬盘控制器隐藏。这种抽象带来了兼容性,却也阻碍了需要了解物理布局的性能优化场景。通过精确计时的微基准测试,我们可以在不打开硬盘的情况下逆向推算出硬盘的几何结构 —— 包括转速、每磁道扇区数、磁道偏斜、磁头数量以及缺陷分布。本文将详细阐述这一过程的原理与可落地参数。
延迟剖面分析的基本原理
微基准测试的核心工具是测量两个扇区读取之间的时间间隔。假设我们从扇区 A 读取后再读取扇区 B,这一访问时间由三部分组成:磁头寻道时间、旋转延迟(等待目标扇区旋转到磁头下方)以及实际的扇区读取时间。由于磁盘以固定角速度旋转,访问时间与两个扇区之间的角度差存在确定性关系。具体而言,访问时间等于磁盘转动该角度所需的时间,加上零或若干整圈。这一关键观察使得我们可以通过测量时间间隔来精确推算任意两个扇区之间的角位置,精度可达几微秒(约 0.1 度)。
这一基础工具可以构建出多种测量能力。通过重复读取同一扇区并测量返回时间,可以验证磁盘缓存是否已关闭并推算转速 —— 若缓存关闭,每次读取恰好花费一个磁盘转动周期。通过测量两个扇区之间的时间差(对转动周期取模),可以获得第二个扇区相对于第一个扇区的角位置。进而可以绘制出磁盘上每个扇区的角位置图,从而识别磁道边界和磁道偏斜。
关键测量参数与阈值
在实际工程中,以下参数是可以通过微基准测试获取的:
转速(RPM)测量:通过反复读取同一扇区(如扇区 0),测量相邻两次读取之间的平均时间间隔。对于 7200 RPM 的硬盘,单圈时间约为 8.33 毫秒;15000 RPM 的硬盘约为 4 毫秒。测量精度应优于 0.1 毫秒才能可靠区分不同转速的硬盘。建议采样次数不少于 100 次以消除计时噪声。
角位置测量精度:理论上可达几微秒,对应约 0.1 度的角分辨率。实际应用中,考虑到操作系统调度和磁盘控制器的随机延迟,建议将目标标准误差设置为 5 至 10 微秒。测量时间与所需精度呈反比 —— 将标准误差从 10 微秒降至 1 微秒需要约 100 倍的采样时间。
寻道时间获取:通过在被访问磁道上搜索具有最小访问时间的扇区来近似寻道时间。该扇区的旋转延迟接近于零,因此访问时间约等于寻道时间(包括磁头 settling 时间)。对于 7200 RPM 的桌面硬盘,全行程寻道时间通常在 15 至 25 毫秒之间;短距离寻道(1 至 3 个磁道)约为 1 至 3 毫秒;相邻磁道寻道通常需要 0.5 至 1 毫秒。
磁道边界检测:基于磁道偏斜检测。当跨磁道访问时,角位置会出现突变 —— 两个相邻扇区之间的角距离突然增大。该突变的角度即为磁道偏斜。典型磁道偏斜范围为 6% 至 36% 的转动周期(约 20 度至 130 度)。对于 5400 RPM 硬盘,偏斜通常在 30 度至 60 度之间;对于 15000 RPM 服务器硬盘,偏斜通常在 20 度至 25 度之间。
缺陷扇区识别:缺陷扇区会导致磁道实际容量小于预期。在角位置图中,缺陷区域表现为扇区缺失形成的 “孔洞”。扇区缺陷通常在磁盘的特定物理位置成群出现,忽略逻辑磁道编号的影响。
从时序数据到几何重构
获取原始时序数据后,需要通过算法重构几何结构。首先,从访问时间数据中提取每个磁道的最小访问时间,绘制寻道曲线。寻道曲线显示了从参考位置到每个磁道的寻道时间。由于更长的物理移动距离通常需要更长时间,寻道曲线可以反映磁道的物理径向位置 —— 外圈磁道寻道时间较短,内圈磁道寻道时间较长。
将寻道曲线与磁道尺寸数据结合分析,可以识别磁道布局类型。传统硬盘使用 “磁头优先” 布局,即在同一圆柱面上切换多个磁头后再移动到下一个磁道;而现代硬盘(约 2000 年后)普遍采用 “磁道优先” 布局,即在同一盘面上连续寻道数百至数千个磁道后才切换磁头。这种变化使得经典的 Skippy 算法失效,因为该算法假设磁头优先布局。通过分析寻道曲线中的不规则性 —— 例如外圈磁道突然出现较长的寻道时间 —— 可以推断磁头切换的位置,从而计算出盘面数量。
对于使用相同磁道尺寸的所有盘面的硬盘(如东芝 X300),磁道尺寸曲线呈单调递减;但对于不同盘面使用不同磁道尺寸的硬盘(如西部数据 S25),磁道尺寸曲线会呈现与布局相关的波动。通过综合分析寻道曲线和磁道尺寸曲线,可以确定磁道布局的具体类型 —— 前进式、前瞻式、交替式或混合式。
实践中的工程参数
以下是在实际实现微基准测试时应考虑的工程参数:
测量超时设置:单次扇区读取的超时应设置为被测硬盘最大访问时间的两倍以上。对于 15K RPM 服务器硬盘,建议设置 40 毫秒超时;对于 5400 RPM 笔记本硬盘,建议设置 60 毫秒超时。
缓存禁用:所有测量必须禁用磁盘缓存。ATA 命令为SET FEATURES禁用写入缓存,CACHING功能集禁用读取预取。对于无法完全禁用缓存的硬盘(如某些 Maxtor 旧型号),可以交替读取两个不同扇区来规避缓存命中。
采样策略:为平衡精度与耗时,建议采用自适应采样 —— 初始采样次数较少,当标准误差超过阈值时增加采样次数。角位置测量的典型阈值为 10 微秒;访问时间测量的典型阈值为 30 微秒。
数据处理量:完整的磁盘几何分析需要读取大量扇区。对于 1 TB 硬盘,全面分析可能需要数小时。可以通过分区采样来加速 —— 例如仅分析外圈、内圈和中部各一个区域,然后根据区域变化规律推断全局。
局限性与边界条件
微基准测试方法存在若干局限。首先,某些旧硬盘(如使用步进电机的 ST-157A)磁道偏斜为零或 360 度,使得基于偏斜检测的磁道边界算法失效。其次,当磁盘区域存在大量缺陷扇区时,磁道尺寸会剧烈变化,算法可能将缺陷区域误判为磁道偏斜。第三,部分硬盘的寻道时间存在异常 —— 某些区域的寻道可能额外多花费一圈转动周期。最后,极少数现代硬盘使用双磁头堆栈架构,超出了当前算法的假设范围。
对于短划 stroke 优化(即仅使用磁盘外圈区域以减少寻道距离),实测数据显示效果有限。以三星 SpinPoint F3 为例,将可用区域减半仅使随机 IOPS 提升约 20%;将可用区域减至 10% 可提升 55%。这是因为即使是短距离寻道,仍需要足够的加速和减速时间,访问时间的主要部分并不随寻道距离线性减少。
小结
通过精确计时扇区读取操作,我们可以从黑盒硬盘中提取丰富的物理几何信息。核心方法是对访问时间进行延迟剖面分析,从中分离出旋转延迟和寻道时间分量,进而推算出角位置、磁道边界、磁道偏斜和寻道曲线。组合这些信息即可推断磁道布局、盘面数量乃至缺陷分布。实际工程中建议采用 10 微秒级的计时精度、30 毫秒级的超时设置,并根据硬盘容量预期数小时的分析时间。虽然该方法在缺陷密集区域和特殊架构硬盘上存在局限,但对于绝大多数现代硬盘 —— 尤其是采用 zone bit recording 和 seek-first 布局的型号 —— 都能获得可靠的物理几何参数。
资料来源:Henry Wong, "Discovering Hard Disk Physical Geometry through Microbenchmarking", September 2019, blog.stuffedcow.net