跳转到内容

软件 RAID:用 md 插件组阵列 ​

读完这一篇,你能用 3 到 4 块盘建出一个 RAID 阵列,在上面建好文件系统并挂载,知道阵列状态怎么看,坏盘时会收到邮件。换盘、扩容与重建见软件 RAID 维护。

RAID 防什么,不防什么 ​

OMV 的 RAID 是 Linux 内核的 md 驱动,用 mdadm 工具管理。从 OMV 7 起,RAID 管理不在核心里,而是官方插件 openmediavault-md。

RAID 是冗余,不是备份

RAID 保护你不因为一块盘坏了而停机或丢数据。它防不了:误删文件(删除会立刻同步到所有盘)、勒索软件加密、病毒、误操作、控制器或主板故障、电源事故、整机被偷或进水。这些都只有独立的备份才救得了,见备份策略。

OMV wiki 的说法更直接:家庭和小团队场景里,两份独立副本(例如 rsync 到另一块盘)往往比 RAID1 更实用,因为损坏和误删不会被即时复制到第二块盘。

级别怎么选 ​

界面提供五个级别。可用容量都按最小的那块盘计算,所以尽量用同容量的盘。

界面级别最少盘数允许坏几块可用容量(N 块盘)适用
条带(Stripe,RAID 0)20N 块之和只为速度,任何一块坏了全部数据都没了,不要放有价值的数据
镜像(Mirror,RAID 1)2N−11 块两块盘最简单的冗余
RAID 104每对镜像里至少剩一块N/2要性能又要冗余,浪费一半容量
RAID 531N−1容量和冗余折中,盘不要太大
RAID 642N−2盘多或盘大时的稳妥选择
  • 盘越大,重建时间越长。RAID 5 和两盘镜像在重建期间已经没有冗余,再坏一块盘就丢数据,RAID 6 还能再坏一块。大容量机械盘,用 RAID 6 比 RAID 5 稳妥。
  • OMV 8 去掉了 Linear(JBOD)级别,因为它在 Linux 内核 6.8 起已被标为弃用。
  • 想要的是「把盘合成一个大目录」而不是冗余,见 mergerfs;多种方案的对比见多块硬盘怎么组。

开始之前 ​

  • 安装 md 插件:系统 → 插件(System → Plugins)里找到 openmediavault-md 安装,装完强制刷新浏览器(Ctrl+Shift+R)。步骤见安装、更新与卸载插件。官方 ISO 是否预装它,以你界面里的显示为准。
  • 成员盘必须是空盘。盘上有文件系统或其他标记时,它不会出现在候选列表里;先在 磁盘 页做一次快速擦除。
  • USB 接入的盘默认不会列出,界面提示是「USB 接入不稳定」。官方文档和 wiki 都明确不建议在 USB 上组 RAID,见外接 USB 硬盘。
  • 机械盘尽量用 CMR,SMR 盘在重建时可能卡住,见数据盘怎么选。
  • 已经配好邮件通知,并为每块成员盘开了 SMART 监控。

创建阵列会覆盖所选所有磁盘上的数据

影响范围:你选中的每一块盘,盘上原有的数据都会丢。OMV 创建时给 mdadm 传了 --run --force,mdadm 自带的「这块盘好像在用」的确认不会再问,所以确认必须在你这一侧做完。

前置条件:

  • 按型号、序号和容量逐块核对成员盘,不是靠 /dev/sdX。
  • 成员盘上没有需要保留的数据。
  • 阵列建好后,里面的数据另有独立备份。

怎么回退:删除阵列只会拆掉阵列、清除成员盘上的 RAID 标记,不会还原盘原来的内容。第一次做,先用测试盘或虚拟机演练。

操作步骤 ​

一、创建阵列 ​

  1. 打开 存储器 → RAID 管理(Storage → Multiple Device),点创建。
  2. 级别(Level)选一个,默认是 RAID 5。
  3. 设备(Devices)多选成员盘。每个级别有最少盘数,不够时表单会提示「至少需要四台设备」之类。
  4. 点保存。OMV 随即创建 /dev/md0(编号顺延)。界面里没有名称字段。

二、等待首次同步 ​

冗余级别(镜像、RAID 5、RAID 6、RAID 10)刚建好时,状态里会带「重新同步(resyncing)」和进度百分比,后台在计算校验或建立镜像。同步期间阵列可以用,但这时还没有完整的冗余:同步没完时坏一块盘,数据可能保不住。别急着放不可替代的数据,等到状态变成 clean 或 active。

同步时间取决于盘的容量和速度,机械大盘可能要好几个小时。

