外观
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(阵列)译成了「整列」,这是原译,界面上就叫这个名字。
它是怎么工作的
| SnapRAID | RAID 5 | |
|---|---|---|
| 校验时机 | 按需,你运行同步时才计算 | 每次写入实时计算 |
| 盘的容量 | 可以不同,校验盘要不小于最大数据盘 | 受最小的盘限制 |
| 一块盘坏了 | 换上新盘后重建这块盘,其余盘不受影响 | 阵列降级运行 |
| 超过容忍数量的盘坏了 | 只丢坏盘上的数据,其他盘数据完好 | 整个阵列没了 |
| 加盘、移除 | 随时 | 受限 |
校验清单(Content)是一份文件列表,包含所有校验和;至少要有一份完好才能整盘恢复,所以建议每块被保护的盘上都放一份。
安装
系统 → 插件(System → Plugins)搜索 snapraid,安装 openmediavault-snapraid,硬刷新浏览器。
配置与使用
创建整列和磁盘
服务 → SnapRAID → 整列:创建(Create),起个名字,保存。多整列是 OMV 7 新增的功能,家用场景一个就够。服务 → SnapRAID → 磁盘:创建,逐块添加数据盘:- 整列(Array)选刚建的;磁盘(Drive)选要保护的文件系统;名称(Name)随便起;
- 勾选 校验清单(Content)和 数据盘(Data)。
- 再添加校验盘:选好整列和磁盘,只勾选 校验(Parity)。校验序号(Parity number)默认 1,范围 1–6,每多一个校验盘就多容忍一块数据盘同时损坏。分割校验(Split Parity)把校验拆到多块小盘上,属于高级功能,新手别用。
- 保存,点黄色提示条上的应用。
校验盘专用:拿它存别的东西,会破坏 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 并每周运行 |
| 更新阈值 / 删除阈值 | 0 | 0 表示不检查,总是同步。建议改成你的正常变动量之上的一个数,超出时脚本会停下来发邮件,给你机会先修复 |
保存后点 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 联网安装。 - 通知渠道的更多用法见 通知扩展。
检查结果
- 首次同步后,
服务 → SnapRAID → 整列的信息(Info)菜单里选 Devices、Status,能看到每块盘和校验状态。 - 手动跑一次比较,应该是「没有变化」或只列出你刚改的文件。
- 在测试用文件里新增一个文件,运行比较能看到新增,再同步,再比较应当干净。
- 收到比较脚本发来的邮件,说明邮件通知链路正常。
恢复与换盘
找回被误删的文件:同步之前,运行恢复(Undelete)或修复(Fix)。修复是「霰弹枪」,会把所有被删、被改的文件都退回上次同步的状态,需要精确到单个文件时看 SnapRAID 官方 FAQ。
换一块坏的数据盘(流程取自 omv-extras wiki 的 OMV 7 文档,8.x 界面有新增按钮,以界面为准):
- 关掉比较脚本的计划任务;暂停会写数据的容器和下载;不要同步。
- 在
存储器 → 磁盘(Storage → Disks)按序列号确认并拆下坏盘,装上新盘,擦除、创建并挂载新的文件系统,见 磁盘管理。 - 在
服务 → SnapRAID → 磁盘里编辑那块丢失的盘(磁盘字段是空的),选新文件系统,保存、应用。 - 对整列运行修复,等到出现
END OF LINE。 - 再运行更新校验,把新盘的 UUID 写进校验清单。
- 把共享文件夹和服务改指向新盘,用 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-snapraid、openmediavault-snapraid-aio
- omv-extras wiki:SnapRAID Plugin For OMV7(OMV 8 页仍是占位)、SnapRAID AIO Plugin For OMV8
- SnapRAID 官方手册:snapraid.it/manual