TimiZheng 发表于 2019-10-17 13:48:55

bcache安装和测试

本帖最后由 TimiZheng 于 2019-10-17 13:50 编辑

参考文档:官网https://bcache.evilpiepirate.org/下面这个说明文档很重要,可以参考:https://evilpiepirate.org/git/linux-bcache.git/tree/Documentation/bcache.txt
有关bcache和flashcache的测试比较http://www.accelcloud.com/2012/04/18/linux-flashcache-and-bcache-performance-testing/这篇文章认为bcache由于flashcache和dmcachehttp://www.chinacloud.cn/show.aspx?id=24597&cid=12
Bcache介绍中文https://yq.aliyun.com/articles/60734
测试工具fio下载与安装wget "http://brick.kernel.dk/snaps/fio-2.1.7.tar.gz"

tar -xzvf fio-2.1.7.tar.gz

cdfio-2.1.7

./configure

make

make install


bcache安装git clone http://evilpiepirate.org/git/linux-bcache.gitgit clone http://evilpiepirate.org/git/bcache-tools.git
bcache内核安装:检查是否已存在bcache模块,没有的话需要重新编译内核ls /lib64/m/modules/3.10.0-514.el7.x86_64/kernel/drivers/md 下是否有bcache模块直接yum升级内核1、导入keyrpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org   yum源rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm直接升级yum   --enablerepo=elrepo-kernel installkernel-ml-devel kernel-ml -y这个会直接升级到最新的内核版本
编译内核#wget "http://vault.centos.org/7.3.1611/os/Source/SPackages/kernel-3.10.0-514.el7.src.rpm"

#rpm2cpio ./kernel-3.10.0-514.el7.src.rpm | cpio -idmv

#放到/usr/src/kenernal/目录下

使用linux-bcache安装(实际版本为3.12+)

cd /tmp/linux-bcache

yum install ncurses-devel

yum groupinstall Development toos

yum install binutils*

make menuconfig



选择目录:Device Drivers

         ->Multiple devices driver support (RAID and LVM)             -><*> Block device as cache
make V=1 all

make modules

make modules_install

make install

查看启动项awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg 设置新内核grub2-set-default 0重启reboot无论是编译还是yum升级,升级后都有了bcatch模块,但是都不会自动加载bcachelsmod|grep bcatch
modprob bcache
二、安装bcache-toolyum -y installpkgconfig libblkid-devel



cd bcache-tools

make

make install



三、配置sdb4 ssd 200G

sda4 hdd 4T

挂载目录 /bcatch
wipefs -a /dev/sda4

