ZFSベースのiSCSI SANは、多数のVMサーバーにZVOLを提供します。今日、ネットワークの不具合により、クライアントにマウントされているすべてのiSCSIボリュームが停止しました。 RO。それを回避する唯一の方法は、すべてをシャットダウンして再起動することです。多くの場合、fsckを実行してiSCSIボリュームをオンラインに戻します。そうですね、fsckはボリュームの1つを完全に破棄することにしました。したがって、私のようには見えません。 fsckが作成した混乱を修正できるようになります。
ZFSでファイルを回復することについてはかなり読んだことがありますが、この場合はZVOLを扱っています。これはある意味ではるかに単純ですが、の内容をロールバックしようとすることを扱っているものは何も見ていません。ブロックデバイス。助言がありますか?
-TIA-
いくつかのデータセットの詳細:
Dataset zpool1/vm3 [ZVOL], ID 59, cr_txg 12078, 44.6G, 2 objects, rootbp DVA[0]=<6:6c2c4b1e00:200> DVA[1]=<7:487aa4b200:200> [L0 DMU objset] fletcher4 lz4 LE contiguous unique double size=800L/200P birth=7736596L/7736596P fill=2 cksum=4c78779ec:2049fb2de6c:6f2f6c4a44e9:1042484aee3ded
Deadlist: 1K (512/512 comp)
mintxg 0 -> obj 48
mintxg 1 -> obj 4157
Object lvl iblk dblk dsize lsize %full type
0 7 16K 16K 7.00K 16K 6.25 DMU dnode
dnode flags: USED_BYTES
dnode maxblkid: 0
Object lvl iblk dblk dsize lsize %full type
1 5 16K 8K 44.6G 200G 36.45 zvol object
dnode flags: USED_BYTES
dnode maxblkid: 26214399
Object lvl iblk dblk dsize lsize %full type
2 1 16K 512 0 512 100.00 zvol prop
dnode flags: USED_BYTES
dnode maxblkid: 0
microzap: 512 bytes, 1 entries
size = 214748364800
システムはCentOS7.1です
Linux san1srvp01 3.10.0-514.6.1.el7.x86_64 #1 SMP Wed Jan 18 13:06:36 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
関連するスナップショットはありません。言うまでもなくそうだと思いました。
私が質問している理由、そして私が求めているのは、フォレンジック技術によるオブジェクトの回復を掘り下げている Max Burning のこのような記事に関連しています。もちろん、これはZFS内部の知識が不足していないことに依存しています。私が見たもののほとんどは、rawブロックストレージを実装するオブジェクトとは非常に異なるファイルオブジェクトをさかのぼることを扱っており、ZVOLに関連する内部についてはほとんど何も見ていません。
Fsckが行った変更を技術的に「ロールバック」できない場合でも、少なくとも戻って、元の主要なブロックのいくつかを見つけることは役に立ちます。これは、ZFSのCOW動作と、私が不足している十分な知識があれば可能であるはずですが、通常、それで私を止めることはできません。
はい、できます。散らかってしまいます。
関連するスナップショットはありません。言うまでもなくそうだと思いました。
したがって、zpoolとデータが正常である時間と相関するスナップショットがないと、簡単な手段やロールバック機能はありません。
Tero Kilkanenがコメントで正しく述べているように、zvolがまだ有効だったときのスナップショットが必要です。そうしないと、データが失われます。
いくつかの背景:
スナップショットは、ファイルシステムまたはボリューム(zvol)などの任意のデータセットから作成でき、それ自体も(読み取り専用、依存)データセットです。これらは常にアトミックであるため、データセット全体の特定の時点での状態を取得します(ただし、最上位のアプリケーションでは、最悪の場合、ディスクまたはシステムのハードリセットのように見える場合があります)。データの整合性は維持されます(少なくとも同期書き込みの場合、非同期書き込みはもちろん部分的に破棄されている可能性があります)。
この点でのzvolsとファイルシステムの唯一の違いは、各スナップショットは常にデータセット全体を参照するため、ファイルシステムスナップショットから復元するファイルを選択できることです(現在または古いデータと混合する)が、できるのはzvol全体を使用することを選択します。これは、非常に大きなファイルのようなものだからです(理論的には、バイト範囲をコピーして自分でマージすることもできますが、それは非常に不便です)。データ(ファイルとブロック)のこの「ビュー」を除けば、動作は同じです。
Zpool import-Tオプションを確認してください。注意:これはプール上にあり、zvolではありません。おそらく、zvolを新しいzpoolに送信し、import-Tを使用して別のtxgを使用してインポートすることができます。