跳转到内容

SnapRAID:给多块独立硬盘加校验 ​

完成后,你的几块数据盘仍然各自独立,另有一块校验盘保存校验数据。任何一块数据盘坏了,换上新盘就能把数据重建回来;定期侦测还能发现并修复悄悄发生的位腐烂。

适合谁 ​

  • 数据很少改动:影视库、照片库、归档文件。
  • 盘的容量不一样,或者已经装满了数据;想以后随时加盘。
  • 不想要 RAID 的实时性和复杂度,能接受「上次同步之后新增的文件还没有保护」。

不适合:虚拟机镜像、数据库、容器数据、正在下载的目录等频繁变化的数据。它们应该放在 SnapRAID 保护范围之外,或改用 软件 RAID、ZFS。

SnapRAID 是冗余,不是备份

  • 影响范围:校验数据只在你运行同步(Sync)时更新。同步之后,之前被删除或被修改的文件就无法再恢复;修复(Fix)会把所有已删除、已修改的文件一并退回上次同步的状态。误删、勒索、整机损坏它都管不了,那是独立备份的事。
  • 前置条件:校验盘必须不小于最大的那块数据盘,且只给 SnapRAID 用;开启 S.M.A.R.T. 和邮件通知;建议用 memtest 先测内存,内存出错是用 SnapRAID 时已知的数据损坏原因。
  • 怎么回退:同步前的状态没有回退。发现有人误删文件时,不要同步,先用比较和修复找回;某块盘出现故障征兆时,关掉定时的比较脚本,也不要手动同步。

插件信息 ​

项内容
包名openmediavault-snapraid;自动化脚本插件是 openmediavault-snapraid-aio
来源omv-extras。SnapRAID 本体是第三方软件
OMV 8 状态截至 2026-10-22 的 omv-extras synchrony 软件源:snapraid 8.0.3、snapraid-aio 8.1(amd64、arm64)
菜单位置服务 → SnapRAID(Services → SnapRAID):整列(Arrays)、磁盘(Drives)、规则(Rules)、设置(Settings)
依赖openmediavault-sharerootfs(卸载它会连带卸载本插件)、snapraid;AIO 插件依赖本插件

官方中文把 Array(阵列)译成了「整列」,这是原译,界面上就叫这个名字。

它是怎么工作的 ​

SnapRAIDRAID 5
校验时机按需,你运行同步时才计算每次写入实时计算
盘的容量可以不同,校验盘要不小于最大数据盘受最小的盘限制
一块盘坏了换上新盘后重建这块盘,其余盘不受影响阵列降级运行
超过容忍数量的盘坏了只丢坏盘上的数据,其他盘数据完好整个阵列没了
加盘、移除随时受限

校验清单(Content)是一份文件列表,包含所有校验和;至少要有一份完好才能整盘恢复,所以建议每块被保护的盘上都放一份。

安装 ​

系统 → 插件(System → Plugins)搜索 snapraid,安装 openmediavault-snapraid,硬刷新浏览器。

配置与使用 ​

创建整列和磁盘 ​

  1. 服务 → SnapRAID → 整列:创建(Create),起个名字,保存。多整列是 OMV 7 新增的功能,家用场景一个就够。
  2. 服务 → SnapRAID → 磁盘:创建,逐块添加数据盘:
    • 整列(Array)选刚建的;磁盘(Drive)选要保护的文件系统;名称(Name)随便起;
    • 勾选 校验清单(Content)和 数据盘(Data)。
  3. 再添加校验盘:选好整列和磁盘,只勾选 校验(Parity)。校验序号(Parity number)默认 1,范围 1–6,每多一个校验盘就多容忍一块数据盘同时损坏。分割校验(Split Parity)把校验拆到多块小盘上,属于高级功能,新手别用。
  4. 保存,点黄色提示条上的应用。

校验盘专用:拿它存别的东西,会破坏 SnapRAID 的保护。

第一次同步 ​

服务 → SnapRAID → 整列:选中整列,在工具(Tools)菜单选 更新校验(Sync)。数据多时可能要好几个小时,窗口里显示 END OF LINE 才算完成。第一次出现「content file not found」警告是正常的,结束时会生成校验清单。

日常顺序:比较、同步、侦测 ​

工具(Tools 菜单)对应命令作用
比较(Diff)snapraid diff列出上次同步之后新增、删除、修改的文件。先看这个再决定要不要同步
更新校验(Sync)snapraid sync把新增和修改纳入校验,更新校验数据
侦测(Scrub)snapraid scrub读取数据并核对校验和,找坏块
检查(Check)、修复(Fix)、恢复(Undelete)check / fix / undelete核对、修复、找回被删除的文件
强制同步(Force Sync)sync -F重新计算全部校验,非常耗时,确认框会提醒
强制空同步(Force Empty Sync)--force-empty sync数据盘被改成指向空目录之后使用,见下文移除数据盘

同步期间不要增删文件;放在 SnapRAID 保护范围内的数据盘上的 Docker 容器,同步时应暂停或停止,否则会产生同步错误。