三、在阵列上建文件系统 ​

  1. 打开 存储器 → 文件系统(Storage → File Systems),点加号,选 EXT4 或 XFS,见创建并挂载文件系统。
  2. 设备下拉框里的阵列显示为「Software RAID [/dev/md0, raid5, 容量]」。选它,保存。
  3. 在挂载页选这个文件系统,保存,点应用。

阵列这类叠加设备,OMV 不会再在上面划分区,直接用整个设备。Btrfs 不建议放在 md 上,原因见选择文件系统。

四、配置告警 ​

打开 系统 → 通知 → 事件(System → Notification → Events),确认「RAID 管理(软 RAID)」这一项是开的,并且邮件通知已设置好,见配置邮件通知。阵列进入降级状态等事件会发邮件。

用下面的命令可以不弄坏任何盘就验证告警邮件,在 OMV 的 shell(SSH 或本机控制台,以 root 身份)执行:

sh
mdadm --monitor --scan --oneshot --test

它给每个阵列生成一条测试告警并发到通知里的主邮箱。没收到,先检查邮件设置。没有启用邮件通知时,告警不会发邮件,只写进系统日志(诊断 → 系统日志(Diagnostics → System Logs))。

读懂 RAID 管理页 ​

表格的列:设备(/dev/md0)、状态(State)、级别、容量、设备(成员盘)。状态的常见取值:

状态含义
clean、active正常。active 表示正在被读写,8.1.6 起仪表盘也把它当作健康
带 degraded降级:有成员盘缺失或故障,数据还能读,但已经没有(或少了)冗余,要立即处理
带 resyncing、recovering、reshaping 和百分比正在同步、重建或重塑,期间不要断电重启
inactive阵列没有运行,多半是成员盘缺了太多

具体文字以你界面里的显示为准。仪表盘上还有「MD 设备」小部件,正常的阵列(clean、active)显示为绿色,其他状态不是绿色,值得点进去看。

工具栏的图标,悬停会显示提示:

提示作用
添加(Add)给阵列加盘并扩容,触发重塑,见维护篇
移除(Remove)把成员盘标记为故障并移出阵列,用来换坏盘
恢复(Recover)给降级的阵列加一块替换盘来重建;给健康的阵列加盘则是加热备盘
维护(Maintenance)检查、修复、停止一次一致性检查(仅冗余级别)
显示详情等同于 mdadm --detail
删除停止阵列并清除成员盘上的 RAID 标记。阵列被文件系统引用时是灰的

检查结果 ​

  1. RAID 管理 页里新阵列的状态最终是 clean 或 active,级别和成员盘与你选的一致。
  2. 在 OMV 的 shell 里看(都是只读):
sh
cat /proc/mdstat
mdadm --detail /dev/md0

/proc/mdstat 里每个阵列的末尾像 [3/3] [UUU],表示 3 块盘全部在线;有下划线如 [UU_] 就是降级。

  1. 重启一次,阵列应当自动组装并保持挂载。
  2. 测试告警邮件,见上面的命令。

RAID 5/6 的条带缓存 ​

OMV 的 udev 规则默认把 RAID 5/6 阵列的 md/stripe_cache_size 设为 8192,来提高写入性能。内核默认只有 256。它占用的内存按 md 手册给出的公式估算:

内存 ≈ 页大小(通常 4 KiB)× 成员盘数 × stripe_cache_size

所以 8192 的设置,4 块盘大约 128 MiB,8 块盘大约 256 MiB。内存很紧时可以调小,用环境变量 OMV_MD_STRIPE_CACHE_SIZE(8.0.4 起提供),方法见环境变量。这个设置只对 RAID 4/5/6 有意义。

常见问题 ​

候选列表里没有我的盘。 盘上还有文件系统或其他标记(先擦除);它是 USB 盘(默认隐藏);它被别的插件配置引用了;或者它是只读设备。

升级到 OMV 8 之后收到 DeviceDisappeared、NewArray 告警邮件。 这是 Debian 13 里 mdadm 的一个回归(Debian bug 1040638)。OMV 8.5.9 加了一条 udev 规则绕开它,更新到该版本以上即可,见系统更新。

有没有办法在 USB 盘上建阵列? md 插件里存在 OMV_MDMGMT_ALLOW_USB_DEVICES 这个环境变量,但官方标明默认不支持。USB 桥接芯片会过滤硬盘特性、不透传 SMART、让阵列组装变慢,出问题时社区也不提供支持。不建议用它绕开限制。

阵列降级了怎么办。 先看RAID 降级,换盘步骤见软件 RAID 维护。

想删除阵列,删除按钮是灰的。 阵列上的文件系统还被引用着。先去掉共享文件夹对它的引用,再卸载文件系统,最后才能删除阵列。

参考资料 ​

OpenMediaVault 非官方中文使用指南,与 openmediavault 项目及其开发者无隶属关系。