消失的 RAID 阵列(又名分区内的嵌套分区表)?

消失的 RAID 阵列(又名分区内的嵌套分区表)?

我遇到了不可持续的 RAID 阵列问题,它总是以随机的方式消失。在创建时,即使使用分区而不是磁盘作为 RAID 基础,也会显示与丢失/无意义的分区表相关的警告。输出清楚地表明分区内有一个现有的分区表,事实上,仔细查看 */dev/sdd** 会发现分区内有一个完整的分区表/dev/sdd1分割!

我不知道事实,但我怀疑 RAID 阵列消失的问题可能与这个神秘的额外分区表有关。我当然没有把它放在那里,“主”分区表被多次覆盖,但内部分区表sdd1不知何故占了上风。有没有办法擦除/删除/摆脱这个额外的分区表并将磁盘重新用作 RAID 阵列成员?您认为这就是导致问题的原因吗?这是什么样的嵌套分区表巫术,我该如何处理?

相关输出如下。提前致谢。

mdadm --create --verbose --homehost=any --level=1 --force --raid- 
devices=1 --name=md127 /dev/md/md127 /dev/sdd1
mdadm: partition table exists on /dev/sdd1
mdadm: partition table exists on /dev/sdd1 but will be lost or
       meaningless after creating array
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
mdadm: size set to 1953381440K
mdadm: automatically enabling write-intent bitmap on large array
Continue creating array? n
mdadm: create aborted.

fdisk -l /dev/sdd*
Disk /dev/sdd: 1.84 TiB, 2000398934016 bytes, 3907029168 sectors
Disk model: ASM1153E        
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 33553920 bytes
Disklabel type: dos
Disk identifier: 0x2966153e

Device     Boot Start        End    Sectors  Size Id Type
/dev/sdd1        2048 3907029167 3907027120  1.8T fd Linux raid autodetect


Disk /dev/sdd1: 1.84 TiB, 2000397885440 bytes, 3907027120 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 33553920 bytes
Disklabel type: dos
Disk identifier: 0x6e697373

Device      Boot      Start        End    Sectors   Size Id Type
/dev/sdd1p1      1936269394 3772285809 1836016416 875.5G 4f QNX4.x 3rd part
/dev/sdd1p2      1917848077 2462285169  544437093 259.6G 73 unknown
/dev/sdd1p3      1818575915 2362751050  544175136 259.5G 2b unknown
/dev/sdd1p4      2844524554 2844579527      54974  26.9M 61 SpeedStor

Partition table entries are not in disk order.

答案1

这是什么样的嵌套分区表巫术?

谷歌搜索显示,当您查看 NTFS 时,可能会出现相同的垃圾“分区表”。您可能曾经在相同的偏移量(扇区)1936269394 3772285809 1836016416上使用过 NTFS 。2048/dev/sdd

类似的问题,其中 NTFS VBR “伪装”为 MBR 在此处:Windows 无法挂载 USB NTFS 超级软盘。在您的情况下,这种情况发生在分区中,而 NTFS 的痕迹只是一个产物。我的答案比较了 MBR 和 NTFS VBR,这解释了为什么有时您无法真正分辨出您正在处理的是哪一个。需要分区表的工具可能会被 NTFS 欺骗,反之亦然。

猜测如果 Windows 有权访问该分区,它可能会读取 NTFS 签名并尝试安装所谓的文件系统。我不知道如果 Windows改变不管数据是什么,但如果确实如此,我也不会感到惊讶。如果是这样,那么来自 Windows 的这种干扰可能是您的 RAID 阵列“不断以随机方式消失”的原因。


有没有办法擦除/删除/摆脱这个额外的分区表?

wipefs是一个用于从设备中清除各种签名的工具。此命令

wipefs -a /dev/sdd1

将删除该工具可以找到的所有签名。但要问问自己是否要删除全部可能的签名;继续之前请阅读整个答案。

在您的情况下,将零写入分区的前 512 个字节也应该有效,因此这是一个替代解决方案:

dd if=/dev/zero of=/dev/sdd1 bs=512 count=1

Modernmdadm默认使用超级块(版本 1.2),该超级块存储在设备启动后 4K 处。上述dd命令不会覆盖超级块(如果有)或后续数据。我不确定wipefs -a,这就是为什么我说“问问自己是否要删除所有可能的签名”。如果我是你,我会选择dd

这之后mdadm就不应该抱怨了。

相关内容