Rob*_*anu 5 raid software-raid mdadm
我有一个管理的 RAID 10 阵列,mdadm
但它失败了。症状是 X 崩溃了,我无法从终端登录。我已经重新启动了计算机,/dev/md1
但没有启动。
我收集了以下信息 - 有些信息不完整,因为我已手动将其复制到另一台计算机:
$ cat /proc/mdstat
....
md1 : inactive sdb3[1](S) sdd1[3](S) sdc2[2](S) sda1[0](S)
1250273760 blocks super 1.0
Run Code Online (Sandbox Code Playgroud)
挂载失败
$ mount /dev/md1
EXT4-fs (md1): unable to read superblock
Run Code Online (Sandbox Code Playgroud)
扫描确实找到了元数据
$ mdadm --examine --scan
...
ARRAY /dev/md/1 metadata=1.0 UUID=2c... name=linux:1
Run Code Online (Sandbox Code Playgroud)
由于缺少操作镜像,运行失败
$ mdadm --run /dev/md1
md/raid0:md1: not enough operational mirrors.
md: pers->run() failed...
mdadm:failed to run array /dev/md1: Input/output error
Run Code Online (Sandbox Code Playgroud)
运行尝试后,只有两个磁盘仍在阵列中
$ cat /proc/mdstat
....
md1 : inactive sdd1[3] sdc2[2]
62513638 blocks super 1.0
Run Code Online (Sandbox Code Playgroud)
尝试重新添加一个磁盘失败
$ mdadm /dev/md1 --add /dev/sda1
mdadm: /dev/sda1 reports being an active member for /dev/md1, but --re-add fails
mdadm: not performing --add as that would convert /dev/sda1 in to a spare
mdadm: To make this a spare, use "mdadm --zero-superblock /dev/sda1" first
Run Code Online (Sandbox Code Playgroud)
我已经记录了一些元数据以尝试重新创建数组
$ mdadm --examine /dev/sdb3 /dev/sdd1 /dev/sdc2 /dev/sda1 | grep -E 'dev|Update|Role|State|Chunk Size'
/dev/sdb3:
State: active
Update time: Mon May 14 21:51:41 2012
Chunk Size: 256K
Device Role: Active device 1
Array State : AAAA
/dev/sdd1:
State: active
Update time: Mon May 14 22:11:11 2012
Chunk Size: 256K
Device Role: Active device 3
Array State : ..AA
/dev/sdc2:
State: active
Update time: Mon May 14 22:11:11 2012
Chunk Size: 256K
Device Role: Active device 2
Array State : ..AA
/dev/sda1:
State: active
Update time: Mon May 14 21:51:41 2012
Chunk Size: 256K
Device Role: Active device 0
Array State : AAAA
Run Code Online (Sandbox Code Playgroud)
我已经尝试根据之前记录的信息手动重新创建数组
$ mdadm --create --metadata=1.0 --assume-clean --level=10 --raid-devices=4 --chunk=256K /dev/md1 /dev/sda1 /dev/sdb3 /dev/sdc2 /dev/sdd1
mdadm: /dev/sda1 appears to contain an ext2fs file system
mdadm: /dev/sda1 appears to be part of a raid array
mdadm: /dev/sdb3 appears to contain an ext2fs file system
mdadm: /dev/sdb3 appears to be part of a raid array
mdadmin: /dev/sdc2 appears to be part of a raid aray
mdadmin: /dev/sdd1 appears to be part of a raid aray
Run Code Online (Sandbox Code Playgroud)
挂载再次失败,这可能意味着没有正确创建raid
$ 挂载 /dev/md1 /mnt
EXT4-fs (md1): ext4_check_descriptors: Checksum forgroup 0 failed (54076!=0)
EXT4-fs (md1): group descriptors corrupted!
Run Code Online (Sandbox Code Playgroud)
运行 fsck 会产生太多错误而无法认真考虑,所以我没有让它运行。
我试过用“丢失”的设备和两个磁盘重新创建阵列,但没有组合成功。我不确定我是否都尝试过,但我确实尝试了很多。
一些细节:
mdadm
是版本 2.3.2,在 OpenSUSE 12.1、内核 3.1.10、x86_64 上运行smartctl -t short
没有任何错误如何在不丢失信息的情况下重建 RAID 阵列或仅提取信息并将其复制到其他地方?我也很想知道在尝试重新创建数组时我是否在上面做错了什么。
在一点帮助下,我设法通过以下方式重建降级的阵列:
/dev/sdc
和/dev/sdd
磁盘都标有 GPT 分区表/dev/sdd
将分区类型列为而fd
不是83
/dev/sda1
仅使用和创建 RAID 阵列/dev/sdd1
e2fsck -y /dev/md1
(期待大量修复)重建 raid 阵列时的一个有用提示是查看原始设备的前 100 MB,看看它是否看起来像应传递给 e2fsck 的有效 ext2:
dd if=/dev/md1 of=/tmp/md1.img bs=1k count=1024
strings md1.img | lesss
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2808 次 |
最近记录: |