当 mdadm --detail 显示 resync = DELAYED,说明 RAID 重建被内核延迟执行,通常因系统负载高、I/O 压力大或 sync_speed_min 过低;可通过 echo check > /sys/block/mdX/md/state 手动触发同步,并调整 sync_speed_min/max 避免再次延迟。

当 mdadm --detail 显示 resync = DELAYED,说明 RAID 重建(或初始同步)被内核延迟执行,通常因系统负载过高、I/O 压力大或设置了同步速率限制。这不是错误状态,但若你确认当前负载可控、希望立即恢复同步,可通过以下方式强制继续:
检查并清除同步延迟触发条件
DELAYED 本质是内核的主动节流行为,常见原因包括:
- 系统 I/O 负载过高:如大量磁盘读写、swap 活跃、其他 RAID 或 LVM 操作正在进行
-
设置了过低的 sync_speed_min:可通过
/sys/block/mdX/md/sync_speed_min查看,若为 0 或极小值(如 1),可能导致同步长期停滞 - 存在 pending recovery 请求但未触发:某些 md 版本在设备刚上线或状态异常后会暂不启动 resync
手动触发同步重启(推荐)
最直接有效的方式是向 sysfs 写入命令,通知内核立即开始同步:
echo check > /sys/block/mdX/md/state
其中 mdX 替换为你实际的阵列名(如 md0)。该操作不会破坏数据,而是让内核重新评估同步必要性并启动(等效于“唤醒”延迟任务)。若当前确实需要完整重校验,也可用:
echo repair > /sys/block/mdX/md/state
注意:repair 会执行完整校验 + 修复(需所有设备在线且无硬错误),而 check 仅校验不自动修复,更安全。
调整同步速率以避免再次延迟
防止后续又进入 DELAYED 状态,建议合理设置最小同步速度:
- 查看当前值:
cat /sys/block/mdX/md/sync_speed_min - 设为合理下限(例如 10000 KB/s):
echo 10000 > /sys/block/mdX/md/sync_speed_min - 同步上限也可调高(默认常为 200000):
echo 300000 > /sys/block/mdX/md/sync_speed_max
这些值单位是 KB/s,设置后立即生效,无需重启阵列。
验证是否已恢复同步
执行触发命令后,等待数秒,再运行:
mdadm --detail /dev/mdX
观察输出中 Resync Status 是否变为进度百分比(如 resync = 15% ),同时 /proc/mdstat 应显示活跃的 [=>...] 进度条。若仍为 DELAYED,需检查 dmesg 中是否有 I/O 错误或设备离线提示:
dmesg | tail -20 | grep -i "md\|raid"