自动化:内置的比较脚本 ​

服务 → SnapRAID → 设置(Settings)下半部分是差异脚本设置(Diff script settings),脚本按「比较 → 同步 → 侦测」运行,结果发邮件。表单默认值:

字段默认说明
发送邮件(Send mail)开需要先配好通知
运行侦测(Run scrub)开同步成功后接着侦测
预哈希(Pre-hash)开同步前先读一遍数据做校验,多一道保险
侦测频率(Scrub frequency)7 天7 天内侦测过的文件不再侦测
侦测比例(Scrub percentage)100默认一次侦测全部;数据多时耗时很长,wiki 的例子是设 25 并每周运行
更新阈值 / 删除阈值00 表示不检查,总是同步。建议改成你的正常变动量之上的一个数,超出时脚本会停下来发邮件,给你机会先修复

保存后点 Scheduled diff(比较计划任务)按钮设置执行时间,选在没人使用的深夜,勾选通过电子邮件发送命令输出。另有一个侦测比例(默认 12)是给磁盘页侦测按钮用的,和脚本里的是两个字段。

服务 → SnapRAID → 规则(Rules)用来排除不想保护的目录,例如临时下载目录。

更完整的自动化:SnapRAID-AIO ​

openmediavault-snapraid-aio 封装了第三方的 snapraid-aio-script,完整替代内置比较脚本,支持邮件、Apprise、Healthchecks.io 通知、阈值、Docker 暂停等。

  • 启用前必须先关掉内置比较脚本的计划任务,两个同时跑同一个整列会冲突。
  • 必须先做一次初始同步,AIO 不会从零创建校验数据。
  • 菜单是 服务 → SnapRAID-AIO。阈值默认删除、更新各 500,每次侦测 5%,同步警告阈值默认 -1(超过阈值一律需要你手动处理)。强制同步会绕过所有阈值,只在确认变动是你有意为之时用。
  • 磁盘休眠要另外手动安装 hd-idle;Apprise 第一次运行时通过 pipx 联网安装。
  • 通知渠道的更多用法见 通知扩展。

检查结果 ​

  1. 首次同步后,服务 → SnapRAID → 整列 的信息(Info)菜单里选 Devices、Status,能看到每块盘和校验状态。
  2. 手动跑一次比较,应该是「没有变化」或只列出你刚改的文件。
  3. 在测试用文件里新增一个文件,运行比较能看到新增,再同步,再比较应当干净。
  4. 收到比较脚本发来的邮件,说明邮件通知链路正常。

恢复与换盘 ​

找回被误删的文件:同步之前,运行恢复(Undelete)或修复(Fix)。修复是「霰弹枪」,会把所有被删、被改的文件都退回上次同步的状态,需要精确到单个文件时看 SnapRAID 官方 FAQ。

换一块坏的数据盘(流程取自 omv-extras wiki 的 OMV 7 文档,8.x 界面有新增按钮,以界面为准):

  1. 关掉比较脚本的计划任务;暂停会写数据的容器和下载;不要同步。
  2. 在 存储器 → 磁盘(Storage → Disks)按序列号确认并拆下坏盘,装上新盘,擦除、创建并挂载新的文件系统,见 磁盘管理。
  3. 在 服务 → SnapRAID → 磁盘 里编辑那块丢失的盘(磁盘字段是空的),选新文件系统,保存、应用。
  4. 对整列运行修复,等到出现 END OF LINE。
  5. 再运行更新校验,把新盘的 UUID 写进校验清单。
  6. 把共享文件夹和服务改指向新盘,用 mergerfs 的话还要更新池的路径;在 存储器 → 文件系统(Storage → File Systems)卸载旧的丢失条目,最后恢复定时任务。

移除一块数据盘(8.0.1 起):在磁盘页对这块盘用 设置空目录(Set to empty dir),应用后对整列运行 强制空同步。这块盘上的数据不在保护里了,务必先把需要的文件搬走。

备份与维护 ​

  • 校验盘要新一些,并用 S.M.A.R.T. 盯紧,没有校验数据就无法恢复。
  • 校验清单存放在你勾选了「校验清单」的那些盘上,随盘保管;整列和盘的定义在 OMV 数据库里,随配置留底保存。
  • SnapRAID 与 mergerfs 是常见搭档:mergerfs 负责合成一个目录,SnapRAID 负责校验。但 mergerfs 不会替你做备份。
  • 卸载插件不会动盘上的数据,但会失去界面管理和计划任务。

常见问题 ​

首次同步出现 content file not found。 正常,同步结束会生成。

同步报告文件出错。 同步期间有文件被改动,下次在没人写入时重试;容器数据放在保护范围内会反复触发。

每周比较邮件说超过删除阈值。 先判断是正常整理还是误删。是误删就不要同步,用恢复找回。

想知道哪块盘快坏了。 服务 → SnapRAID → 磁盘 页的信息菜单里选 SMART,能看到故障概率估计;再配合邮件通知,见 健康检查清单。

参考资料 ​

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