![由于校验和错误,mdadm 无法挂载](https://linux22.com/image/1538275/%E7%94%B1%E4%BA%8E%E6%A0%A1%E9%AA%8C%E5%92%8C%E9%94%99%E8%AF%AF%EF%BC%8Cmdadm%20%E6%97%A0%E6%B3%95%E6%8C%82%E8%BD%BD.png)
我在 4 个 1TB 磁盘上安装了 ubuntu raid5,没有发生过非正常关机或电源问题。启动盘是第 5 个磁盘,不在 mdadm 上。我的启动盘上也有 XP,我今天刚启动。XP 无法挂载 mdadm 或无法触碰磁盘,至少我是这么认为的。
自从关闭 XP 后,ubuntu 就无法启动了,可能是因为 fstab 阻止了它,因为它在等待后无法挂载 /dev/md0。现在我无法进入我原来的 ubuntu 安装。
因此我移除了所有 raid 成员并将它们全部放入外部磁盘托架中,然后在 macbook 中启动 ubuntu 进行恢复。
/dev/sdh:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x1
Array UUID : 05143452:9d98ca6b:c59a91b5:fda8b846
Name : vikas-VirtualBox:0
Creation Time : Sat Dec 31 17:31:47 2016
Raid Level : raid5
Raid Devices : 4
Avail Dev Size : 1953263024 (931.39 GiB 1000.07 GB)
Array Size : 2929889280 (2794.16 GiB 3000.21 GB)
Used Dev Size : 1953259520 (931.39 GiB 1000.07 GB)
Data Offset : 259072 sectors
Super Offset : 8 sectors
Unused Space : before=258984 sectors, after=6576 sectors
State : clean
Device UUID : b0cc00bc:b20c2671:1eb062bc:28eb229b
Internal Bitmap : 8 sectors from superblock
Update Time : Fri Aug 11 17:08:49 2017
Bad Block Log : 512 entries available at offset 72 sectors
Checksum : 846ac784 - correct
Events : 18840
Layout : left-symmetric
Chunk Size : 512K
Device Role : Active device 2
Array State : AAAA ('A' == active, '.' == missing, 'R' == replacing)
===============================
/dev/sdf1:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : 05143452:9d98ca6b:c59a91b5:fda8b846
Name : vikas-VirtualBox:0
Creation Time : Sat Dec 31 17:31:47 2016
Raid Level : raid5
Raid Devices : 4
Avail Dev Size : 1953259520 (931.39 GiB 1000.07 GB)
Array Size : 2929889280 (2794.16 GiB 3000.21 GB)
Data Offset : 259072 sectors
Super Offset : 8 sectors
Unused Space : before=258984 sectors, after=3072 sectors
State : clean
Device UUID : a36f72c1:d4ec55f0:e4a4ff8a:19a0d659
Update Time : Fri Aug 11 17:08:49 2017
Bad Block Log : 512 entries available at offset 72 sectors
Checksum : 965ce69e - expected 965ce69d
Events : 18840
Layout : left-symmetric
Chunk Size : 512K
Device Role : Active device 1
Array State : AAAA ('A' == active, '.' == missing, 'R' == replacing)
===============================
/dev/sde1:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : 05143452:9d98ca6b:c59a91b5:fda8b846
Name : vikas-VirtualBox:0
Creation Time : Sat Dec 31 17:31:47 2016
Raid Level : raid5
Raid Devices : 4
Avail Dev Size : 1953259520 (931.39 GiB 1000.07 GB)
Array Size : 2929889280 (2794.16 GiB 3000.21 GB)
Data Offset : 259072 sectors
Super Offset : 8 sectors
Unused Space : before=258984 sectors, after=3072 sectors
State : clean
Device UUID : 04920971:8ce054dc:4756516d:07eedc84
Update Time : Fri Aug 11 17:08:49 2017
Bad Block Log : 512 entries available at offset 72 sectors
Checksum : 3f4afc07 - expected 3f4afc06
Events : 18840
Layout : left-symmetric
Chunk Size : 512K
Device Role : Active device 0
Array State : AAAA ('A' == active, '.' == missing, 'R' == replacing)
===============================
/dev/sdi:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x1
Array UUID : 05143452:9d98ca6b:c59a91b5:fda8b846
Name : vikas-VirtualBox:0
Creation Time : Sat Dec 31 17:31:47 2016
Raid Level : raid5
Raid Devices : 4
Avail Dev Size : 1953263024 (931.39 GiB 1000.07 GB)
Array Size : 2929889280 (2794.16 GiB 3000.21 GB)
Used Dev Size : 1953259520 (931.39 GiB 1000.07 GB)
Data Offset : 259072 sectors
Super Offset : 8 sectors
Unused Space : before=258984 sectors, after=6576 sectors
State : clean
Device UUID : 426c61e9:ea61c2f3:cf27167c:09807918
Internal Bitmap : 8 sectors from superblock
Update Time : Fri Aug 11 17:08:49 2017
Bad Block Log : 512 entries available at offset 72 sectors
Checksum : 7171c8e1 - correct
Events : 18840
Layout : left-symmetric
Chunk Size : 512K
Device Role : Active device 3
Array State : AAAA ('A' == active, '.' == missing, 'R' == replacing)
当我尝试装配力量时:
sudo mdadm --assemble /dev/md0 --verbose --force --run /dev/sde1 /dev/sdf1 /dev/sdh /dev/sdi
mdadm: looking for devices for /dev/md0
mdadm: /dev/sde1 is identified as a member of /dev/md0, slot 0.
mdadm: /dev/sdf1 is identified as a member of /dev/md0, slot 1.
mdadm: /dev/sdh is identified as a member of /dev/md0, slot 2.
mdadm: /dev/sdi is identified as a member of /dev/md0, slot 3.
mdadm: added /dev/sdf1 to /dev/md0 as 1
mdadm: added /dev/sdh to /dev/md0 as 2
mdadm: added /dev/sdi to /dev/md0 as 3
mdadm: added /dev/sde1 to /dev/md0 as 0
mdadm: failed to RUN_ARRAY /dev/md0: Invalid argument
来自 dmesg:
[ 2208.363750] RAID conf printout:
[ 2208.363752] --- level:5 rd:4 wd:4
[ 2208.363755] disk 0, o:1, dev:sde1
[ 2208.363758] disk 1, o:1, dev:sdf1
[ 2208.363760] disk 2, o:1, dev:sdh
[ 2208.363763] disk 3, o:1, dev:sdi
[ 2208.363994] md0: invalid bitmap file superblock: bad magic
[ 2208.363997] md0: bitmap file superblock:
[ 2208.364000] magic: ff88ffff
[ 2208.364002] version: 11
[ 2208.364005] uuid: 00000000.00000000.00000000.00000000
[ 2208.364007] events: 0
[ 2208.364009] events cleared: 0
[ 2208.364012] state: 00000000
[ 2208.364014] chunksize: 0 B
[ 2208.364016] daemon sleep: 0s
[ 2208.364018] sync size: 0 KB
[ 2208.364020] max write behind: 0
[ 2208.364023] md0: failed to create bitmap (-22)
我的猜测是 XP 启动一定以某种方式触碰了这些磁盘成员,因此魔法有所不同。
我已经看到了--create
新阵列的选项,但我不确定它是否会丢失数据。其次,如果在不同的 ubuntu 上创建,它会在另一个 ubuntu 上恢复工作吗?
有没有简单的方法来验证完整性并重置所有成员的校验和?请提出建议。谢谢。
答案1
我发现此电子邮件主题,这似乎描述了与您的相同的问题。
该人的解决方案是运行以下命令:
sudo mdadm -A --update=super-minor /dev/md0
该用户写道:
我通过对 mdadm 源代码进行一些调查,自己找到了这个问题的答案。似乎 mdadm 在读取超级块时会自动清除位图文件中的无效位图(但内核不会这样做)。因此,您需要做的就是找出一种让 mdadm 将该超级块保存回磁盘的方法。对我来说,解决这个问题的神奇命令是:
mdadm -A --update=super-minor /dev/md0
--update 命令强制 mdadm 在尝试挂载磁盘之前将 raid 超级块保存回磁盘,因此位图标志被清除。
不过,该用户有元数据版本00.90.01
,并且根据mdadm(8)
手册页:
超小调仅与 v0.90 元数据相关
这意味着你应该更新姓名新版本超级块中的数组,1.2
而不是超小调,而版本 1 元数据中不存在该项。
从手册页中:
-U,--更新=
在组装阵列时更新每个设备上的超级块。此标志的参数可以是以下之一:sparc2.2, 摘要,唯一标识,姓名,家庭主机,重新同步,字节顺序,设备尺寸, 无位图, 或者超小调。
…
这姓名选项将改变姓名数组存储在超级块中。这仅支持版本 1 超级块。