zfsトラブル

急に応答がなくなったので、リセットかけたらカーネルパニックと来た。取りあえずリードオンリーでマウントできるまでは復旧したのでその記録。
取りあえず、シングルユーザーモードで起動させる。GRUBの選択画面でエディットモードに入って起動オプションに"-s"をつけて起動。

起動中にやはりカーネルパニック。取りあえずディスクアレイ取り外し。

何の問題もなく起動したので内蔵のみで構成されているrpoolは無事。tankがまずいみたい。この状態でディスクアレイを繋げるとすぐに認識して自動的にtankを復旧させようとしてカーネルパニック。よって取りあえずexport。

exportしているのでディスクアレイをつなげても、自動復旧はかからない。次のコマンドは問題なく終了。

# zdb -d -e tank                                                   
Dataset tank [ZPL], ID 16, cr_txg 1, 38.6K, 9 objects

しかしながら次のコマンドはコアダンプする。

# zdb -b -e tank

Traversing all blocks to verify nothing leaked ...
error: zfs: freeing free segment (offset=1168830076928 size=3072)
Abort (コアダンプ)

取りあえず一度scrubをかけるべく次のコマンドを実行するも状況変わらず。

# zdb -AAA -e tank

...省略...
Traversing all blocks to verify nothing leaked ...
WARNING: zfs: freeing free segment (offset=1168830076928 size=3072)
WARNING: zfs: freeing free segment (offset=1168830071808 size=2048)
WARNING: zfs: freeing free segment (offset=1193191384064 size=14336)
WARNING: zfs: freeing free segment (offset=2204444383232 size=14336)
WARNING: zfs: freeing free segment (offset=2210434022400 size=2048)
WARNING: zfs: freeing free segment (offset=2210434027520 size=3072)
WARNING: zfs: allocating allocated segment(offset=2817498546176 size=512)
WARNING: zfs: allocating allocated segment(offset=2817498546176 size=512)
WARNING: zfs: allocating allocated segment(offset=2817498546176 size=512)
WARNING: zfs: allocating allocated segment(offset=2817498546176 size=512)
WARNING: zfs: allocating allocated segment(offset=2817498546176 size=512)
WARNING: zfs: allocating allocated segment(offset=2817498546176 size=512)
WARNING: zfs: allocating allocated segment(offset=2817498546176 size=512)
WARNING: zfs: allocating allocated segment(offset=2817498546176 size=512)
...省略...
# zdb -b -e tank

Traversing all blocks to verify nothing leaked ...
error: zfs: freeing free segment (offset=1168830076928 size=3072)
Abort (コアダンプ)
# zdb -A -b -e tank

Traversing all blocks to verify nothing leaked ...
error: zfs: freeing free segment (offset=1168830076928 size=3072)
Abort (コアダンプ)
# zdb -AA -b -e tank

Traversing all blocks to verify nothing leaked ...
WARNING: zfs: freeing free segment (offset=1168830076928 size=3072)
WARNING: zfs: freeing free segment (offset=1168830071808 size=2048)
WARNING: zfs: freeing free segment (offset=1193191384064 size=14336)
Assertion failed: sm->sm_space == space (0x2eff28c00 == 0x2eff24000), file ../../../uts/common/fs/zfs/space_map.c, line 355
Abort (コアダンプ)

自動復旧は無理そうなのであきらめて取りあえずリードオンリでマウント。

# zpool import -o readonly=on tank

後は新しいHDDを買ってきてストレージプールを新しく作って、その中にsendないしrsyncで移せば復旧完了。新しいHDDいくらぐらいするかな。