注意:
uname -r
3.10.0-514.el7.x86_64
#导入公钥
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
设置默认启动内核时请注意序列号,请选择安装的最新内核版本编号
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
reboot
注意:
必须要重启才能加载新内核
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
安装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源码包下载地址
准备工作
[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
已格式化并挂载的磁盘需要移除挂载
umount /data{1..10}
umount /ssd{1..4}
注意:
请根据SSD以及HDD挂载点进行卸载
卸载磁盘挂载后,请修改磁盘自动挂载设置
新设备磁盘未挂载情况下可不执行卸载
清除superblock信息
wipefs -af /dev/sdb
注意:
SSD/HDD都需要清理,请根据设备标识符(/dev/sdX)依次清理
请勿对系统盘执行此操作
for i in {b..m} ; do wipefs -af /dev/sd$i ; done
创建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
创建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
注册设备
for i in {a..n} ; do echo /dev/sd$i >> /sys/fs/bcache/register ; done
注意:
此步骤为可选操作,通常情况下创建完设备会自动注册,无需手动操作;
如果设备注册过了或者设备有误会报错-bash: echo: write error: Invalid argument
关联设备
ls -d /sys/fs/bcache/*-*-* | cut -f5 -d/
ll /dev/bcache*
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设备的实际情况关联,文档内容命令仅供参考
bcache 设备使用 sysfs 接口来储存其运行时配置值。您可以更改 bcache 后备设备和缓存磁盘的行为,或查看其使用统计数字,此链接页面尾端有SYSFS的详尽解释,主要查看 SYSFS - BACKING DEVICE、SYSFS - BACKING DEVICE STATS 和 SYSFS - CACHE DEVICE 部分。
/sys/block/bcache<n>/bcache/
目录下;/sys/fs/bcache/<CSET-UUID>/
目录下;w /sys/block/bcache0/bcache/cache_mode - - - - writethrough
w /sys/fs/bcache/4893002d-5d14-4e7f-9ad4-89adbee9adb9/congested_read_threshold_us - - - - 0
w /sys/fs/bcache/4893002d-5d14-4e7f-9ad4-89adbee9adb9/congested_write_threshold_us - - - - 0
w /sys/block/bcache0/bcache/sequential_cutoff - - - - 4M
w /sys/block/bcache1/bcache/cache_mode - - - - writethrough
w /sys/fs/bcache/4893002d-5d14-4e7f-9ad4-89adbee9adb9/congested_read_threshold_us - - - - 0
w /sys/fs/bcache/4893002d-5d14-4e7f-9ad4-89adbee9adb9/congested_write_threshold_us - - - - 0
w /sys/block/bcache1/bcache/sequential_cutoff - - - - 4M
w /sys/block/bcache2/bcache/cache_mode - - - - writethrough
w /sys/fs/bcache/4893002d-5d14-4e7f-9ad4-89adbee9adb9/congested_read_threshold_us - - - - 0
w /sys/fs/bcache/4893002d-5d14-4e7f-9ad4-89adbee9adb9/congested_write_threshold_us - - - - 0
w /sys/block/bcache2/bcache/sequential_cutoff - - - - 4M
w /sys/block/bcache3/bcache/cache_mode - - - - writethrough
w /sys/fs/bcache/719a6923-7b8a-4d2a-8fee-a91f4f718e43/congested_read_threshold_us - - - - 0
w /sys/fs/bcache/719a6923-7b8a-4d2a-8fee-a91f4f718e43/congested_write_threshold_us - - - - 0
w /sys/block/bcache3/bcache/sequential_cutoff - - - - 4M
w /sys/block/bcache4/bcache/cache_mode - - - - writethrough
w /sys/fs/bcache/719a6923-7b8a-4d2a-8fee-a91f4f718e43/congested_read_threshold_us - - - - 0
w /sys/fs/bcache/719a6923-7b8a-4d2a-8fee-a91f4f718e43/congested_write_threshold_us - - - - 0
w /sys/block/bcache4/bcache/sequential_cutoff - - - - 4M
w /sys/block/bcache5/bcache/cache_mode - - - - writethrough
w /sys/fs/bcache/719a6923-7b8a-4d2a-8fee-a91f4f718e43/congested_read_threshold_us - - - - 0
w /sys/fs/bcache/719a6923-7b8a-4d2a-8fee-a91f4f718e43/congested_write_threshold_us - - - - 0
w /sys/block/bcache5/bcache/sequential_cutoff - - - - 4M
w /sys/block/bcache6/bcache/cache_mode - - - - writethrough
w /sys/fs/bcache/f9d232db-6fd5-416b-a056-4d29aba0d1f6/congested_read_threshold_us - - - - 0
w /sys/fs/bcache/f9d232db-6fd5-416b-a056-4d29aba0d1f6/congested_write_threshold_us - - - - 0
w /sys/block/bcache6/bcache/sequential_cutoff - - - - 4M
w /sys/block/bcache7/bcache/cache_mode - - - - writethrough
w /sys/fs/bcache/f9d232db-6fd5-416b-a056-4d29aba0d1f6/congested_read_threshold_us - - - - 0
w /sys/fs/bcache/f9d232db-6fd5-416b-a056-4d29aba0d1f6/congested_write_threshold_us - - - - 0
w /sys/block/bcache7/bcache/sequential_cutoff - - - - 4M
w /sys/block/bcache8/bcache/cache_mode - - - - writethrough
w /sys/fs/bcache/544701f2-69df-45ca-8614-2063889ebcd9/congested_read_threshold_us - - - - 0
w /sys/fs/bcache/544701f2-69df-45ca-8614-2063889ebcd9/congested_write_threshold_us - - - - 0
w /sys/block/bcache8/bcache/sequential_cutoff - - - - 4M
w /sys/block/bcache9/bcache/cache_mode - - - - writethrough
w /sys/fs/bcache/544701f2-69df-45ca-8614-2063889ebcd9/congested_read_threshold_us - - - - 0
w /sys/fs/bcache/544701f2-69df-45ca-8614-2063889ebcd9/congested_write_threshold_us - - - - 0
w /sys/block/bcache9/bcache/sequential_cutoff - - - - 4M
注意:
请根据SSD与HDD设备关联关系编写配置文件;
请在编写配置文件时按照cache设备以及backing设备的实际情况编写,文档内容仅供参考格式;
配置文件必须放在该目录( /etc/tmpfiles.d/ ),文件名随意.
cat /sys/block/bcache*/bcache/state
查看设备关联情况,有几个后端设备就有几个bcache号
bcache-status
lsblk
# 查找 CacheSetUUID
ls -d /sys/fs/bcache/*-*-* | cut -f5 -d/
echo <CacheSetUUID> > /sys/block/bcache0/bcache/detach
# 注销/删除 cache 设备
echo 1 > /sys/fs/bcache/4893002d-5d14-4e7f-9ad4-89adbee9adb9/unregister
# 查看block设备的布局变化
lsblk
# state 为none即为分离成功
cat /sys/block/bcache0/bcache/state
# 此时 bcache-status 输出中 "Cache Mode" 变为 "Various" 即为成功
bcache-status
注意:
请根据SSD与HDD设备以及关联关系操作;
请不要忘记修改启动配置文件;
#cat /sys/block/sdb/sdb1/bcache/cache_mode
writethrough [writeback] writearound none
#echo writethrough > /sys/block/sdb/sdb1/bcache/cache_mode
#cat /sys/block/sdb/sdb1/bcache/cache_mode
[writethrough] writeback writearound none
#echo writeback > /sys/block/sdb/sdb1/bcache/cache_mode
#cat /sys/block/sdb/sdb1/bcache/cache_mode
writethrough [writeback] writearound none
注意:
请不要忘记修改启动配置文件;
如果unregister了cache设备,还需增加并cache设备:
make-bcache -C /dev/sdb
echo <CacheSetUUID> > /sys/block/bcache0/bcache/attach
# 查找 CacheSetUUID
ls -d /sys/fs/bcache/*-*-* | cut -f5 -d/
echo <CacheSetUUID> > /sys/block/bcache0/bcache/attach
# 查看block设备的布局变化
lsblk
# state 应该为clean
cat /sys/block/bcache0/bcache/state
bcache-status
注意:
多个cache设备时请注意区分新增设备ID,以免关联错误
请根据SSD与HDD设备以及关联关系操作;
请不要忘记修改启动配置文件;
echo 1 > /sys/block/bcache0/bcache/stop
lsblk
注意:
多个backing设备时请注意区分需要停止的设备
请不要忘记修改启动配置文件;
for i in {0..9} ; do mkfs.xfs -f /dev/bcache$i ; done
注意:
请根据实际设备修改格式化命令
格式化之后请按照Linux磁盘挂载方式挂载设备
fstab配置文件编写请使用UUID方式,否则由于设备重启可能会因为bcache设备变动挂载失败
REF:
本文档仅供参考,请根据实际情况进行配置管理等操作,如有问题请参阅Bcache官方文档
Bcache 官网
Bcache manual
Bcache manual (翻译) 来自互联网