我有两个硬盘分区,我使用 将它们组合成一个 RAID1 mdadm,并在生成的设备上创建了一个 ext4 文件系统。
当我mdadm --zero-superblock将这两个分区,并重新创建 RAID 时,原始的 ext4 元数据就被神奇地保留了下来。
这是为什么?
我怎么知道mdadm给我一个真正新的、未初始化的 MD?
我如何创建 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
Run Code Online (Sandbox Code Playgroud)
擦除 RAID1:
mdadm --stop /dev/md1
mdadm --zero-superblock /dev/sdc2
mdadm --zero-superblock /dev/sdd2
Run Code Online (Sandbox Code Playgroud)
重新创建 RAID1:
mdadm --create --run --verbose /dev/md1 --level=1 --raid-devices=2 /dev/sdc2 /dev/sdd2
Run Code Online (Sandbox Code Playgroud)
显示设备信息(注意wipefs没有-a标志不会擦除任何东西,只是显示信息):
# wipefs /dev/md1
offset type
----------------------------------------------------------------
0x438 ext4 [filesystem]
LABEL: mylabel
UUID: 3d230d31-fb82-46ef-a4e0-e9473e05825c
Run Code Online (Sandbox Code Playgroud)
LABEL: mylabel 显示 ext4 标签“幸存”了 mdadm 超级块擦除和 RAID 重建。
怎么可能?
我认为在超级块擦除和娱乐之后,mdadm 应该向我展示设备的“干净”视图(即全零),除非给出了一个标志来关闭它(例如--assume-clean,我没有给出)。
因为将 mdadm 超级块归零只会删除描述 raid 阵列的元数据,它不会删除有关磁盘其余部分实际内容的信息。这实际上是一件好事,因为这意味着当阵列本身由于某些不幸的原因无法组装时,您可能能够恢复卷。
并且要明确:因为您是使用卷而不是整个磁盘创建阵列,所以 mdadm 不会触及分区表,因此将 raid 超级块归零不会影响驱动器标签和分区结构.