为什么 mdadm --zero-superblock 保留文件系统信息?

nh2*_*nh2 5 linux raid mdadm

我有两个硬盘分区,我使用 将它们组合成一个 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,我没有给出)。

Rib*_*die 8

因为将 mdadm 超级块归零只会删除描述 raid 阵列的元数据,它不会删除有关磁盘其余部分实际内容的信息。这实际上是一件好事,因为这意味着当阵列本身由于某些不幸的原因无法组装时,您可能能够恢复卷。

并且要明确:因为您是使用卷而不是整个磁盘创建阵列,所以 mdadm 不会触及分区表,因此将 raid 超级块归零不会影响驱动器标签和分区结构.