BCACHE安装配置指南


注意:

  1. 系统版本必须大于7.3.1611
  2. 内核版本 ≥ 3.10.0-514
  1. 检查内核版本
    uname -r
    输出结果:
    3.10.0-514.el7.x86_64
  2. YUM更新安装LT版本内核
#导入公钥  
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org  
#添加YUM源  
yum install -y https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm
#安装更新长期支持版内核
yum install -y --enablerepo=elrepo-kernel kernel-lt   
#更新GRUB配置使用新内核启动
#查看配置中的所有内核版本    
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
输出信息如下(此处仅为示例,每台设备输出结果可能不一致)
0 : CentOS Linux (4.4.207-1.el7.elrepo.x86_64) 7 (Core)
1 : CentOS Linux (3.10.0-957.10.1.el7.x86_64) 7 (Core)
2 : CentOS Linux (3.10.0-957.el7.x86_64) 7 (Core)
3 : CentOS Linux (0-rescue-7b41900b0c3a4837825d77edbde0be43) 7 (Core)
#设置新内核为默认启动项,默认情况下新内核序号为0  
grub2-set-default 0
#更新配置
grub2-mkconfig -o /boot/grub2/grub.cfg    

注意:
YUM源下载链接可能更新,如无法安装请访问ELRepo官网获取最新地址
如果需要安装内核开发包请使用如下命令安装
yum install -y --enablerepo=elrepo-kernel kernel-lt kernel-lt-devel
设置默认启动内核时请注意序列号,请选择安装的最新内核版本编号

  1. 开机加载模块
cat  > /etc/sysconfig/modules/bcache.modules << EOF
#!/bin/bash

/sbin/modinfo -F filename bcache > /dev/null 2>&1
if [ \$? -eq 0 ]; then
   /sbin/modprobe bcache
fi

EOF
chmod +x /etc/sysconfig/modules/bcache.modules
  1. 重启设备
    reboot

注意:
必须要重启才能加载新内核

  1. 查看/检查模块
modinfo bcache  
lsmod |grep bcache

输出结果如下(此结果表示模块已加载)

[root@localhost ~]# modinfo bcache
filename:       /lib/modules/4.4.207-1.el7.elrepo.x86_64/kernel/drivers/md/bcache/bcache.ko
license:        GPL
author:         Kent Overstreet <koverstreet@google.com>
author:         Kent Overstreet <kent.overstreet@gmail.com>
license:        GPL
srcversion:     4504F697CFC790B39008FC6
depends:
retpoline:      Y
intree:         Y
vermagic:       4.4.207-1.el7.elrepo.x86_64 SMP mod_unload modversions
[root@localhost ~]# lsmod |grep bcache
bcache                233472  0
  1. 安装bcache-tools

    yum install -y pkgconfig libblkid-devel
    yum install -y https://dcache.iqiyi.com/bcache/bcache-tools-1.0.8-3.109.el7.x86_64.rpm
    
    

说明:
只有安装完bcache-tools之后才会有配置bcache的命令工具,请注意是否安装成功
安装的bcache-tools没有bcache-status命令,要使用该命令需要额外操作

wget -O /usr/sbin/bcache-status https://dcache.iqiyi.com/bcache-status
chmod +x /usr/sbin/bcache-status

bcache-tools源码包下载地址

  1. 获取磁盘
    [root@localhost ~]# fdisk -l |grep -i disk
    WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
    Disk /dev/sdo: 299.4 GB, 299439751168 bytes, 584843264 sectors
    Disk label type: gpt
    Disk identifier: 44ADE944-395A-449D-9F7B-CC493B723878
    Disk /dev/sda: 800.2 GB, 800166076416 bytes, 1562824368 sectors
    Disk /dev/sdb: 800.2 GB, 800166076416 bytes, 1562824368 sectors
    Disk /dev/sdc: 800.2 GB, 800166076416 bytes, 1562824368 sectors
    Disk /dev/sdd: 800.2 GB, 800166076416 bytes, 1562824368 sectors
    Disk /dev/sdg: 4000.8 GB, 4000787030016 bytes, 7814037168 sectors
    Disk /dev/sdf: 4000.8 GB, 4000787030016 bytes, 7814037168 sectors
    Disk /dev/sdm: 4000.8 GB, 4000787030016 bytes, 7814037168 sectors
    Disk /dev/sdj: 4000.8 GB, 4000787030016 bytes, 7814037168 sectors
    Disk /dev/sdi: 4000.8 GB, 4000787030016 bytes, 7814037168 sectors
    Disk /dev/sdn: 4000.8 GB, 4000787030016 bytes, 7814037168 sectors
    Disk /dev/sdk: 4000.8 GB, 4000787030016 bytes, 7814037168 sectors
    Disk /dev/sdl: 4000.8 GB, 4000787030016 bytes, 7814037168 sectors
    Disk /dev/sde: 4000.8 GB, 4000787030016 bytes, 7814037168 sectors
    Disk /dev/sdh: 4000.8 GB, 4000787030016 bytes, 7814037168 sectors
    
    

