51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2167|回复: 1
打印 上一主题 下一主题

[原创文章] bcache安装和测试

[复制链接]
  • TA的每日心情
    开心
    2019-10-10 16:07
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2019-10-17 13:48:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    本帖最后由 TimiZheng 于 2019-10-17 13:50 编辑

    参考文档:
    官网
    下面这个说明文档很重要,可以参考:

    有关bcache和flashcache的测试比较
    http://www.accelcloud.com/2012/04/18/linux-flashcache-and-bcache-performance-testing/
    这篇文章认为bcache由于flashcache和dmcache
    http://www.chinacloud.cn/show.aspx?id=24597&cid=12

    Bcache介绍中文
    https://yq.aliyun.com/articles/60734

    测试工具fio下载与安装
    1. wget "http://brick.kernel.dk/snaps/fio-2.1.7.tar.gz"

    2. tar -xzvf fio-2.1.7.tar.gz

    3. cd  fio-2.1.7

    4. ./configure

    5. make

    6. make install
    复制代码


    bcache安装

    bcache内核安装:
    检查是否已存在bcache模块,没有的话需要重新编译内核
    ls /lib64/m/modules/3.10.0-514.el7.x86_64/kernel/drivers/md 下是否有bcache模块
    直接yum升级内核
    1、导入key
       yum源
    直接升级
    yum   --enablerepo=elrepo-kernel install  kernel-ml-devel kernel-ml -y
    这个会直接升级到最新的内核版本

    编译内核
    1. #wget "http://vault.centos.org/7.3.1611/os/Source/SPackages/kernel-3.10.0-514.el7.src.rpm"

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

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

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

    5. cd /tmp/linux-bcache

    6. yum install ncurses-devel

    7. yum groupinstall Development toos

    8. yum install binutils*

    9. make menuconfig
    复制代码



    选择目录:
    1. Device Drivers

    2.          ->Multiple devices driver support (RAID and LVM)             -><*> Block device as cache
    复制代码
    1. make V=1 all

    2. make modules

    3. make modules_install

    4. make install
    复制代码

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

    modprob bcache

    二、安装bcache-tool
    1. yum -y install  pkgconfig libblkid-devel



    2. cd bcache-tools

    3. make

    4. make install
    复制代码



    三、配置
    1. sdb4 ssd 200G

    2. sda4 hdd 4T

    3. 挂载目录 /bcatch
    复制代码
    1. wipefs -a /dev/sda4

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

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


    复制代码

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

    2. ac6fcdd1-c36e-468a-890b-4c044eb20b71  register  register_quiet
    复制代码

    设备绑定:将cache绑定到bcache0设备上
    1. echo ac6fcdd1-c36e-468a-890b-4c044eb20b71 > /sys/block/bcache0/bcache/attach
    复制代码

    查看/var/log/message是否有绑定成功的提示:
    1. Aug 21 19:46:42 localhost kernel: bcache: register_cache() registered cache device sdb4

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

    3. [root@localhost hddtest]# lsblk

    4. NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT

    5. sdb           8:16   0 744.6G  0 disk

    6. ├─sdb4        8:20   0   200G  0 part

    7. │ └─bcache0 253:0    0     4T  0 disk

    8. ├─sdb2        8:18   0   200G  0 part

    9. ├─sdb3        8:19   0   200G  0 part /ssddata

    10. └─sdb1        8:17   0    32G  0 part [SWAP]

    11. sda           8:0    0   5.5T  0 disk

    12. ├─sda4        8:4    0     4T  0 part

    13. │ └─bcache0 253:0    0     4T  0 disk

    14. ├─sda2        8:2    0   512M  0 part /boot

    15. ├─sda3        8:3    0   1.5T  0 part /

    16. └─sda1        8:1    0     1M  0 part

    17. mount /dev/bcache0 /bcache
    复制代码

    加载成功之后,查看cache_mode 等
    1. [root@localhost testdb]# cat /sys/block/bcache0/bcache/cache_mode

    2. writethrough [writeback] writearound none
    复制代码

    修改模式 echo writethrough > /sys/block/bcache0/bcache/cache_mode

    启动后的自动挂载硬盘
    原来试过使用uuid,但是有时候会发现这个uuid会发生变化,所以就使用了下面这个方案
    1. /dev/bcache0  <wbr>  <wbr>  <wbr>  <wbr>  <wbr>  <wbr>
    2. <wbr>  <wbr>  <wbr>  <wbr>  <wbr>  <wbr>  <wbr>  <wbr>  <wbr>/data  <wbr>
    3. <wbr>  <wbr>  <wbr>  <wbr>  <wbr>  <wbr>  <wbr>  <wbr> xfs  <wbr>  <wbr>
    4. defaults  <wbr>  <wbr>  <wbr>  <wbr>0 0
    复制代码

    --关闭bcache:
    通过以上bcache之后是很难将hdd盘从ssd盘整分离出来
    1. <p style="margin: 8px 0px; font-family: Helvetica,;" hiragino="" sans="" yahei=""><span style="line-height: 1.6;">bcache <wbr></span></p>
    2. <p style="margin: 8px 0px; font-family: Helvetica,;" hiragino="" sans="" yahei="">echo '/dev/sdb4' >
    3. /sys/fs/bcache/ac6fcdd1-c36e-468a-890b-4c044eb20b71/unregister</p>
    4. <p style="margin: 8px 0px; font-family: Helvetica,;" hiragino="" sans="" yahei=""><span style="line-height: 25.6px;">echo
    5. ed3f2062-c9bb-4b2f-9ccb-595e48af9454 >
    6. /sys/block/bcache0/bcache/detach</span></p>
    复制代码

    (以上两种方式似乎都可以,具体差异不清楚)

    在解除ssd时,会检查是否有脏块,如果有,则会开始刷新数据,此时用iostat 查看,就能看到很高的io读写(从ssd盘中,写入到hdd中)
    可以再次注册
    1. echo '/dev/sdb4' >
    2. /sys/fs/bcache/<span style="line-height: 25.6px;">register</span>
    复制代码

    再次检查脏块数据量

    1. <p style="margin: 8px 0px; font-family: Helvetica,;" hiragino="" sans="" yahei="">[root@localhost <wbr>bcache]# cat
    2. /sys/block/bcache0/bcache/dirty_data</p>
    3. <p style="margin: 8px 0px; font-family: Helvetica,;" hiragino="" sans="" yahei="">0</p>
    复制代码


    讲师作品: MySQL实战校园业务数据库:http://www.atstudy.com/course/2001
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2019-10-10 16:07
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    2#
     楼主| 发表于 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 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-24 06:04 , Processed in 0.065641 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表