MD RAID5アレイを保持するために使用していた3つのディスクがあります。その後、私はこの配列を削除(またはそう思った)し、btrfsとスワップ領域のパーティションを作成しました。マシンを再起動すると、MDは古いアレイを保持するために使用していたデバイスを引き続きバインドし、新しいファイルシステムのマウントに失敗します。
Raidアレイの古いスーパーブロックが残されている可能性があり、MDにそれを実際のアレイであると認識させ、ディスクをバインドすることが示唆されました。提案された解決策は、mdadm --zero-superblockを使用して、影響を受けるディスクのスーパーブロックをクリアすることでした。しかし、私はこれがディスクで何をするのか本当に知りません。このディスクはパーティションを保持しているため、ブラインドの一部をゼロから開始したくありません。
では、ドライブ上の他のパーティションやファイルシステムに損傷を与えずにMDスーパーブロックを安全にクリアするには、どの手順に従う必要がありますか?
この質問は本質的に同じことを尋ねますが、再パーティション化されたデバイスでmdadm --zero-superblockを実行することが実際に安全であると想定されているかどうかについては明確な答えはありません。 mdadm superblock hiding/shadowing partition
https://raid.wiki.kernel.org/index.php/RAID_superblock_formats
スーパーブロックは4Kの長さで、デバイスの終わりから少なくとも64Kから128K未満で始まる64Kに整列されたブロックに書き込まれます(つまり、スーパーブロックのアドレスを取得して、デバイスのサイズを64Kの倍数に切り下げ、次に64Kを差し引きます)。各デバイスの使用可能なサイズは、スーパーブロックの前のスペースの量なので、デバイスがMDアレイに組み込まれると64Kから128Kが失われます。
そのため、--zero-superblock
を使用するのはすでに遅すぎ、安全ではない可能性があります。データがあるかどうかわからないため、現在のパーティションをx-RAIDパーティションの最後から-128K
にサイズ変更/縮小してから、その部分をワイプしてパーティションを拡張する必要があります。
その他のオプション1:ディスク全体を埋めるように大きなファイルを書き込むと、RAIDスーパーブロックが上書きされ、mdadmで認識できなくなります。
その他のオプション2:1:と同様-- https://unix.stackexchange.com/questions/44234/clear-unused-space-with-zeros-ext3-ext4
wipefs --all /dev/sd[4ppropr14t3][123]
(もちろん、ドライブ/パーティションのグロブをセットアップします!)
これは私がこれを理解した方法です(それは私のケースにかなり特有かもしれませんが、私はそれをできる限り一般的に保つように努めます)。
(私がデバイスについて話すとき、私が意味するのは、RAIDアレイ自体ではなく、RAIDボリュームを構成するデバイスです)
mdadm -E $DEVICE
は、配列が使用していたメタデータ形式を特定します。次に、[0]に行き、スーパーブロック形式に関する情報を見つけました。私の場合、これはバージョン0.90でした。
このフォーマットでは、デバイスの終わり近くにスーパーブロックが保存されています。これが私の状況の出番です。私の古いアレイはドライブに直接作成され、パーティションは作成されませんでした。このため、スーパーブロックがデバイスの一番端にあるはずです。新しいパーティションには、最後にスワップパーティションが含まれていました。したがって、スーパーブロックが配置されている場所で失われるデータはそれほど多くありませんでした。
私は周りにいくつかの読書をしました、私が到達した結論はそれでしたmdadm --zero-superblock
スーパーブロック自体をゼロに設定するだけなので、私の場合は安全です。私は先に進み、3つのデバイスすべてのスーパーブロックを削除しました。
mdadm --stop $ONE_OF_THE_DEVICES
必要に応じてこの行を繰り返します
mdadm --zero-superblock $DEVICE
追加のコメント/推測:
一般に、新しいパーティション/ファイルシステムでスペースが必要な場合は、すでに上書きされているはずです。したがって、スーパーブロックがまだそこにある場合、それをゼロにしてもパーティション分割/ファイルシステムに害はありません。しかし、スーパーブロックがすべてではなく1つ以上のデバイスですでに上書きされている場合、MDがどのように処理するかはわかりません。マンページには、スーパーブロックが無効な場合にゼロをゼロにするために-fが必要であると記載されていますが、注意してください。
0: https://raid.wiki.kernel.org/index.php/RAID_superblock_formats