ZFSにはデータの整合性が保たれているか確認するコマンドがある。zpool scrubコマンドがそれだ。
RAIDZボリュームに対してscrub処理をすると、もしもデータに欠損があった場合パリティを元にデータが再計算され、復元されるようになっている。
通常のRAID 5と同様、ディスクの数が足りなかった場合データの復元は不可能になり、失われてしまう。
今回scrub結果を見ると
# zpool status pool: zhome 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 10h19m with 174 errors on Tue Sep 20 16:48:02 2011 (中略) errors: 174 data errors, use '-v' for a list
と表示された。これはまずい。慌てて
# zpool status -v
とすると
errors: Permanent errors have been detected in the following files: /home/なんたらかんたら1 /home/なんたらかんたら2
という形で、8個のファイルが壊れているということがわかった。
ところで不可解なのは、174個エラーがあったのに壊れたファイルは5つしかなかったということだ。ひとつのファイルの中に複数のエラーがあったのだろうか。それとも実体ファイルではないメタデータにもエラーがあるが表示されないということだろうか。まさかどのファイルが壊れたかもわからない、それが169個あるということではなかろうな?
とにかく、動作の怪しいハードディスクを置き換えていくことが急務だ。