我创建了一个 RAID1
mdadm --create /dev/mdX --level=mirror --raid-devices=2 /dev/sdb /dev/sdc
然后观看了第一个同步/proc/mdstat
。它说[UU]
。到目前为止,一切都很好。
sd[bc]
应该已经被shred
编辑了,但我之前没有检查,认为所有内容无论如何都会被覆盖。
我继续在该设备上创建卷组,然后在新的逻辑卷中创建 ext4 FS。
想要通过 UUID 挂载,我将它们全部转储为blkid
.从视觉上看,RAID1 阵列看起来“不正常”。
blkid
(仅显示相关行):
/dev/mdX: UUID="..." TYPE="LVM2_member"
/dev/sdb: UUID="..." UUID_SUB="..." LABEL="...:0" TYPE="linux_raid_member"
/dev/sdc1: PARTUUID="0xd25946fb"
我期望有 2 个“linux_raid_members”,这是怎么回事/dev/sdc1
?我再次检查:
# cat /proc/mdstat (shortened)
Personalities : [raid1]
mdX : active raid1 sdb[0] sdc[1]
976631488 blocks super 1.2 [2/2] [UU]
bitmap: 2/8 pages [8KB], 65536KB chunk
# cat /proc/partitions (shortened)
major minor #blocks name
8 32 976762584 sdc
8 33 976759808 sdc1
8 16 976762584 sdb
9 0 976631488 md0
# fdisk -l /dev/sd[bc]
Disk /dev/sdb: (empty, as expected, both disk geoms identical, also expected)
Disk /dev/sdc: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0xd25946fb
Device Boot Start End Sectors Size Id Type
/dev/sdc1 2048 1953521663 1953519616 931.5G 7 HPFS/NTFS/exFAT
再次sdc1
。
所以看起来从来sdc
没有被撕碎过。但是所有以前的元数据/分区信息不应该被覆盖吗mdadm --create
?认为它可能是缓存的信息,我运行partprobe
.不用找了。我尝试了reboot
,没有改变。所以,看起来驱动器上仍然有一个分区表。
我有一些想法,我决定将其发布到 SE。
因此,在写这篇文章时,我想发布一个更“精确”的blkid
命令,所以我执行了blkid /dev/sd[bc]{,1} /dev/mdX
,并将其粘贴到这篇文章中:
/dev/sdb: UUID="..." UUID_SUB="..." LABEL="...:0" TYPE="linux_raid_member"
/dev/sdc: UUID="..." UUID_SUB="..." LABEL="...:0" TYPE="linux_raid_member"
/dev/sdc1: PARTUUID="d25946fb-01"
/dev/mdX: UUID="..." TYPE="LVM2_member"
在这篇文章的预览中,我发现它太“常规”了,并且 - 你瞧 - 发现了第二个 RAID 成员!我怀疑自己的理智,blkid
再次不带参数执行。 sdc
,第二个 RAID 成员未显示。
此时我的问题似乎可以归结为:我如何(安全地)摆脱分区表,然后我会在blkid
不带参数的情况下获得第二个raid成员吗?如果我不去管它,还会出现什么其他问题?此时它看起来就像我的 RAID1 可以运行一样,但是是吗?我该如何最好地测试它?
我已经建立并包括现在的想法是:
- 在线推土机:然后运行然后
dd if=/dev/zero bs=512 count=1 of=/dev/sdc
运行。但这不会以某种方式绊倒任何其他事情吗?partprobe
blkid
mdadm
- 使成员失败、断开连接(逻辑上)、将前几个 MiB 脱机、重新连接(逻辑上)、重新同步。我宁愿不。
- 通过 SE 了解处理仅在数组创建后发现的剩余元数据的“标准”方法。
如果没有 U.SE,我可能会尝试 1) 然后 2),相当确定 2) 会起作用,但这是最不优雅和最冗长的方式。
该 MD 上的数据并不重要,在没有答案的情况下,我将尝试 1) 然后 2)。我将发布结果。但我仍然有兴趣知道为什么sdc
不显示为 raid-member blkid
,而它确实显示为blkid /dev/sd[bc]
,而sdb
在两种情况下都显示。
答案1
我相信您面临的问题是写入 RAID 成员的数据恰好看起来像分区表。修复方法非常简单,忽略分区并继续执行。可能有一种方法可以为所有 RAID 成员设置“数据偏移”来避免此问题。