我的服务器中有 4 个磁盘。sda 和 sdb 组合成 RAID1 并安装操作系统。sdc 和 sdd 是第二个 RAID1 设备,它有一个卷组和一堆 LVM。sdd 坏了,所以我的数据 RAID 降级了。在更换 sdd 后(但在添加到 RAID 之前),grub 决定失去理智并拒绝启动。最快的修复方法是重新安装操作系统,因为上面没有重要的东西。
我在安装过程中删除了 sdc 和 sdd,以确保它们不会被错误覆盖。安装完成后,我把驱动器放回去,Centos 自动找到了我的卷组。不过 sdc 不再是 RAID 阵列的一部分。
它的分区是 /dev/sdc1 Linux raid 自动检测
我的问题是 - 如何使用 mdadm 重新创建 sdc1、sdd1 RAID 阵列而不丢失 sdc 上已有的数据?
我最好的猜测是先仅使用 sdc1 创建数组,然后添加 sdd1 (因此它从 sdc 重建为 sdd)
编辑 再次查看 /cat/mdstat 的输出后,我发现有些奇怪。我的数据磁盘显示为 RAID 阵列的一部分,但我的一个 OS RAID 阵列丢失了(并且 fstab 试图将我的交换链接到我的数据磁盘)。
fdisk /dev/sda 设备启动开始结束块ID系统 /dev/sda1 * 1 32 257008+ fd Linux raid 自动检测 /dev/sda2 33 2072 16386300 fd Linux raid 自动检测 /dev/sda3 2073 30401 227552692+ fd Linux raid 自动检测
md1 应该是 /dev/sda2 和 /dev/sdb2,但它缺失
猫/proc/mdstat 人物 : [raid1] md2 :活动 raid1 sdb1[1] sda1[0] 256896 块 [2/2] [UU] md3 :活动 raid1 sdc1[0] 1465135936 块 [2/1] [U_] md0 :活动 raid1 sdb3[1] sda3[0] 227552576 块 [2/2] [UU]
当我尝试创建 md2 时,我得到:
[root@xen2 ~]# mdadm --create /dev/md1 --level=1 --raid-disks=2 /dev/sda2 /dev/sdb2 mdadm:/dev/sda2 似乎是 raid 阵列的一部分: 级别=raid1 设备=2 ctime=2012 年 8 月 15 日星期三 02:48:06 mdadm:/dev/sdb2 似乎是 raid 阵列的一部分: 级别=raid1 设备=2 ctime=2012 年 8 月 15 日星期三 02:48:06 是否继续创建数组?n
mdadm 扫描也显示缺少
[root@xen2 ~]# mdadm --detail --scan 数组/dev/md0 级别=raid1 设备数量=2 元数据=0.90 UUID=51ef54bd:770bb58e:90183df1:d82a79c7 数组/dev/md3 级别=raid1 设备数量=2 元数据=0.90 UUID=2d7dfb1e:6b091396:a7558ec2:4d288e6f 数组 /dev/md2 级别=raid1 设备数量=2 元数据=0.90 UUID=ecdd769b:c49d51b6:fe43f166:465b7073
我不确定为什么 /dev/md1 在重启后丢失,但重建它安全吗?
答案1
是的,您需要使用 sdc 驱动器以降级模式启动阵列。然后,您可以重新添加故障驱动器 sdd。
我通常使用带有选项 --assemble 的 mdadm 命令来组装阵列,并以降级模式启动阵列,仅使用一个磁盘。如下所示:
$ mdadm --assemble /dev/md1 /dev/sda2
您可能需要使用-f
选项来强制启动降级阵列。
如果一切正常,您可以继续重新添加更换的驱动器。
$ mdadm --re-add /dev/md1 /dev/sdb2
我以前多次使用过这些命令,没有遇到任何数据丢失。当驱动器正常时,它们可以顺利运行。
预防措施:在运行此类命令之前,请备份您的磁盘,以避免任何可能的数据丢失。