外观
RAID 降级
适用范围
存储器 → RAID 管理(Storage → Multiple Device)里,阵列的状态带有degraded。- 收到 mdadm 的告警邮件,主题里有
DegradedArray、Fail之类的事件。 cat /proc/mdstat里出现[U_]、[UU_]这样的状态,其中_表示缺了一块成员盘。
这一页只讲 OMV 的软件 RAID(md 插件)。几点说明:
- RAID 0(Stripe)没有冗余:掉一块盘,整个阵列就失效了,不会显示「降级」。
- ZFS 池降级、Btrfs 缺盘、SnapRAID、mergerfs 各有自己的工具,见ZFS 插件、Btrfs 维护:scrub、balance 与换盘。
- 阵列整个不见了(
/proc/mdstat里没有它),不属于降级,直接看第 6 节。
开始排查前
先备份,再谈重建
影响范围:降级意味着冗余已经部分丧失。RAID 1 和 RAID 5 在这个状态下再坏一块盘,阵列里的数据就可能全部丢失。重建要把剩余的磁盘从头到尾读一遍,正是旧盘最容易暴露隐患的时刻。
前置条件:先把重要数据复制到阵列之外的独立位置。降级的阵列仍然可读可写。冗余不是备份,没有独立备份的话,现在就是补的时候。
不要做的事:在没搞清状况之前,不要执行 mdadm --create、mdadm --assemble --force、mdadm --zero-superblock,也不要擦除成员盘,更不要在降级时点界面上的修复(Repair)。这些操作会改写 RAID 元数据或覆盖数据,可能让数据再也找不回来。
回退办法:重建一旦开始,无法撤销。你的退路是事先复制出来的那份数据。
排查步骤
1. 看清楚状态
在 存储器 → RAID 管理 里选中阵列,点显示详情(Show details),或者在 shell 里查看:
sh
# 在 OMV 的 shell 里执行(只读);<阵列设备> 例如 /dev/md0
cat /proc/mdstat
mdadm --detail /dev/<阵列设备>怎么读:
[UU_]:U是在线的成员,_是缺失的成员。- 成员盘名字后面带
(F):这块盘已被标记为故障。 recovery = 12.3%或resync = ...:正在重建或同步,进度在后面。mdadm --detail里的State是clean, degraded,下面的设备列表会列出每个成员的状态(active sync、faulty、removed)。
2. 确认是哪一块盘
/dev/sdX 这样的名字会随重启或插拔而变化,不能凭它换盘。用序列号确认:
sh
# 在 OMV 的 shell 里执行(只读);<磁盘> 例如 sdb
lsblk -o NAME,SIZE,MODEL,SERIAL
smartctl -i /dev/<磁盘>再对照机箱里每块盘标签上的序列号,确认物理上是哪一块。参考磁盘管理:识别、擦除与电源设置。
3. 判断是盘坏了,还是线或电源的问题
sh
# 在 OMV 的 shell 里执行(只读)
smartctl -H -A /dev/<磁盘>
journalctl -k -b --no-pager | grep -iE 'I/O error|ata[0-9]+.*(error|reset|link)'- SMART 的 5(重新分配扇区)、197(待处理扇区)、198(无法修正扇区)在增长,或 SMART 整体判定为失败:盘坏了,需要换。
- SMART 正常,但日志里有链路复位、
link is slow:多半是数据线、接口或电源的问题。关机重新插拔或换线之后,盘可能就恢复了;把它加回阵列通常会触发一次重建,见第 5 节。 - 内核报
I/O error, dev sdX, sector ...:底层出了问题。OMV 8.5.10 起,这类错误会发告警邮件,前提是邮件通知可用,并且「杂项」通知项开着。
4. 先排除误报
Debian 13 的 mdadm 有一个上游回归,会在每天的监控里触发错误的 DeviceDisappeared 和 NewArray 告警。OMV 8.5.9 加了一条 udev 规则来绕开它。收到这类告警,先看 /proc/mdstat,确认阵列是不是真的降级,再决定要不要动手。 版本低于 8.5.9 的,先更新。
没有配置邮件通知的话,mdadm 的事件会写进系统日志,用这条命令查看:
sh
# 在 OMV 的 shell 里执行(只读)
journalctl -t mdmonitor --no-pager | tail -n 30按 OMV 的配置,mdadm 的监控守护进程会持续运行(/etc/default/mdadm 里 START_DAEMON=true),每天还有一次 mdadm --monitor --scan --oneshot 的扫描。邮件能不能发出,取决于邮件通知和相应的通知项有没有配好。判断阵列状态,直接看界面和 /proc/mdstat,不要只等邮件。
5. 决定怎么处理
| 情况 | 处理 |
|---|---|
| 确认盘坏了 | 买一块容量不小于原成员盘的新盘,先核对序列号再换下坏盘,然后在 RAID 管理 里选中阵列,用恢复(Recover)把新盘加进去,重建随后自动开始。完整步骤见软件 RAID 维护:换盘、扩容与重建。按界面的按钮条件,新增(Add)和移除(Remove)只在阵列状态是 clean 或 active 时才能点,降级的阵列上它们可能是灰的,这是预期现象,恢复不受这个限制,以你界面上的显示为准 |
| 盘没坏,只是掉线 | 先处理线缆、接口,再把盘加回阵列,通常要完整重建一次 |
| 有热备盘 | 看一下重建有没有自动开始 |
| RAID 5 同时缺了两块,或 RAID 1 两块都缺 | 阵列很可能已无法组装。立即停手,不要尝试强制组装,见第 6 节 |
界面里恢复页面的提示:向降级的阵列加入磁盘会开始重建,内核会自动同步数据,这可能花很长时间,期间不要关机或重启。重建期间可以随时用 cat /proc/mdstat 看进度。
新加入的盘如果以前用过,先在 存储器 → 磁盘(Storage → Disks)里确认它上面没有你需要的数据,再按需擦除,擦除前按型号和序列号核对,见磁盘管理:识别、擦除与电源设置。
6. 阵列整个不见了,或者无法组装
只读地看一下成员盘上的 RAID 元数据:
sh
# 在 OMV 的 shell 里执行(只读);<成员盘分区> 例如 /dev/sdb1
mdadm --examine /dev/<成员盘分区>然后停手,不要强制组装,不要重新创建阵列。把输出保存下来,用救援系统先只读地检查,并带着输出去求助,见如何有效求助。
确认恢复
cat /proc/mdstat显示[UU](成员数全部在线),没有recovery或resync。mdadm --detail /dev/<阵列设备>里State是clean,所有成员都是active sync。存储器 → 文件系统(Storage → File Systems)里阵列上的文件系统已挂载,抽样打开几个文件。- 新换的盘做一次 SMART 长测,见S.M.A.R.T.:监控硬盘健康。
- 重新做一次备份,并抽样恢复验证,见恢复演练。
仍未解决
附上:cat /proc/mdstat、mdadm --detail /dev/<阵列设备> 和 mdadm --examine 的输出,每块成员盘的 smartctl -a(序列号分享前遮盖),内核日志里相关的行,以及最近做过的操作(换盘、断电、更新)。读如何有效求助。
omv-extras 的文档提醒:向社区求助存储问题时,有经验的成员默认你已有完整备份,他们给出的修复建议可能导致数据丢失。
参考资料
- OMV 8 更新记录:8.5.9 的 mdadm 误报绕行、8.5.10 的块设备 I/O 错误告警,见OMV 8.1–8.5 更新要点
- 本站:软件 RAID:用 md 插件组阵列、硬件选型:机械硬盘选购