我跟着本指南设置带有两个磁盘的 raid-1 阵列(我在恢复 shell 中工作,因此没有“sudo”):
mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdc /dev/sdd
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
mkfs.ext4 -F /dev/md0
e2label /dev/md0 home
echo >>/etc/fstab 'LABEL=home /home ext4 defaults 0 2
mkdir -p /mnt/md0
mount /dev/md0 /mnt/md0
( cd /home && tar cf - * ) | ( cd /mnt/md0 && tar xvf - )
一切顺利,直到下次重启(我等待同步成功完成)。
重启后 /dev/md0 丢失,我重新发出初始命令:
mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdc /dev/sdd
...并重新创建了磁盘,内容完整(我用“rsync”检查过),但又重新启动了同步。
我再次等待它终止(几个小时!)并再次重新启动。
Raid 设备再次丢失,而且显然超级块从未写入磁盘,因为我在第一个扇区的末尾发现了两个空的分区表(参见 aa55 签名)。
root@cinderella:~# mdadm --assemble /dev/md0 /dev/sdc /dev/sdd
mdadm: Cannot assemble mbr metadata on /dev/sdc
mdadm: /dev/sdc has no superblock - assembly aborted
root@cinderella:~# mdadm --misc --examine /dev/sd[cd]
/dev/sdc:
MBR Magic : aa55
Partition[0] : 3907029167 sectors at 1 (type ee)
/dev/sdd:
MBR Magic : aa55
Partition[0] : 3907029167 sectors at 1 (type ee)
root@cinderella:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
unused devices: <none>
我准备从头开始重做一切,但这需要花费很多时间(那些是 2T 磁盘,我需要复制的内容约为 1T),并且我想在再次旋转之前了解出了什么问题。
说实话,这看起来像是一个 mdadm 错误(严重的错误!),但是我当然也可能错了。
现在我重新创作并且......
root@cinderella:~# mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdc /dev/sdd
mdadm: partition table exists on /dev/sdc
mdadm: partition table exists on /dev/sdc 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: partition table exists on /dev/sdd
mdadm: partition table exists on /dev/sdd but will be lost or
meaningless after creating array
mdadm: size set to 1953382464K
mdadm: automatically enabling write-intent bitmap on large array
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
root@cinderella:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdd[1] sdc[0]
1953382464 blocks super 1.2 [2/2] [UU]
[>....................] resync = 0.1% (2260544/1953382464) finish=230.1min speed=141284K/sec
bitmap: 15/15 pages [60KB], 65536KB chunk
unused devices: <none>
root@cinderella:~# mount -v /dev/md0 /mnt/md0
mount: /dev/md0 mounted on /mnt/md0.
root@cinderella:~# ls -la /mnt/md0
total 36
drwxr-xr-x 6 root root 4096 Feb 18 22:40 .
drwxr-xr-x 4 root root 4096 Feb 18 22:34 ..
drwxr-xr-x 7 mauro mauro 4096 Feb 23 2018 etherpad
drwx------ 2 root root 16384 Feb 18 11:10 lost+found
drwxr-xr-x 16 mauro mauro 4096 Nov 10 11:42 mauro
drwxr-xr-x 127 mcon mcon 4096 Feb 19 15:09 mcon
root@cinderella:~#
任何想法?
答案1
对于任何处于我这种情况的人:
我不知道这是不是一个错误,但它似乎mdadm 对 MBR 中的分区表非常敏感。
经过多次尝试我终于解决了我的问题,方法如下:
- 重启
- 打开 MBR每个驱动器在阵列中:
- dd if=/dev/zero of=/dev/sdc bs=512 count=1
- dd if=/dev/zero of=/dev/sdd bs=512 count=1
- 重新创建阵列(这将触发重新同步):
- mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdc /dev/sdd
- 检查内容没有丢失
- 挂载 /dev/md0 /mnt
- 检查内容
- 卸载 /mnt
- 等待重新同步终止(否则 fsck 将非常慢的)
- fsck -pfC /dev/md0
- 持久化数组
- mdadm --examine --scan >> /etc/mdadm/mdadm.conf
- 如果存在,则删除旧的持久线。
- 更新-initramfs -u
- 再次重新启动(以确保一切正常)。
- 享受!
答案2
我知道这是一个僵尸线程,但我完全被一个无法在重启后持续存在的 raid 阵列困住了,这解决了这个问题。磁盘是从另一台服务器回收的。