今天早上,我们的一台大型生产服务器由于端口 0(可启动端口)上的 HDD 故障而崩溃。
该服务器在 RAID 1 中使用 mdadm 运行 CentOS 6.5。尽管一名实习生更换了硬盘(这很好)并尝试重建 RAID 阵列,但失败了。看起来他删除了 RAID 配置。
现在,我处于救援模式(数据中心网络启动)。
fdisk -l
以下是:root@rescue:~# fdisk -l的输出
Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/sda doesn't contain a valid partition table
Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 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
Disk identifier: 0x000a5c6d
Device Boot Start End Blocks Id System
/dev/sdb1 * 4096 41947135 20971520 fd Linux raid autodetect
/dev/sdb2 41947136 1952468991 955260928 fd Linux raid autodetect
/dev/sdb3 1952468992 1953519615 525312 82 Linux swap / Solaris
Disk /dev/md2: 978.2 GB, 978187124736 bytes
2 heads, 4 sectors/track, 238815216 cylinders, total 1910521728 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
Disk identifier: 0x00000000
Disk /dev/md2 doesn't contain a valid partition table
Disk /dev/md1: 21.5 GB, 21474770944 bytes
2 heads, 4 sectors/track, 5242864 cylinders, total 41942912 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
Disk identifier: 0x00000000
Disk /dev/md1 doesn't contain a valid partition table
root@rescue:~# cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath] [faulty]
md1 : active raid1 sdb1[1]
20971456 blocks [2/1] [_U]
md2 : active raid1 sdb2[1]
955260864 blocks [2/1] [_U]
unused devices: <none>
sda
是更换的磁盘,而sdb
是 RAID 磁盘。
以下是输出cat /proc/mdstat
root@rescue:~# cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath] [faulty]
md1 : active raid1 sdb1[1]
20971456 blocks [2/1] [_U]
md2 : active raid1 sdb2[1]
955260864 blocks [2/1] [_U]
unused devices: <none>
我如何重建 RAID?例如,将 sdb 的内容重新复制到 sda,然后保持 RAID 正常工作?
答案1
首先,您必须创建一个/dev/sda
与/dev/sdb
使用 fdisk 类似的分区表。
然后,您发出:
mdadm --manage /dev/md1 --fail /dev/sda1
mdadm --manage /dev/md2 --fail /dev/sda2
命令将 /dev/sdaX 镜像标记为失败。MD 层可能已将这些镜像视为失败,因此这些镜像可能会显示错误消息。
然后,从 RAID 中移除 sdaX:
mdadm --manage /dev/md1 --remove /dev/sda1
mdadm --manage /dev/md2 --remove /dev/sda2
同样,MD 可能认为这些已被删除,因此可能会出现错误消息。
最后将更换的硬盘添加到阵列中:
mdadm --manage /dev/md1 --add /dev/sda1
mdadm --manage /dev/md2 --add /dev/sda2
此后您应该会看到/proc/mdstat
系统正在重建阵列。