我遇到了不可持续的 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.
谷歌搜索
1936269394 3772285809 1836016416
显示当您查看 NTFS 时可能会出现相同的垃圾“分区表”。您可能曾经在完全相同的偏移量(扇区)2048
处使用 NTFS/dev/sdd
。NTFS VBR“伪装”为 MBR 的类似问题在这里:Windows does not mount USB NTFS superfloppy。在您的情况下,这发生在一个分区中,而 NTFS 的痕迹只是一个工件。我在那里的回答将 MBR 与 NTFS VBR 进行了比较,它解释了有时您无法真正分辨出您正在处理的是哪一个。期望分区表的工具可能会被 NTFS 欺骗,反之亦然。
我想如果 Windows 可以访问该分区,它可能会读取 NTFS 签名并尝试挂载所谓的文件系统。我不知道Windows 是否会改变现有的任何数据,但如果它改变了我也不会感到惊讶。如果是这样,来自 Windows 的这种干扰可能是您的 RAID 阵列“不断以随机方式消失”的原因。
wipefs
是一种从设备上擦除各种签名的工具。这个命令将删除该工具可以找到的所有签名。但是问问自己是否要删除所有可能的签名;在继续之前阅读整个答案。
在您的情况下,将零写入分区的前 512 个字节也应该有效,因此这是一个替代解决方案:
现代
mdadm
默认使用超级块(版本 1.2),它从设备开始时存储 4K。上面的dd
命令既不会覆盖超级块(如果有的话)也不会覆盖后面的数据。我不确定wipefs -a
,这就是为什么我说“问问自己是否要删除所有可能的签名”。如果我是你,我会一起去dd
。在此之后
mdadm
不应该抱怨。