heads-up
一度使い出したらその便利さに抜け出せなくZFS。ZFSの提供するさまざまな機能を使わなくても基本的な使い方だけでも便利なものですが、
- Do exclusive tar for ZFS rescue
ZFSは壊れにくいファイルシステムだと言われてはいますが、
なんらかの原因で壊れることもあります。スクラブで直らない場合にはzdb(1M)で直すのが順当な修正方法となります。 パニック時のメッセージを見て、
もしそれが 「panic: solaris assert: BSWAP_ 32(sa_ hdr_ phys->sa_ magic) == SA_ MAGIC, file: /usr/ src/ sys/ modules/ zfs/ ../ ../ cddl/ contrib/ opensolaris/ uts/ common/ fs/ zfs/ sa. c, line: 1261」 のようにSA回りの問題である場合、 次のようにパニックを引き起こすファイルやディレクトリ以外のすべてのデータを新しいデータセット (この場合は/parhto/ srcがパニックを起こすファイルやディレクトリを含んだデータセットで、 /pathto/ dstが新しく作った空のデータセット) に対して、 tarでまるまるコピーしてしまうという方法で対処することもできます。 このケースだと、
ls -lやcatなどでデータにアクセスした瞬間にカーネルがパニックするので、 tarの-exclude指定で、 そのファイルやディレクトリ以外をコピーするところがポイントとなります。パニックを引き起こすファイルはバックアップであったり別の場所から調達して復活させます。コピーが完了したら/pathto/ srcのデータセットはアンマウントして放置しておくか、 不要であればdestoryします。 zdb(1M)を使わない方法としては、
この方法がわかりやすい解決方法ではありますが、 パニックメッセージやクラッシュダンプ、 ソースコードを追うなどして何が問題になっているのかをある程度突き止める必要があるので、 それなりのスキルが必要という面もあります。