一度使い出したらその便利さに抜け出せなくZFS。ZFSの提供するさまざまな機能を使わなくても基本的な使い方だけでも便利なものですが、運用するうえでいくつか知っておくと便利なこともあります。数回だけ、そんなティップスを紹介していきます。
- Do zdb for ZFS recovery
ZFSは壊れにくいファイルシステムだと言われてはいますが、何らかの原因で壊れることもあります。スクラブで直らない場合にはzdb(1M)で直すのが順当な修正方法となります。ただし、zdb(1M)はそもそもZFSの開発者が利用するために提供されているものなので、ドキュメントもありませんし、動作の詳細を知りたい場合にはソースコードを読む必要があります。
今回は実際にzdb(1M)を使って問題を修正する方法を紹介します。まず、もし今回のコマンドが実行できない場合、次のようにリンクを作成してから作業を開始します。
基本的に、カーネルがパニックするような問題は次のように「zdb -AAA -e プール」と実行することで修正を実施します。この指定でアサーションを無視するとともに、パニックを引き起こすタイプの問題を修正するようになります。
「-AAA」はすべての処理を実施しようとします。通常は次のようにデータブロックとメタデータプロック、メタラベル、ブロック統計データあたりをチェックするようにするだけで十分でしょう。
「zdb -AAA -e プール」や「zdb -cc -b -m -e プール」などで問題が解決しない場合、簡単には修正できない問題か、別のところに原因がある可能性があります。これ以上深追いはせずに、別のプールを用意したりバックアップから復旧させる、または先に紹介したアドホックな解決方法を併用するなどして別の方向から解決を試みたほうが良いといえます。