我遇到了不可持续的 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
就不应该抱怨了。