2つのハードドライブパーティションがあり、それらをmdadm
を使用してRAID1に結合し、結果のデバイスにext4ファイルシステムを作成しました。
2つのパーティションをmdadm --zero-superblock
してRAIDを再作成すると、元のext4メタデータが魔法のように保持されます。
何故ですか?
また、本当に新しい初期化されていないMDを与えるようにmdadm
に指示するにはどうすればよいですか
RAID1とファイルシステムの作成方法:
ls /dev/sdc2 # partition 1
ls /dev/sdd2 # partition 2
mdadm --create --run --verbose /dev/md1 --level=1 --raid-devices=2 /dev/sdc2 /dev/sdd2
mkfs.ext4 -L mylabel /dev/md1
RAID1をワイプ:
mdadm --stop /dev/md1
mdadm --zero-superblock /dev/sdc2
mdadm --zero-superblock /dev/sdd2
RAID1を再作成します。
mdadm --create --run --verbose /dev/md1 --level=1 --raid-devices=2 /dev/sdc2 /dev/sdd2
デバイス情報を表示します(wipefs
に-a
フラグを付けない場合、何もワイプされず、情報が表示されるだけです):
# wipefs /dev/md1
offset type
----------------------------------------------------------------
0x438 ext4 [filesystem]
LABEL: mylabel
UUID: 3d230d31-fb82-46ef-a4e0-e9473e05825c
LABEL: mylabel
は、ext4ラベルがmdadmスーパーブロックのワイプとRAIDの再作成を「生き延びた」ことを示しています。
それはどういうことですか?
スーパーブロックのワイプとレクリエーションの後、それをオフにするフラグ(--assume-clean
など私は与えていません)。
Mdadmスーパーブロックをゼロにすると、RAIDアレイを説明するメタデータのみが削除されるため、実際にディスクの残りの部分にあるものに関する情報は削除されません。これは実際には良いことです。これは、アレイ自体が何らかの理由で組み立てられないときに、ボリュームを回復できる可能性があることを意味します。
そして明確にするために、ディスク全体ではなくボリュームを使用してアレイを作成しているので、パーティションテーブルはmdadmの影響を受けないため、raidスーパーブロックをゼロにしても、ドライブラベルやパーティション構造には影響しません。 。
「レイドメタデータを完全に削除する」という決定的な答えはまだありません。
これが私のものです(以前のRAIDが検出されたときのraid作成スクリプトのスニペット):
DISK=drive with partition (eg: /dev/sdc3)
DRIVE=drive without partition (eg: /dev/sdc)
DRIVE_SECTORS=$(fdisk -l $DRIVE | grep Disk | grep sectors | cut -f7 -d ' ')
RAID_OFFSET=$(wipefs $DISK | grep linux_raid_member | sed 's/ */ /g' | cut -d ' ' -f2)
wipefs -o $RAID_OFFSET $DISK
# Zero last 4M of DISK
dd bs=512 if=/dev/zero of=$DRIVE count=8182 seek=$(($DRIVE_SECTORS - 8192))
それを整理するのに私がかかる時間を他の誰かが節約することを願っています。