ZFSプールを上書きした後、復元する

ZFSプールを上書きした後、復元する

Ubuntu 14.04 システムを再インストールし、既存の zfs ドライブをマウントしようとしました。これはすべてのデータが保存されている単一のドライブです。OS は別のドライブにあり、zfs ドライブにはデータのみが保存されています。

プール名は ですcrystal

急いでいたので(はい)zpool create crystal /dev/disk-by-id/...etc...

プールは空になりました。

元のプールを復元したり、データを取得したりする方法はありますか?

答え1

残念ながら:いいえ、そうでもないです。

やや直感的ではないが、ZFSには主に2つの破壊的な操作がある。zfs destroy具体zpool create的には、コマンドzpool destroy ない破壊的であり、間違いにすぐに気づけば実際には簡単に元に戻すことができます。単にフラグを設定するだけなので、その場合はzpool import -D友達になります。

これらのコマンドは、類似していますが、わずかに異なる理由で破壊的です。

  • zfs destroy破壊的なのは、破壊されるデータセットへの参照を削除するためであり、標準的なツールを使用してディスク上でそれを見つける方法はありません。(ただし、この質問
  • zpool createプールのすべての überblocks を上書きするため、破壊的であり、ZFS コードがディスク上の Merkle ツリー データ構造の先頭を見つける方法がないことを意味します。ツリーのルートが見つからないと、残りのデータにアクセスできなくなります。

これらは両方ともZFSの複雑なディスク上のフォーマットによって悪化しており、回復の試みをさらに複雑にしています。他のほとんどのファイルシステムでは、ファイルは一般的に連続しているか、少数の異なる場所にあるかのどちらかです。ZFS では、データが文字通りディスク全体に分散していて、上記のいずれかのコマンドを実行した後に、どの部分がどこに属しているかを示すものが何も残っていない可能性があります。さらに悪いことに、圧縮されたデータ ブロックを探していることは間違いありません。また、重複排除されたデータなども探している可能性があります。(重複排除はシナリオでは起こりそうにありませんが、一般的なケースでは確かに可能性はあります。)

それかもしれないZFSの専門家に頼んでデータを復旧してもらうことも可能ですが、この時点では一般的なデータ復旧サービスでは対応できない可能性が高く、一般的に入手可能なファイルシステム復旧ソフトウェアはZFSを理解していません。協力してくれる人が見つかったとしても、とても高価です。価格について言及されているのを見たことがあります起動同様のシナリオでは、5桁のドルの範囲になります。

この時点での最善の選択は、おそらくデータの最新のバックアップを復元して、生活を続けることです。

正直、質問に書かれているようなコマンドでプールを上書きできた理由が少し不思議です。私のシステムでは、ZFS On Linux 0.6.4 で同様のシナリオを構築しましたが、バッキングデバイスが「無効な vdev 仕様」エラーで操作をzpool拒否しました。zpool に明示的に渡して操作を強制しない限り、同様のエラーが発生するはずです。その場合、ZFS に「はい、本当に本当に」と伝えていることになります。createis part of exported pool '...'-f欲しいこれを実行する。特にZFSの場合、通常はない何をしたいのか。

関連情報