web-dev-qa-db-ja.com

ZFSプールを作成した後、それを復元します

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

プール名はcrystalです。

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

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

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

2
remmelt

残念ながら:いいえ、そうではありません。

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

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

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

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

mightデータの回復にZFSの専門家を雇うことは可能ですが、通常のデータ回復サービスが現時点であなたを助けることができない可能性があり、一般的に利用可能なファイルシステム回復ソフトウェアは理解さえしていませんZFS。あなたがあなたと一緒に働くことをいとわない人々を見つけることができると仮定すると、それはまた非常に高価になるでしょう。同様のシナリオで、5桁のドルの範囲で価格について言及されているのを見てきました開始

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

正直なところ、質問に記載されているコマンドに似たコマンドでプールを上書きできたのは少し戸惑っています。私のシステムでは、ZFS On Linux 0.6.4で同様のシナリオを構築しているため、zpoolは、バッキングデバイスがis part of exported pool '...'であることを示す「無効なvdev仕様」エラーでcreate操作を拒否します。 -fを明示的にzpoolに渡して操作を強制しない限り、同様のエラーが発生するはずです。その場合、ZFSに「はい」と伝えているので、実際には本当にwantこれを実行します。 ZFSの場合は特に通常はnotやりたいことです。

1
a CVn