位损坏-随着时间的推移,随机事件(如电磁感应和宇宙射线)可能会导致存储在磁盘上的位发生翻转。这些事件相对少见,但是通常足以导致大系统或长时间运行的系统出现潜在的数据损坏。
误导的读取或写入-固件错误或硬件故障可以导致整个块的读取或写入引用磁盘上的不正确位置。这些错误通常是瞬态的,尽管大量此类错误可能指示驱动器有故障。
管理员错误-管理员可能无意中用错误的数据覆写了部分磁盘(如在部分磁盘上复制 /dev/zero),从而导致磁盘上出现永久性损坏。这些错误始终是瞬态的。
临时故障-磁盘可能在某段时间内变得不可用,从而导致 I/O 失败。此情况通常与网络连接设备相关联,尽管本地磁盘也可能遇到临时故障。这些错误可能是也可能不是瞬态的。
劣质或不可靠的硬件–这种情况涵盖故障硬件表现出来的所有各种问题,包括一致的 I/O 错误、故障传输导致随机损坏或任何数量的故障。这些错误通常是永久性的。
脱机的设备-如果设备处于脱机状态,则假定是管理员因该设备有故障而将它置于此状态。将设备置于此状态的管理员可以确定此假定是否正确。
准确确定设备的问题可能是一个很困难的过程。第一步是检查 zpool status 输出中的错误计数。例如:
# zpool status -v tpool pool: tpool state: ONLINE status: One or more devices has experienced an error resulting in data corruption. Applications may be affected. action: Restore the file in question if possible. Otherwise restore the entire pool from backup. see: http://www.sun.com/msg/ZFS-8000-8A scrub: scrub completed after 0h0m with 2 errors on Tue Jul 13 11:08:37 2010 config: NAME STATE READ WRITE CKSUM tpool ONLINE 2 0 0 c1t1d0 ONLINE 2 0 0 c1t3d0 ONLINE 0 0 0 errors: Permanent errors have been detected in the following files: /tpool/words |
错误分为 I/O 错误与校验和错误,这两种错误都指示可能的故障类型。典型操作可预知的错误数非常少(在很长一段时间内只能预知几个错误)。如果看到大量的错误,则此情况可能指示即将出现或已出现设备故障。然而,管理员错误也可能导致错误计数较大。另一信息源是 syslog 系统日志。如果日志显示大量的 SCSI 或光纤通道驱动程序消息,则此情况可能指示出现了严重的硬件问题。如果未生成 syslog 消息,则损坏很可能是瞬态的。
目的是回答以下问题:
此设备上是否可能出现另一错误?
仅出现一次的错误被认为是瞬态的,不指示存在潜在的故障。其持久性或严重性足以指明潜在硬件故障的错误被认为是致命的。由于确定错误类型的行为已超出当前可用于 ZFS 的任何自动化软件的功能范围,因此如此多的操作必须由您(即管理员)手动执行。在确定后,可以执行相应的操作。清除瞬态错误,或者替换出现致命错误的设备。以下几节将介绍这些修复过程。
即使设备错误被认为是瞬态的,仍然可能导致池中出现了无法更正的数据错误。这些错误需要特殊的修复过程,即使认为底层设备运行状况良好或已进行修复也是如此。有关修复数据错误的更多信息,请参见修复损坏的数据。