外观
多块硬盘怎么组:RAID、Btrfs、ZFS 与 mergerfs + SnapRAID
读完这一篇,你能根据自己的数据特点,从几种多盘方案里挑出合适的一种,并且知道每种方案坏一块盘时会发生什么。具体操作分别在各方案自己的教程里。
这些方案都是冗余,不是备份
RAID、Btrfs RAID1、ZFS 镜像、SnapRAID 防的是坏盘。误删、勒索软件、整机损坏、被偷,它们一个都防不了。无论选哪个,都要另外做独立备份。
先回答三个问题
- 坏一块盘时,必须不停机继续用吗? 必须的话,要实时冗余:软件 RAID、Btrfs RAID1/10、ZFS。可以接受「先从校验里恢复一下」的,可以考虑 SnapRAID。
- 数据怎么变化? 经常改写的(虚拟机、数据库、容器、文档),适合实时冗余。一次写入、之后基本只读的(影音库、照片归档),适合 SnapRAID 这类定时校验。
- 盘一样大吗?将来怎么扩容? 盘容量混用、想随时加一块盘,mergerfs 和 SnapRAID 最灵活。
六种做法一览
| 做法 | 在 OMV 里 | 冗余方式 | 坏一块盘时 |
|---|---|---|---|
| 单盘加独立备份 | 核心功能 | 无冗余,靠备份 | 停机,从备份恢复 |
| 软件 RAID + EXT4 或 XFS | 官方 md 插件 | 镜像或奇偶校验,实时 | 降级运行,换盘后重建 |
| Btrfs 自带 RAID1 或 RAID10 | 核心功能,创建时选,见 Btrfs | 每份数据两个副本,实时 | 默认选项下无法正常挂载,要降级挂载并用命令行换盘 |
| ZFS 镜像或 RAIDZ | omv-extras 的 ZFS 插件 | 镜像或奇偶校验,实时 | 降级运行,换盘后重新同步 |
| mergerfs | omv-extras 的 mergerfs 插件 | 无冗余,只是把多块盘合成一个目录 | 只丢这块盘上的文件,其他盘不受影响 |
| mergerfs + SnapRAID | omv-extras 的 mergerfs 与 SnapRAID 插件 | 定时计算校验,不是实时 | 先用校验把这块盘恢复出来,恢复前这块盘的数据不可用 |
它们的差别和代价
| 做法 | 扩容 | 混用不同容量 | 数据校验 | 主要代价 |
|---|---|---|---|---|
| 单盘 | 加盘、另建文件系统 | 不涉及 | EXT4、XFS 只校验元数据;Btrfs 有 | 没有冗余;扩容后是多个独立的盘 |
| 软件 RAID | 加盘并重塑(慢),再扩文件系统 | 按最小的盘算 | 无,md 只管冗余不校验数据 | 重建慢;RAID 5/6 吃一点内存做条带缓存 |
| Btrfs RAID | 命令行加盘并 balance | 可以混用,可用容量的计算比较绕,创建前先算清楚 | 有,scrub 可自愈 | RAID5/6 官方标为不稳定,OMV 界面没有;换盘靠命令行 |
| ZFS | 加 vdev、换更大的盘,或较新的 RAIDZ 扩展(慢) | vdev 内按最小的盘算 | 有,scrub 自愈 | 要 omv-extras 和合适的内核;ARC 读缓存占内存 |
| mergerfs | 随时加盘 | 任意 | 无 | 盘损坏就丢那块盘的文件;不能放 Docker 或数据库的数据 |
| mergerfs + SnapRAID | 加数据盘;校验盘必须不小于最大的数据盘 | 任意(校验盘除外) | 有(scrub),但是定时的 | 上次同步之后改动的数据没有保护;同步时避免写入 |
补充几条出处明确的要点:
- Btrfs RAID1 是「每份数据两个副本,放在不同的盘上」,不是所有盘互为镜像,容量约为总量的一半。
- ZFS 插件指南说,4 至 8 GB 内存跑家用 NAS 完全可以;它的前提是 64 位 amd64,并不支持树莓派这类 ARM 板,推荐先装 Proxmox 内核。
- SnapRAID 的硬性要求:校验盘必须不小于最大的数据盘,并且只能用来放校验。数据盘上跑容器的话,同步时要暂停它们。
- mergerfs 的 OMV wiki 说明:不要把关系型数据库和 Docker 的数据放在池里。
按场景选
| 你的情况 | 建议 |
|---|---|
| 只有 1 到 2 块盘,数据不多 | 两块盘各自 EXT4,一块放数据,另一块用 rsync 做备份,见 rsync 任务。OMV wiki 认为,家庭和小团队场景里,两份独立副本往往比 RAID1 更实用,因为误删和损坏不会被即时复制到第二块盘 |
| 2 块盘,要求坏盘不停机 | Btrfs RAID1,或 md 镜像加 EXT4。仍然需要备份 |
| 3 到 4 块盘,装文件和照片 | md RAID 5 或 RAID 6;想要快照和校验就考虑 Btrfs RAID1、RAID10 或 ZFS |
| 影音库,盘大小不一,写入少 | mergerfs + SnapRAID,见影音仓库 |
| 虚拟机、容器、数据库,随机写多 | 固态盘做镜像(md、Btrfs 或 ZFS)。不要用 RAID5/6 或 SnapRAID |
| 小团队文件服务器 | md RAID 6 或 RAID 10,或者 ZFS;配合配额和每天的备份,见小团队文件服务器 |
| 树莓派、ARM 板、USB 盘 | 单盘加备份。别在 USB 盘上组 RAID,ZFS 也不适合 |
不要这样组
- USB 盘组 RAID。 官方不支持,md 插件默认不列出 USB 盘。
- 用条带(RAID 0)存重要数据。 任何一块盘坏了全部丢失。
- 把 Btrfs 建在 md 阵列上期望自愈。 Btrfs 只看到一份数据,修不了,见选择文件系统。
- 用 SnapRAID 保护经常变化的数据。 它保护的是上次同步时的状态。
- 用 mergerfs 当备份。 它没有冗余,只是个合并视图。
- 一次买来同一批的盘全放进一个 RAID 5。 同一批盘往往在相近的时间磨损,重建期间再坏一块的概率比想象的高。大盘建议 RAID 6 或镜像。
检查结果
选定方案之后,写下三句话,答不出来就说明还没准备好:
- 每块盘上放什么,各是什么文件系统,挂载在哪。
- 坏一块盘会发生什么:停机,还是降级运行;谁会收到邮件;你按哪篇文章换盘。
- 备份在哪,上一次成功恢复演练是什么时候,见恢复演练。
方案落地之后,用健康检查清单定期确认。
常见问题
我已经有 3 块不同大小的盘,能做 RAID 吗? 能,但 RAID 5 按最小的盘算,大盘多出来的部分被浪费。这种情况更适合 mergerfs 加 SnapRAID,或者 Btrfs RAID1。
以后想从 RAID1 换成 RAID5 怎么办? md 支持在命令行里变换级别,OMV 界面没有这个功能,操作复杂且有风险。更稳妥的做法是备份,重新建阵列,再恢复。
ZFS 和 Btrfs 都有校验,哪个更适合新手? 如果你不想装插件、也不想碰特殊的内核,选 Btrfs;ZFS 能力更全但依赖更多。两者都不是 EXT4 那样「建好就忘」的方案。
选哪种能最省钱? 单盘加备份用的盘最少,SnapRAID 只需要一块校验盘。RAID 1 和 RAID 10 浪费一半容量。
参考资料
- OMV 新手指南 与 Utilities, Maintenance and Backup(RAID 与备份的关系)
- OMV 文档:前提条件(CMR 与 SMR)
- OMV ZFS 插件指南
- mergerfs 的 omv-extras wiki 与 SnapRAID 的 omv-extras wiki(OMV 7 页面,OMV 8 页面是占位)
- Btrfs 文档:mkfs.btrfs 的配置表