外观
bcache:用 SSD 给硬盘加缓存
完成后,一块(或几块)机械硬盘前面多了一块 SSD 当缓存:热点数据和小文件随机读写更快。使用上它们合成一个新的块设备 /dev/bcacheN,在上面建文件系统即可。
适合谁
- 机械盘上有大量随机小读写:很多小文件、容器数据、虚拟机镜像。
- 已经有闲置的 SSD,又不想把整个数据集都搬到 SSD 上。
收益有限的场景:影视库、备份这类大文件顺序读写。bcache 默认把超过一定大小的连续 IO 直接放过,不进缓存(顺序截止,默认 4 MiB)。多数家用 NAS 用千兆网,机械盘本身已经跑满网络,不需要缓存。
更简单的做法:把容器数据放到单独的 SSD 文件系统上,大文件留在机械盘上。
动手前:创建会格式化,写回模式有数据风险
- 影响范围:创建后备设备和缓存设备都会格式化所选设备,已有数据不能原地转换;写回(writeback)模式下,新写入的数据先只存在 SSD 上、稍后才回写机械盘,这段时间里 SSD 故障或被拔掉,机械盘上的文件系统可能损坏,数据丢失。缓存设备是单点。
- 前置条件:所选盘必须是空盘,按型号和序列号核对;SSD 质量要好,最好配 UPS;重要数据先有独立备份。
- 怎么回退:还没写数据时可以直接删除。已有数据后,先把缓存模式改成
writethrough或none,在设备详情里等脏数据(Dirty Data)回写到 0,再取消缓存。直接拔掉写回缓存的 SSD 没有回退。不确定时,用writethrough(同时写入缓存与后备盘)。
插件信息
| 项 | 内容 |
|---|---|
| 包名 | openmediavault-bcache |
| 来源 | 官方插件(OMV 主仓库) |
| OMV 8 状态 | 截至 2026-10-18 的官方软件源 synchrony 为 8.0.2-1 |
| 菜单位置 | 存储器 → Bcache(Storage → Bcache):后备设备(Backing Devices)、缓存设备(Cache Devices) |
| 依赖 | bcache-tools |
概念
| 角色 | 作用 |
|---|---|
| 后备设备(backing device) | 真正存数据的慢盘,通常是机械硬盘 |
| 缓存设备(cache device) | 提供缓存的快盘,通常是 SSD 或 SSD 的一个分区(8.0.x 起支持用分区) |
| bcache 设备 | 两者合成的 /dev/bcacheN,文件系统建在它上面 |
缓存模式:
| 模式 | 官方中文 | 效果 |
|---|---|---|
writethrough | 同时写入缓存与后备存储设备 | 写入同时落到两处,安全;写入不会变快 |
writeback | 先写入缓存 | 写入最快,有上面说的数据风险 |
writearound | 直接写入后备存储设备 | 写绕过缓存,读仍然缓存 |
none | 无 | 不使用缓存 |
安装
系统 → 插件(System → Plugins)搜索 bcache,安装 openmediavault-bcache,硬刷新浏览器,出现 存储器 → Bcache。
配置与使用
创建缓存设备与后备设备
存储器 → Bcache → 缓存设备→ 创建(Create),选 SSD(或分区)。所选设备会被格式化为 Bcache 缓存设备。存储器 → Bcache → 后备设备→ 创建,选要加速的机械盘。所选设备会被格式化为 Bcache 后备设备。表单里还有一个缓存设备(Cache Device)下拉框,可以选刚建好的缓存设备,也可以留空。- 保存,点黄色提示条上的应用。
- 稍等片刻,出现新的 bcache 设备。到
存储器 → 文件系统(Storage → File Systems)创建文件系统并挂载,见 创建并挂载文件系统。界面提示:在 Bcache 设备上创建文件系统可能需要较长时间,期间可能暂时无法挂载。
调整配置
在后备设备页选中设备,点配置(Configuration):
| 字段 | 默认 | 说明 |
|---|---|---|
| 缓存模式(Cache Mode) | 以界面显示为准 | 见上表。新手用 writethrough |
| 顺序截止(Sequential Cutoff) | 4 MiB | 超过这个大小的连续 IO 绕过缓存 |
| 回写延迟(Writeback Delay) | 30 秒 | 缓存里第一次出现脏数据后,等这么久才开始回写 |
| 回写百分比(Writeback Percent) | 10 | 让缓存里大约保持这个比例的脏数据,通过限速后台回写实现 |
其余的阻塞追踪相关字段保持默认。
缓存丢失后的恢复动作
后备设备或缓存设备页的 恢复动作(Recovery Actions)菜单有三个项目:注册(Register)、取消注册(Unregister)、从无缓存开始(Start without cache)。它们用在缓存设备丢失或没被识别的时候。从无缓存开始会放弃缓存里尚未回写的数据,写回模式下可能让文件系统出错,不到万不得已别用。
检查结果
- 设备页能看到状态和统计,显示详情(Show details)里有命中和脏数据情况。状态里的 Clean,官方中文译成了「清除」,意思是「没有脏数据」。
- 在 OMV 的 shell(root)只读查看:
sh
lsblk
cat /sys/block/bcache0/bcache/state
cat /sys/block/bcache0/bcache/cache_mode- 对一个测试文件系统读写几个文件,确认可以正常挂载和卸载。
- 重启后,bcache 设备和文件系统都能自动恢复。
备份与维护
- bcache 不改变数据保护的基本事实:缓存加速不是冗余,更不是备份。机械盘上的数据照常备份,方法见 rsync 任务。
- 把 SSD 加入 S.M.A.R.T. 监控,写回缓存尤其要盯着它的健康度。
- 突然断电对写回缓存的风险最大,用 UPS 缓解。
- 卸载插件前,先停用依赖 bcache 设备的文件系统和共享,不要在使用中卸载。
常见问题
创建文件系统很慢,或者暂时挂载不上。 界面已提示;等任务完成再挂载。
缓存盘不见了,bcache 设备起不来。 先确认 SSD 是否被系统识别,再用注册尝试;实在恢复不了才考虑从无缓存开始,并接受可能丢失未回写的数据。
没感觉到加速。 工作负载以大文件顺序读写为主时,缓存基本不起作用,这是正常的。
想去掉缓存。 先改模式、等脏数据为 0;有疑问时对照 bcache 内核文档。