Linux RAID阵列重建完整操作指南
Linux RAID阵列重建,是指在软RAID中某块成员盘损坏或被移除后,用新盘替换并让mdadm重新同步数据的过程。
它不依赖重启,也不要求重建整个阵列,只要阵列还没完全失效,就可以在线恢复。
下面按零基础也能照做的顺序,把准备、操作和验证讲清楚。
确认阵列当前状态
登录服务器,先查看/proc/mdstat和mdadm详情,确认哪块盘掉了。
cat /proc/mdstat
sudo mdadm --detail /dev/md0
重点看两个位置:一是State是否显示degraded,二是Faulty或Removed对应的设备名,例如/dev/sdb。
如果阵列是clean且所有盘都在,说明不需要重建。
再用lsblk确认新盘是否已被系统识别,避免把系统盘误当成替换盘。
更换磁盘前的准备
在动手前完成三件事。
第一,备份关键数据。
即使RAID还在工作,重建期间也存在二次故障风险。
第二,记录原阵列信息。
执行sudo mdadm --detail /dev/md0,把Raid Level、Array Size、Chunk Size等参数记下来,新盘容量不能小于原成员盘。
第三,确认新盘没有挂载。
用mount | grep sdb检查,如果新盘有分区或文件系统,先卸载再操作。
替换故障盘并加入阵列
假设故障盘是/dev/sdb,新盘也是/dev/sdb。
如果设备名变化,请以lsblk实际结果为准。
先标记故障盘为移除状态,避免内核继续访问坏盘:
sudo mdadm /dev/md0 --fail /dev/sdb
sudo mdadm /dev/md0 --remove /dev/sdb
如果服务器支持热插拔,直接更换硬盘;
不支持则关机更换。
更换后确认新盘出现:
lsblk
新盘通常不需要分区,直接作为RAID成员使用。
把新盘加入阵列:
sudo mdadm /dev/md0 --add /dev/sdb
执行后再次查看/proc/mdstat,应该看到recovery或resync进度,说明重建已经开始。
监控重建进度与验证结果
重建期间不要重启,也不要对阵列做其他写操作。
用下面命令持续观察:
watch -n 5 cat /proc/mdstat
进度到100%后,检查阵列状态:
sudo mdadm --detail /dev/md0
State应显示clean,Active Devices数量恢复到设计值,Failed Devices为0。
最后用df -h确认文件系统仍可正常读写。
常见问题与避坑说明
新盘容量比原盘小:无法加入阵列,必须换容量相同或更大的盘。
设备名漂移:重启后/dev/sdb可能变成/dev/sdc。
生产环境建议用/dev/disk/by-id/下的持久化名称,避免加错盘。
重建速度慢:机械盘重建大容量阵列可能持续数小时甚至更久,属于正常现象。
可临时调整/proc/sys/dev/raid/speed_limit_min,但不要为了提速影响业务IO。
重建中再次掉盘:立即停止写入,评估是否还有备份可用,不要盲目继续强制同步。
开机后阵列未自动组装:
检查/etc/mdadm/mdadm.conf或/etc/mdadm.conf是否包含阵列UUID,
必要时执行sudo update-initramfs -u更新引导镜像。
什么时候不适合直接重建
如果阵列中多块盘同时故障,或/proc/mdstat显示阵列已停止,直接重建可能无法成功。
此时应优先从备份恢复,或寻求专业数据恢复,不要反复尝试强制组装,以免扩大损坏。
Linux RAID阵列重建本身不复杂,关键是先确认故障盘、再安全移除、最后加入新盘并盯着同步进度。
操作前做好备份,操作中保持阵列在线,操作后验证状态和读写,就能把降级阵列恢复到正常水平。