跳转到内容

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。

配置与使用 ​

创建缓存设备与后备设备 ​

  1. 存储器 → Bcache → 缓存设备 → 创建(Create),选 SSD(或分区)。所选设备会被格式化为 Bcache 缓存设备。
  2. 存储器 → Bcache → 后备设备 → 创建,选要加速的机械盘。所选设备会被格式化为 Bcache 后备设备。表单里还有一个缓存设备(Cache Device)下拉框,可以选刚建好的缓存设备,也可以留空。
  3. 保存,点黄色提示条上的应用。
  4. 稍等片刻,出现新的 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)。它们用在缓存设备丢失或没被识别的时候。从无缓存开始会放弃缓存里尚未回写的数据,写回模式下可能让文件系统出错,不到万不得已别用。

检查结果 ​

  1. 设备页能看到状态和统计,显示详情(Show details)里有命中和脏数据情况。状态里的 Clean,官方中文译成了「清除」,意思是「没有脏数据」。
  2. 在 OMV 的 shell(root)只读查看:
sh
lsblk
cat /sys/block/bcache0/bcache/state
cat /sys/block/bcache0/bcache/cache_mode
  1. 对一个测试文件系统读写几个文件,确认可以正常挂载和卸载。
  2. 重启后,bcache 设备和文件系统都能自动恢复。

备份与维护 ​

  • bcache 不改变数据保护的基本事实:缓存加速不是冗余,更不是备份。机械盘上的数据照常备份,方法见 rsync 任务。
  • 把 SSD 加入 S.M.A.R.T. 监控,写回缓存尤其要盯着它的健康度。
  • 突然断电对写回缓存的风险最大,用 UPS 缓解。
  • 卸载插件前,先停用依赖 bcache 设备的文件系统和共享,不要在使用中卸载。

常见问题 ​

创建文件系统很慢,或者暂时挂载不上。 界面已提示;等任务完成再挂载。

缓存盘不见了,bcache 设备起不来。 先确认 SSD 是否被系统识别,再用注册尝试;实在恢复不了才考虑从无缓存开始,并接受可能丢失未回写的数据。

没感觉到加速。 工作负载以大文件顺序读写为主时,缓存基本不起作用,这是正常的。

想去掉缓存。 先改模式、等脏数据为 0;有疑问时对照 bcache 内核文档。

参考资料 ​

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