D.9 谬误与陷阱
谬误:组件会迅速失效并停止工作
不少容错文献采用简化假设:组件一直完美运行,直到潜在错误激活,随后发生失效并停止工作。
Tertiary Disk 的经历恰好相反。许多组件在彻底失效很久之前就开始表现异常,通常须由操作员判断是否宣布它已失效。组件一般会继续违反服务约定,直到被操作员“终止”。
图 D.20 展示四个最终被停用的磁盘,在更换前多久开始异常。
| 失效磁盘的系统日志消息 | 日志条数 | 持续时间(小时) |
|---|---|---|
硬件失效:现场可更换单元的外围设备写故障。原文 Hardware Failure (Peripheral device write fault [for] Field Replaceable Unit) | 1763 | 186 |
未就绪:诊断失败,ASCQ 为现场可更换单元的组件 ID。原文 Not Ready (Diagnostic failure: ASCQ = Component ID [of] Field Replaceable Unit) | 1460 | 90 |
已恢复错误:现场可更换单元超过失效预测阈值。原文 Recovered Error (Failure Prediction Threshold Exceeded [for] Field Replaceable Unit) | 1313 | 5 |
已恢复错误:现场可更换单元超过失效预测阈值。原文 Recovered Error (Failure Prediction Threshold Exceeded [for] Field Replaceable Unit) | 431 | 17 |
谬误:计算机系统确如广告所言,达到 99.999% 的“五个九”可用性
服务器公司的市场部门开始夸耀硬件可用性,宣称图 D.21 中 99.999% 的等级,即“五个九”;甚至操作系统公司的市场部门也试图让人有这种印象。
| 每年不可用时间(分钟) | 可用性 | 可用性等级(九的个数) |
|---|---|---|
| 50,000 | 90% | 1 |
| 5000 | 99% | 2 |
| 500 | 99.9% | 3 |
| 50 | 99.99% | 4 |
| 5 | 99.999% | 5 |
| 0.5 | 99.9999% | 6 |
| 0.05 | 99.99999% | 7 |
每年只中断五分钟当然令人印象深刻,但考虑调查中的实际失效数据,很难相信。例如 HP 声称,HP-9000 硬件与 HP-UX 能在“某些预先定义、预先测试的客户环境中”保证 99.999% 可用性[Hewlett-Packard 1998]。保证不包括操作员、应用和环境故障,而这些很可能已是主要故障类别;也不包括计划停机。系统未达承诺时,厂商承担什么经济处罚,同样不清楚。
Microsoft 也开展“五个九”营销。2001 年 1 月,www.microsoft.com 停机 22 小时;要把该网站可用性提高到 99.999%,此后 250 年都必须没有停机。
与宣传暗示不同,管理良好的服务器通常达到 99%–99.9% 可用性。
陷阱:功能实现在哪一层,会影响可靠性
理论上,把 RAID 放进软件没有问题;实践中,让它可靠运行却很难。
软件文化通常依赖连续版本与补丁,最终逐步达到正确;软件也难与其他层隔离。例如,正常运行往往依赖恰当的操作系统版本和补丁。因此,许多客户因软件 RAID 的缺陷或环境不兼容而丢失数据。
硬件当然也会有缺陷,但硬件文化通常更重视初始发布前的正确性测试;硬件也更可能独立于操作系统版本。
谬误:操作系统最适合调度磁盘访问
ATA、SCSI 等高层接口向主机操作系统提供逻辑块地址。基于这种抽象,OS 最多只能尝试按逻辑地址递增排序。只有磁盘知道逻辑地址如何映射到扇区、磁道与盘面的物理几何,因而能降低旋转和寻道延迟。
例如有以下四次读取[Anderson 2003]:
| 操作 | 起始 LBA | 长度 |
|---|---|---|
| 读 | 724 | 8 |
| 读 | 100 | 16 |
| 读 | 9987 | 1 |
| 读 | 26 | 128 |
主机可能按逻辑块顺序重排:
| 操作 | 起始 LBA | 长度 |
|---|---|---|
| 读 | 26 | 128 |
| 读 | 100 | 16 |
| 读 | 724 | 8 |
| 读 | 9987 | 1 |
取决于数据实际位置,重排反而会恶化性能,如图 D.22。磁盘自行调度只需转 3/4 周,OS 调度却要三周。

谬误:系统中磁盘的平均寻道时间,等于跨越三分之一柱面数的寻道时间
这一误解把厂商销售磁盘时的指标与预期实际性能混为一谈,还错误地假定寻道时间与距离成正比。“三分之一距离”的经验规则,是在磁道很多、排除当前磁道的条件下,从一个随机位置到另一个随机位置的平均距离。过去厂商公布这一距离的寻道时间,便于一致比较;现在则计时全部寻道,再除以次数,计算“平均值”。若错误地认为寻道时间线性依赖距离,可用厂商公布的最短与“平均”时间作如下常见估计:
这个谬误有两层。首先,寻道时间并不与距离线性相关。磁臂必须克服惯性加速,达到最大移动速度,在接近目标时减速,再等待振动停止,即稳定时间。有时还须暂停以控制振动。对于超过 200 个柱面的磁盘,Chen 和 Lee[1995]采用模型:
针对每种盘选择 ,使公式吻合距离为 1、最大距离、最大距离三分之一时的标称时间。图 D.23 比较该式与错误的线性公式;平方根项体现了加减速。
第二,规格中的平均值只有在磁盘活动没有局部性时才适用。幸运的是,磁盘访问既有时间局部性,也有空间局部性(见附录 B 第 B-2 页)。图 D.24 是 UNIX 分时与业务处理两种负载的寻道距离样本。注意两者都有很高比例访问同一柱面,即图中距离 0。可见这个谬误极具误导性。

图内参数公式转写如下,其中 表示柱面数:
