web-dev-qa-db-ja.com

ZFSプールメンバーは、パーティションテーブルやL0 L1ラベルなど、上書きされたセクターを開始します。データとL2L3ラベルはそのままです。回復する方法は?

ミラーZFSプールに2つの同一の2Tbディスクがあります。残念ながら、errorneusで上書きされたディスクの開始は、HP Smartarray P400 RAIDコントローラーを介して、独自のメタデータを書き込む個別のRAID0論理ボリュームとしてディスクを接続しようとします。

パーティションテーブル(zpool createによって作成されたものがある場合-以下を参照)およびL0、L1ラベルは失われます。 L1、L2ラベル、およびデータは、16進数で見られるようにそのままです。

zpoolは当初、次のようにミラープールにrawデバイスを追加するだけで作成されました-zpool create tank mirror/dev/sda/dev/sdb。

回復する方法はありますか?

1
kenga13

最後に、ZFSプールが破損していないことがわかりました。古いサーバーは問題なくプールをインポート/エクスポートします。唯一の違いは、ZFSカーネルバージョンとモジュールバージョンにありました。

旧:カーネル3.13.0-39-汎用、SPL:v0.6.3-1〜trusty、ZFS:v0.6.3-3〜trusty

新規:カーネル3.13.0-43-汎用、SPL:v0.6.3-3〜trusty、ZFS:v0.6.3-5〜trusty

また、zfsスライスは、ブロック2048から始まる単一のパーティションで作成されました。したがって、RAIDコントローラーはL0、L1ラベルにまったく影響を与えず、パーティションテーブルをゼロにするだけです。

インポートするために私が行った唯一のこと-復元されたパーティションテーブル(zpool importはまだプールをFAULTYとして表示します)そして/ dev/disk/myzfs dirを作成し、/ dev/disk/by-idのようなzpoolメンバーパーティションデバイスへのシンボリックリンクを作成しましたhave( "zpool import -d/dev/disk/by-id"を実行しようとすると、プールがFAULTYとして表示されます)。

「zpoolimport-d/dev/disk/myzfs」は私のプールをオンラインとして表示し、「zpool import -d/dev/disk/myzfsnas」は成功しました。

残念ながら、古いサーバーのようにカーネル-SPL-ZFSカーネルとモジュールの組み合わせを複製できませんでした-古いppa:zfs-native/stableパッケージを取得する方法が見つかりませんでした。そのため、これがモジュールリビジョンの変更なのか、それとも何なのかわかりませんでした。

1
kenga13

はい、ディスクを使用できなくなりました...

役立つZDBの魔法があるかもしれませんが、RAID 0HP論理ドライブの作成はかなり慎重な行動です。 Smart Arrayメタデータが原因で、ディスクに含まれているデータが失われるという明確な警告がありました。

一般に、ZFS用の複数のRAID 0論理ドライブは、ハードウェアRAIDコントローラーの背後にある悪い考えです。しかし、これは悪い間違いでした。


編集:

この質問を ZFS-メーリングリストについて話し合う またはIRCチャネルに持っていくことをお勧めします。

1
ewwhite