最近因为工作的原因接触到bcache缓存技术的一些皮毛,做个笔记备忘。

bcache是自3.10开始集成到Linux Kernel中去,后面更新了几个版本增加了一些功能。

另一个备用技术选项为facebook开创的flashcache。但是作者在github表示,基本不敢用。

This project is not actively maintained. Proceed at your own risk!

除了在Linux 3.10内核中提供支持以外,还有一个bcache-tools工具,用户可以定义缓存及需加速的设备。一旦BCache设备被格式化后准备使用了,该工具就会通过Sysfs文件向内核注册。不同于平时接触的工具有命令操作,bcache的操作都是往/sys/fs/文件传入配置


安装

Debian wheezy升到最新版,确认是3.16的内核,安装bcache-tools后,updateramfs后重启系统。此时如果还没有bcache设备,lsmod是查看不到bcache加载的,但是模块已能正常使用

#apt-get install initramfs-tools
#dpkg -i bcache-tools_1.0.8-2_amd64.deb
#update-initramfs -u

两种创建方法

  1. backing 和 cache device一起


    #make-bcache -B /dev/sdb /dev/sdc -C /dev/sda3
  2. 分别初始化(register)backing device和cache device(如果当前没有cache设备,但是后续又想添加的话建议使用这种方式)。创建了backing device之后就可以格式化、挂载使用了


    #make-bcache -B /dev/sdb
    #make-bcache -C /dev/sda3

    使用这种方法的话,在后续需要添加手动将backing device attach到cache device才能最终使用到缓存。不然backing device就相当于运行于passthrough mode


我们可以通过/sys/fs或者/sys/block来管理bcache设备

/sys/block/bcache<N>/bcache
/sys/fs//bcache/<cset-uuid>/

初始化完两种设备后,需要attch才能真正启用bcache缓存

echo <CSET-UUID> > /sys/block/bcache0/bcache/attach

即使cache设备掉盘,可设置强制运行后端设备(注意使用writeback模式可能导致data loss):

echo 1 > /sys/block/sdb/bcache/running