FreeBSD Daily Topics
2011年9月16日 ZFS活用シリーズ - scrubで直らない問題の修正(アドホック版)
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でまるまるコピーしてしまうという方法で対処することもできます。 (cd /pathto/
src && tar --exclude pattern -cpf - .) | \ (cd /pathto/ dst && tar xpvf -) このケースだと,
ls -lやcatなどでデータにアクセスした瞬間にカーネルがパニックするので, tarの-exclude指定で, そのファイルやディレクトリ以外をコピーするところがポイントとなります。パニックを引き起こすファイルはバックアップであったり別の場所から調達して復活させます。コピーが完了したら/pathto/ srcのデータセットはアンマウントして放置しておくか, 不要であればdestoryします。 zdb(1M)を使わない方法としては,
この方法がわかりやすい解決方法ではありますが, パニックメッセージやクラッシュダンプ, ソースコードを追うなどして何が問題になっているのかをある程度突き止める必要があるので, それなりのスキルが必要という面もあります。
バックナンバー
FreeBSD Daily Topics
- 2011年9月30日 FreeBSD 1.x系とFreeBSD 10.x系ダブルディジット問題について
- 2011年9月29日 FreeBSD 9.0-BETA3登場
- 2011年9月28日 FreeBSD 10.0-CURRENT登場,ベータ版は3の登場間もなく
- 2011年9月27日 ZFS活用シリーズ - より詳しい情報と説明
- 2011年9月22日 ZFS活用シリーズ - scrubで直らない問題の修正(zdb - 修復編)
- 2011年9月21日 ZFS活用シリーズ - scrubで直らない問題の修正(zdb - 状況調査編)
- 2011年9月20日 ZFS活用シリーズ - scrubで直らない問題の修正(zdb版)
- 2011年9月16日 ZFS活用シリーズ - scrubで直らない問題の修正(アドホック版)
- 2011年9月15日 ZFS活用シリーズ - scrubを使う
- 2011年9月14日 Capsicumを知る - 積極的なセキュリティ強化