跳转到内容

多块硬盘怎么组:RAID、Btrfs、ZFS 与 mergerfs + SnapRAID ​

读完这一篇,你能根据自己的数据特点,从几种多盘方案里挑出合适的一种,并且知道每种方案坏一块盘时会发生什么。具体操作分别在各方案自己的教程里。

这些方案都是冗余,不是备份

RAID、Btrfs RAID1、ZFS 镜像、SnapRAID 防的是坏盘。误删、勒索软件、整机损坏、被偷,它们一个都防不了。无论选哪个,都要另外做独立备份。

先回答三个问题 ​

  1. 坏一块盘时,必须不停机继续用吗? 必须的话,要实时冗余:软件 RAID、Btrfs RAID1/10、ZFS。可以接受「先从校验里恢复一下」的,可以考虑 SnapRAID。
  2. 数据怎么变化? 经常改写的(虚拟机、数据库、容器、文档),适合实时冗余。一次写入、之后基本只读的(影音库、照片归档),适合 SnapRAID 这类定时校验。
  3. 盘一样大吗?将来怎么扩容? 盘容量混用、想随时加一块盘,mergerfs 和 SnapRAID 最灵活。

六种做法一览 ​

做法在 OMV 里冗余方式坏一块盘时
单盘加独立备份核心功能无冗余,靠备份停机,从备份恢复
软件 RAID + EXT4 或 XFS官方 md 插件镜像或奇偶校验,实时降级运行,换盘后重建
Btrfs 自带 RAID1 或 RAID10核心功能,创建时选,见 Btrfs每份数据两个副本,实时默认选项下无法正常挂载,要降级挂载并用命令行换盘
ZFS 镜像或 RAIDZomv-extras 的 ZFS 插件镜像或奇偶校验,实时降级运行,换盘后重新同步
mergerfsomv-extras 的 mergerfs 插件无冗余,只是把多块盘合成一个目录只丢这块盘上的文件,其他盘不受影响
mergerfs + SnapRAIDomv-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 或镜像。

检查结果 ​

选定方案之后,写下三句话,答不出来就说明还没准备好:

  1. 每块盘上放什么,各是什么文件系统,挂载在哪。
  2. 坏一块盘会发生什么:停机,还是降级运行;谁会收到邮件;你按哪篇文章换盘。
  3. 备份在哪,上一次成功恢复演练是什么时候,见恢复演练。

方案落地之后,用健康检查清单定期确认。

常见问题 ​

我已经有 3 块不同大小的盘,能做 RAID 吗? 能,但 RAID 5 按最小的盘算,大盘多出来的部分被浪费。这种情况更适合 mergerfs 加 SnapRAID,或者 Btrfs RAID1。

以后想从 RAID1 换成 RAID5 怎么办? md 支持在命令行里变换级别,OMV 界面没有这个功能,操作复杂且有风险。更稳妥的做法是备份,重新建阵列,再恢复。

ZFS 和 Btrfs 都有校验,哪个更适合新手? 如果你不想装插件、也不想碰特殊的内核,选 Btrfs;ZFS 能力更全但依赖更多。两者都不是 EXT4 那样「建好就忘」的方案。

选哪种能最省钱? 单盘加备份用的盘最少,SnapRAID 只需要一块校验盘。RAID 1 和 RAID 10 浪费一半容量。

参考资料 ​

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