注意:
请判断并确定磁盘类型所属的设备标识符
也可以使用lsblk输出磁盘信息,命令参考如下:
lsblk -dnp -e 9,11,180,253 --output KNAME,SIZE,RM,RO,ROTA|egrep -v 'mapper|\/dev\/md'|awk '$3=='0' && $4=='0''|sort

  1. 已格式化并挂载的磁盘需要移除挂载

    umount /data{1..10}
    umount /ssd{1..4}
    
    

注意:
请根据SSD以及HDD挂载点进行卸载
卸载磁盘挂载后,请修改磁盘自动挂载设置
新设备磁盘未挂载情况下可不执行卸载

  1. 清除superblock信息

    wipefs -af /dev/sdb

注意:
SSD/HDD都需要清理,请根据设备标识符(/dev/sdX)依次清理
请勿对系统盘执行此操作
for i in {b..m} ; do wipefs -af /dev/sd$i ; done

  1. 创建Cache(缓存)设备

    make-bcache -C /dev/sda  
    make-bcache -C /dev/sdb  
    make-bcache -C /dev/sdc  
    make-bcache -C /dev/sdd  
    
    

注意:
缓存设备为SSD,请勿使用HDD创建缓存设备
请在创建缓存设备时按照SSD设备的实际设备标识符创建
可选增加参数创建缓存设备
PS:经过测试,使用需要保持缓存设备与后端设备参数一致,否则无法关联设备
make-bcache --wipe-bcache --block 4k --bucket 2M -C /dev/sda
make-bcache -C -b 1MiB -w 4KiB --discard --cache_replacement_policy=lru --wipe-bcache /dev/sda
盘符连续可选命令(选其一即可,如创建失败或关联失败请选用无参数命令)
for i in {a..d} ; do make-bcache -C /dev/sd$i ; done
for i in {a..d} ; do make-bcache --wipe-bcache --block 4k --bucket 2M -C /dev/sd$i ; done
for i in {a..d} ; do make-bcache -C -b 1MiB -w 4KiB --discard --cache_replacement_policy=lru --wipe-bcache /dev/sd$i ; done

  1. 创建Backing(后端)设备

    make-bcache -B /dev/sdg
    make-bcache -B /dev/sdf
    make-bcache -B /dev/sdm
    make-bcache -B /dev/sdj
    make-bcache -B /dev/sdi
    make-bcache -B /dev/sdn
    make-bcache -B /dev/sdk
    make-bcache -B /dev/sdl
    make-bcache -B /dev/sde
    make-bcache -B /dev/sdh 
    

注意:
后端设备为HDD,请按照设备的实际设备标识符创建
可选增加参数创建backing设备
PS:经过测试,使用需要保持后端设备与缓存设备参数一致,否则无法关联设备
make-bcache -B --writeback -w 4KiB --wipe-bcache /dev/sdm
make-bcache -B --wipe-bcache --block 4k --bucket 2M /dev/sdm
盘符连续可选命令
for i in {e..n} ; do make-bcache -B /dev/sd$i ; done
for i in {e..n} ; do make-bcache -B --wipe-bcache --block 4k --bucket 2M /dev/sd$i ; done
for i in {e..n} ; do make-bcache -B --writeback -w 4KiB --wipe-bcache /dev/sd$i ; done

  1. 注册设备

    for i in {a..n} ; do echo /dev/sd$i >> /sys/fs/bcache/register ; done
    

注意:
此步骤为可选操作,通常情况下创建完设备会自动注册,无需手动操作;
如果设备注册过了或者设备有误会报错-bash: echo: write error: Invalid argument

  1. 关联设备

    • 查看Cache设备
    ls -d /sys/fs/bcache/*-*-* | cut -f5 -d/
    
    • 查看后端设备
    ll /dev/bcache*
    
    • 关联cache设备和backing设备
    echo 4893002d-5d14-4e7f-9ad4-89adbee9adb9 > /sys/block/bcache0/bcache/attach
    echo 4893002d-5d14-4e7f-9ad4-89adbee9adb9 > /sys/block/bcache1/bcache/attach
    echo 4893002d-5d14-4e7f-9ad4-89adbee9adb9 > /sys/block/bcache2/bcache/attach
    echo 719a6923-7b8a-4d2a-8fee-a91f4f718e43 > /sys/block/bcache3/bcache/attach
    echo 719a6923-7b8a-4d2a-8fee-a91f4f718e43 > /sys/block/bcache4/bcache/attach
    echo 719a6923-7b8a-4d2a-8fee-a91f4f718e43 > /sys/block/bcache5/bcache/attach
    echo f9d232db-6fd5-416b-a056-4d29aba0d1f6 > /sys/block/bcache6/bcache/attach
    echo f9d232db-6fd5-416b-a056-4d29aba0d1f6 > /sys/block/bcache7/bcache/attach
    echo 544701f2-69df-45ca-8614-2063889ebcd9 > /sys/block/bcache8/bcache/attach
    echo 544701f2-69df-45ca-8614-2063889ebcd9 > /sys/block/bcache9/bcache/attach
    

注意:
请根据SSD与HDD设备数量比例适当调整分配关联关系;
请在关联时按照cache设备以及backing设备的实际情况关联,文档内容命令仅供参考


REF
本文档仅供参考,请根据实际情况进行配置管理等操作,如有问题请参阅Bcache官方文档
Bcache 官网
Bcache manual
Bcache manual (翻译) 来自互联网