make-bcache -B /dev/sda4-w4k
注:这是一个大坑,-Bbacking device的默认块大小是扇区一样大的,在后面和cache组建关系的时候,会一直不成功,报错内容为bch_cached_dev_attach() Couldn't attach sda4: block size less than set's block sizemake-bcache -C /dev/sdb4 -w4k -b512k(make-bcache之后就会被创建,如果做错了,使用echo 1 >/sys/block/bcache0/bcache/stop 这样的方式来停用,如果已经注册的还需要解除注册停用之后,然后每次重新执行一次卸载重做:echo /dev/sdb4 >/sys/fs/bcache/ac6fcdd1-c36e-468a-890b-4c044eb20b71/unregister

echo 1 > /sys/block/bcache0/bcache/stop



注册:echo /dev/sda4 > /sys/fs/bcache/registerecho /dev/sdb4 > /sys/fs/bcache/register注册都是提示 -bash: echo: write error: Invalid argument实际注册的是cache device ,很是怀疑这一步否需要执行hdd的这块盘注册时候会出现cache device 的id目录# ls /sys/fs/bcache/

ac6fcdd1-c36e-468a-890b-4c044eb20b71registerregister_quiet

设备绑定:将cache绑定到bcache0设备上 echo ac6fcdd1-c36e-468a-890b-4c044eb20b71 > /sys/block/bcache0/bcache/attach
查看/var/log/message是否有绑定成功的提示:Aug 21 19:46:42 localhost kernel: bcache: register_cache() registered cache device sdb4

Aug 21 19:48:04 localhost kernel: bcache: bch_cached_dev_attach() Caching sda4 as bcache0 on set ac6fcdd1-c36e-468a-890b-4c044eb20b71(id每次做可能不同)

# lsblk

NAME      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT

sdb         8:16   0 744.6G0 disk

├─sdb4      8:20   0   200G0 part

│ └─bcache0 253:0    0   4T0 disk

├─sdb2      8:18   0   200G0 part

├─sdb3      8:19   0   200G0 part /ssddata

└─sdb1      8:17   0    32G0 part

sda         8:0    0   5.5T0 disk

├─sda4      8:4    0   4T0 part

│ └─bcache0 253:0    0   4T0 disk

├─sda2      8:2    0   512M0 part /boot

├─sda3      8:3    0   1.5T0 part /

└─sda1      8:1    0   1M0 part

mount /dev/bcache0 /bcache

加载成功之后,查看cache_mode 等# cat /sys/block/bcache0/bcache/cache_mode

writethrough writearound none

修改模式 echo writethrough > /sys/block/bcache0/bcache/cache_mode
启动后的自动挂载硬盘原来试过使用uuid,但是有时候会发现这个uuid会发生变化,所以就使用了下面这个方案/dev/bcache0<wbr><wbr><wbr><wbr><wbr><wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>/data<wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> xfs<wbr><wbr>
defaults<wbr><wbr><wbr><wbr>0 0
--关闭bcache:通过以上bcache之后是很难将hdd盘从ssd盘整分离出来<p style="margin: 8px 0px; font-family: Helvetica,;" hiragino="" sans="" yahei=""><span style="line-height: 1.6;">bcache <wbr></span></p>
<p style="margin: 8px 0px; font-family: Helvetica,;" hiragino="" sans="" yahei="">echo '/dev/sdb4' >
/sys/fs/bcache/ac6fcdd1-c36e-468a-890b-4c044eb20b71/unregister</p>
<p style="margin: 8px 0px; font-family: Helvetica,;" hiragino="" sans="" yahei=""><span style="line-height: 25.6px;">echo
ed3f2062-c9bb-4b2f-9ccb-595e48af9454 >
/sys/block/bcache0/bcache/detach</span></p>
(以上两种方式似乎都可以,具体差异不清楚)
在解除ssd时,会检查是否有脏块,如果有,则会开始刷新数据,此时用iostat 查看,就能看到很高的io读写(从ssd盘中,写入到hdd中)可以再次注册
echo '/dev/sdb4' >
/sys/fs/bcache/<span style="line-height: 25.6px;">register</span>
再次检查脏块数据量
<p style="margin: 8px 0px; font-family: Helvetica,;" hiragino="" sans="" yahei=""># cat
/sys/block/bcache0/bcache/dirty_data</p>
<p style="margin: 8px 0px; font-family: Helvetica,;" hiragino="" sans="" yahei="">0</p>

文章来源:沧海大声啸的博客         作者:Kervin(博为峰网校讲师)讲师作品: MySQL实战校园业务数据库:http://www.atstudy.com/course/2001

TimiZheng 发表于 2019-10-17 13:50:38

其他问题:

在bcache如果没有绑定成功




自动启动问题:

当每一次重启之后

1、bcache0对应的uuid是不同的,所以不能在/etc/fstab中使用uuid来自动加载

2、每次重启之后,/sys/fs/bcache/ed3f2062-c9bb-4b2f-9ccb-595e48af9454这个cache对应的uuid也是不同的

3、每次重启之后,lsblk显示bcache0还是在的,但是后端设备和ssd cache之间的关系已经没有,需要重新关联

所以在加载之前,需要重新执行:echo ac6fcdd1-c36e-468a-890b-4c044eb20b71 > /sys/block/bcache0/bcache/attach
页: [1]
查看完整版本: bcache安装和测试