他のパーティションがあるディスク上の mdadm --zero-superblock

他のパーティションがあるディスク上の mdadm --zero-superblock

MD RAID5 アレイを保持するために使用されていた 3 つのディスクがあります。その後、このアレイを削除し (そう思っていました)、btrfs と swap スペース用のパーティションを作成しました。マシンを再起動すると、MD は古いアレイを保持するために使用されていたデバイスをバインドしたままになり、新しいファイルシステムのマウントに失敗します。

RAID アレイの古いスーパーブロックが残っているため、MD がそれを実際のアレイと認識し、ディスクをバインドしている可能性があると示唆されました。提案された解決策は、mdadm --zero-superblock を使用して、影響を受けるディスクのスーパーブロックをクリアすることでした。ただし、これがディスクにどのような影響を与えるのかはよくわかりません。このディスクにはパーティションが含まれているため、やみくもにディスクの一部をゼロにすることはしたくありません。

では、ドライブ上の他のパーティションやファイル システムに損傷を与えることなく、MD スーパーブロックを安全にクリアするには、どのような手順に従う必要がありますか?

この質問は本質的に同じことを尋ねていますが、再パーティション化されたデバイスで mdadm --zero-superblock を実行することが実際に安全であるかどうかについては明確な答えがありません。mdadm スーパーブロックの隠蔽/シャドウイング パーティション

答え1

https://raid.wiki.kernel.org/index.php/RAID_superblock_formats

スーパーブロックの長さは 4K で、デバイスの末尾から少なくとも 64K、128K 未満で始まる 64K に揃えられたブロックに書き込まれます (つまり、スーパーブロックのアドレスを取得するには、デバイスのサイズを 64K の倍数に切り捨ててから 64K を減算します)。各デバイスの使用可能なサイズはスーパーブロックの前のスペースの量であるため、デバイスが MD アレイに組み込まれると 64K から 128K が失われます。

もう手遅れだ安全ではないかもしれないを使用するには--zero-superblock、データがあるかどうかわからないため、現在のパーティションを-128Kx-RAID パーティションの末尾から までサイズ変更/縮小し、その部分を消去してパーティションを元に戻さなければなりません。

その他のオプション 1: ディスク全体を埋め尽くすほどの大きなファイルを書き込むと、RAID スーパーブロックが上書きされ、mdadm によって認識されなくなります。

その他のオプション 2: 1 と同様:https://unix.stackexchange.com/questions/44234/clear-unused-space-with-zeros-ext3-ext4

答え2

wipefs --all /dev/sd[4ppropr14t3][123](もちろん、ドライブ/パーティションの glob を設定してください!)

答え3

これが私がこれを理解した方法です (これは私のケースにかなり特化しているかもしれませんが、できる限り一般的な内容に留めるようにします)。

(デバイスについて話すとき、私が意味するのは RAID ボリュームを構成するデバイスであり、RAID アレイそのものではありません)

私は、mdadm -E $DEVICEアレイがどのメタデータ形式を使用しているかを調べました。その後、raid.wiki.kernel.orgスーパーブロック形式に関する情報を探します。私の場合はバージョン 0.90 でした。

この形式では、スーパーブロックはデバイスの末尾に保存されます。ここで、私の状況が関係してきます。私の古いアレイは、パーティション分割なしでドライブ上に直接作成されていました。このため、スーパーブロックはデバイスの末尾にある必要があることはわかっていました。新しいパーティション分割では、末尾にスワップ パーティションが含まれていました。そのため、スーパーブロックが配置されている場所では、失われるデータはあまりありませんでした。

mdadm --zero-superblockいろいろ調べてみたところ、スーパーブロック自体をゼロにするだけなので、私の場合は安全だという結論に達しました。3 つのデバイスすべてでスーパーブロックを削除しました。

mdadm --stop $ONE_OF_THE_DEVICES

必要に応じてこの行を繰り返します

mdadm --zero-superblock $DEVICE

追加のコメント/推測:

一般的に、新しいパーティション/ファイルシステムでスペースが必要な場合は、すでに上書きされているはずです。したがって、スーパーブロックがまだ存在する場合、それをゼロにしてもパーティション/ファイルシステムに影響はありません。ただし、スーパーブロックが 1 つまたは複数のデバイスですでに上書きされているが、すべてではない場合、MD がどのように処理するかはわかりません。マニュアル ページには、スーパーブロックが無効な場合にゼロにするには -f が必要であると書かれていますが、覚えておいてください。

関連情報