思考実験とD.I.Y.

D.I.Y and Gedankenexperiment

[zfs]メインファイルサーバーのpoolを飛ばした!!(3):リカバリ試行[2]/一応、poolが見えた!

前回、リカバリを試行するものの、zfsのpoolを復旧させるには至らなかったので[*1]、追加調査を行ったところ、”zpool”のオプション設定と動きについて情報を得ることが出来たので、試してみました。【注*2

見つけた情報はZFSraid-zのリカバリに関するもので[*3]、
小生の状況と異なるものの、”I/Oエラー”が表示される点は似ていて、poolを見る事は出来そうでした。

取り合えず、各オプションを確認しつつ、試行してみることにしました😀。

1. リカバリの再試行

1)"-f -o readonly=on"オプションを付ける:読み込み専用にしてみる。

まずは、読み込み専用にしてpoolが見えるようになるか確認します。

 


[root@file_sv] # zpool import -f -o readonly=on pool1    

 

”I/Oエラー”がでる状況は変わりません😵。

/var/log/messagesを確認すると、”checksum”のエラーが出ているので、これを何とかしないと、import出来ないということだとは思いますが🤔。。。

2)"-m -f -o readonly=on"オプションを付ける:”失われたログデバイスがあるときの対処を追加してみる”

”失われたログデバイスがあるとき、インポートするプールを許可する”、"-m"オプション[*4]を付けてみます。

 


[root@file_sv] # zpool import -m -f -o readonly=on pool1    

 

”I/Oエラー”がでる状況に変わりません😵。

ただ、/var/log/messagesを確認すると、”checksum”のエラーがなくなり、
”error=97”だけになりました(*5)。

3)"-FX -m -f"オプションとreadonlyオプションを付ける:CheckSUMを無視させてみる。

"-FX"オプションが紹介されていたので、ますは、このオプションについて確認します。

 

-F インポート不可能なプールのための復旧モード。最後の少ないトランザクションを廃棄することによって、インポート可能な状態にプールに戻すことを試みます。すべての破損したプールを、このオプションを使用することによって復旧することができるわけではありません。成功するなら、廃棄されたトランザクションからのデータは、取り返しのつかないほど失われます。このオプションは、プールがインポート可能か、または既にインポートされているなら、無視されます
-X 復旧オプションで使用されます。有効な txg を見つけるために極端な手段を行なうべきかどうかを決定します。これによって、プールは、もはや一貫性が保証されない、txg にロー ルバックすることができます。一貫性のない txg でインポートされたプールは、訂正不可能なチェックサムエラーを含むかもしれません。プール復旧モードに関する鵜詳細については、上記の -F オプションを参照してください。警告: このオプションは、利用者のプールの健全性を著しく危険にするかもしれません、最後の手段としてのみ使用されるべきです

引用元[*6

 

かなり恐ろしげなオプションですが😅、損傷している”物理ディスク”そのもののではなく、コピーを使っているので、とりあえず試してみることにします。


[root@file_sv] # zpool import -XF -m -f -o readonly=on pool1    

参考情報[*7]の方は、半年ほど実行させて、結局、エラーで終了したようなので、
気長に待つことにしていたところ、小生の状態の場合は、半日ほどしたら、”zpool import”がエラーなしで終了しました😀。

2. poolが見えた!

”zpool import”がエラーなしで終了したので、poolの確認。


[root@file_sv] # zpool list    

zpoolのリストに”pool1”がみえるようになりました。

"ステータス"とpoolの中身を確認。

[root@file_sv] # zpool status    
[root@file_sv] # zfs list    

 

”zpool status”では、見えなくなっていたメインファイルサーバーの"pool1"が”ONLINE”に変わりました😀。

ただ、”zpool upgrade”しろとのメッセージが出ていますが😅。。。

zfs list”では、poo1内に作っていた各領域が表示されています😀。

3. データの引き上げ

1)ファイルシステムを確認

まずは”df”でファイルシステムを確認。

"pool1"内の領域がすべてマウントされています。

ただ、問題は、ローカルのファイルシステムの上にマウントされています。

このまま、引き揚げ作業を行うと、
見えていない”ディスクイメージ”から引き上げることになり、何が起きるかわからないので、
"pool1"内の領域をすべてアンマウントしてから次の作業に移ります。

2)リカバリしたフォルダ内を確認

マウントポイントを指定して、poo1内の領域を個別にマニュアルマウントし、中身を確認します。


[root@file_sv] # ls -lR /Home | less    

 

日本語が文字化けしています😅。

3)とにかくrsyncで引き上げ

とはいえ、見えているうちに、順次、pool内の領域をマニュアルマウントして、引き上げておくことにします😀。

rsyncで、アクティブディレクトドメインコントローラー(AD-DC)に接続しておいた、バックアップ用RAID1ストレージ(8TB)[*8]に、nfs経由で順次、引き上げます。

【次回に続く予定】

ブログランキング・にほんブログ村へ にほんブログ村 IT技術ブログへ

出典・引用・備考

*1:

*2:この投稿の内容は、特定の機種並びに特定の環境での確認結果になります。同等機種や異なる環境での動作他を保証するものではありませんので、ご留意いただけます様お願いいたします。

*3:ゆーふうりん、"壊れてしまったZFS raid-zアレイのリカバリーを試行中 (未完)"、2025年3月20日https://note.com/pure_crab3639/n/n885abca132a8、最終閲覧日:2025年9月2日

*4:"ZPOOL(8) "、FreeBSD 日本語マニュアル検索、http://www.koganemaru.co.jp/cgi-bin/mroff.cgi?sect=8&cmd=&lc=1&subdir=man&dir=jpman-11.2.2%2Fman&subdir=man&man=zpool、最終閲覧日:2025年9月4日

*5:この”error=97”を調べてみたところ、色々ヒットするのですが、小生の状況に関連しそうな情報にはたどり着けませんでした。

*6:"ZPOOL(8) "、FreeBSD 日本語マニュアル検索、http://www.koganemaru.co.jp/cgi-bin/mroff.cgi?sect=8&cmd=&lc=1&subdir=man&dir=jpman-11.2.2%2Fman&subdir=man&man=zpool、最終閲覧日:2025年9月4日

*7:ゆーふうりん、"壊れてしまったZFS raid-zアレイのリカバリーを試行中 (未完)"、2025年3月20日https://note.com/pure_crab3639/n/n885abca132a8、最終閲覧日:2025年9月2日

*8: