zfs の resilver が繰り返した時の対処方法2016年03月17日 10時59分48秒

先日の USB 端子が抜けた時に zfs を壊したようだ。ZFS が何度も resilver を起動し直すが、途中で終了し再開してしまう。まさに無限ループの状態。今回は、破壊されたファイルに相当する。現在利用中の OS は FreeBSD 10.2-RELEASE と FreeBSD 11-CURRENT だ。

再起動したりして、OS や resilver をやり直すと、エラーのあるファイルが表示されなくなるようだ。ファイルが破損していると、zpool status -v で破損しているデータが表示される。これをメモを取るなり、ファイルに書き出すなりをしておいた方がいい。

errors: Permanent errors have been detected in the following files:
にて表示されると破損済みで、修復は不可能な模様。バックアップから復帰するのみだ。

この表示を見た後に、ディスクが反応していない、OS が反応していないなどの理由で強制再起動をかけると、次回の resilver が破損したファイルを正しく見付けられず、そして、resilver の繰り返しに陥るみたいだ。

このままにしておくと ZFS 自体は一応使えるが、ディスクは resilver が掛かりっぱなし。結局のところ、これを止めるにはファイルを削除するしかないようだ。

スナップショットも痛んだようで、更新分をバックアップに移動。zfs destroy で一時的に削除し、バックアップから戻すことを繰り返えした。これで、一部の問題部分が削除されるので、resilver の進行度が以前よりも進むようになっている。まだ少し壊れているファイルがあるようで、また resilver が掛かっているところだ。