安装

1 加载系统的bcache模块:

lsmod | grep bcache
modprobe bcache

2 如果出现错误:

modprobe: FATAL: Module bcache not found.

则需要升级内核:https://www.cnweed.com/archives/4311/
因为bcache在kernel 3.10版本才进入主线,所以我们要保证CentOS的内核版本大于3.10

3 编译安装

yum install -y git gcc-c++ pkgconfig libblkid-devel
git clone https://evilpiepirate.org/git/bcache-tools.git
cd bcache-tools/
make
make install

配置磁盘设备

1 命令介绍
与bcache相关的命令有:make-bcache和bcache-super-show

[root@ceph-node-1 ~]# make-bcache

Please supply a device
Usage: make-bcache [options] device
        -C, --cache             Format a cache device
        -B, --bdev              Format a backing device
        -b, --bucket            bucket size
        -w, --block             block size (hard sector size of SSD, often 2k)
        -o, --data-offset       data offset in sectors
            --cset-uuid         UUID for the cache set
            --writeback         enable writeback
            --discard           enable discards
            --cache_replacement_policy=(lru|fifo)
        -h, --help              display this help and exit

2 快速创建
-B:指定后端磁盘设备,即要加速的数据盘;-C:指定前端缓存设备,用于加速数据盘,一般用NVME SSD。这里假设/dev/sdc为数据盘,/dev/nvme0n1为缓存盘。

[root@ceph-node-1 ~]# make-bcache -B /dev/sdc -C /dev/nvme0n1
UUID:                   303e696e-6b30-4f06-a75d-294e3d197434
Set UUID:               e5291f51-32ae-4d4e-95ce-0e646d41dfc4
version:                0
nbuckets:               915725
block_size:             1
bucket_size:            1024
nr_in_set:              1
nr_this_dev:            0
first_bucket:           1
UUID:                   0077e0d1-10e2-4f44-aba6-b0fe853f313c
Set UUID:               e5291f51-32ae-4d4e-95ce-0e646d41dfc4
version:                1
block_size:             1
data_offset:            16

除了上面的形式,也可以一次性加入多个后端数据盘:

make-bcache -B /dev/sdb /dev/sdc -C /dev/nvme0n1

注:还可以在make-bcache的时候加入-w和-b参数,主要是提高缓存性能

-w block size 默认2K,一般需要block size = 后端设备的扇区大小。
-b bucket size,一般需要bucket size = 前端缓存设备的erase block size大小。*

3 单独创建后端磁盘设备(backing device)

[root@ceph-node-1 ~]# make-bcache -B /dev/sdb
UUID:                   fe200976-28c9-4ff8-b55c-ac86a416529e
Set UUID:               7cc6c0bb-fbc3-4933-95ec-f98cc49dbc36
version:                1
block_size:             1
data_offset:            16

*创建后运行lsblk会显示如下类似信息,sdb下会有bcache{编号}类似分区:

[root@ceph-node-1 ~]# lsblk
NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
nvme0n1         259:0    0 447.1G  0 disk 
└─bcache0       252:0    0 447.1G  0 disk
sdb               8:16   0   3.7T  0 disk
└─**bcache1**       252:0    0   3.7T  0 disk
sdc               8:32   0   3.7T  0 disk 
sda               8:0    0 232.4G  0 disk 

4 单独创建缓存磁盘设备(cache device)

[root@ceph-node-1 ~]# make-bcache -C /dev/nvme0n1

5 查看设备信息

[root@ceph-node-1 ~]# bcache-super-show /dev/nvme0n1
sb.magic                ok
sb.first_sector         8 [match]
sb.csum                 6E2EB2102565945E [match]
sb.version              3 [cache device]

dev.label               (empty)
dev.uuid                303e696e-6b30-4f06-a75d-294e3d197434
dev.sectors_per_block   1
dev.sectors_per_bucket  1024
dev.cache.first_sector  1024
dev.cache.cache_sectors 937701376
dev.cache.total_sectors 937702400
dev.cache.ordered       yes
dev.cache.discard       no
dev.cache.pos           0
dev.cache.replacement   0 [lru]

cset.uuid               e5291f51-32ae-4d4e-95ce-0e646d41dfc4

6 绑定后端数据盘(backing device)到缓存盘(cache device)
命令格式为:echo "{缓存盘cset.uuid,可以通过bcache-super-show查看}" > /sys/block/bcache{后后端数据盘编号,见上文第3步}/bcache/attach

echo "e5291f51-32ae-4d4e-95ce-0e646d41dfc4" > /sys/block/bcache1/bcache/attach

上为示例

修改缓存模式

bcache支持三种缓存模式:

writeback : 写入时先写到Cache中,同时将对应block的元数据dirty bit,但是并不会立即写入后备存储器
writethrough : 写入时将数据同时写入cache和后备存储器,后备存储器写完,才算写操作完成
writearound : 写入的时候,绕过Cache,直接写入后备存储器,即加速盘只当读缓存
下面这张图可以形象说明三者区别:
cache.png

1 查看当前缓存模式

cat /sys/block/bcache{编号}/bcache/cache_mode

2 修改

echo writearound > /sys/block/bcache{编号}/bcache/cache_mode

注意,实际操作时候请把{编号}替换为实际数字,如 bcache0

可以随时修改并会马上生效,修改后不需要做其他操作

后端磁盘停用或重新启用缓存(解绑或绑定)

举例:后端磁盘为“/dev/sdc”,缓存设备为“/dev/nvme0n1”。

1 查看缓存盘的cset-uuid

bcache-super-show /dev/nvme0n1

显示如:cset.uuid e5291f51-32ae-4d4e-95ce-0e646d41dfc4

2 解除缓存操作

echo e5291f51-32ae-4d4e-95ce-0e646d41dfc4 > /sys/block/bcache0/bcache/detach

如果要重新添加

echo e5291f51-32ae-4d4e-95ce-0e646d41dfc4 > /sys/block/bcache0/bcache/attach

注意:bcache{要操作的后端磁盘编号}

注销缓存盘

格式:echo 1 > /sys/fs/bcache/{缓存盘cset-uuid}/unregister
示例:

echo 1  > /sys/fs/bcache/e5291f51-32ae-4d4e-95ce-0e646d41dfc4/unregister

停用缓存盘

格式:echo 1 > /sys/fs/bcache/{缓存盘cset-uuid}/stop
示例:

echo 1  > /sys/fs/bcache/e5291f51-32ae-4d4e-95ce-0e646d41dfc4/stop

停用后端设备(数据盘)

格式:echo 1 > /sys/block/bcache{要操作的后端磁盘编号} /bcache/stop
示例:

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

停用后bcache0分区就不见,可以重新操作格式化重新添加等

擦除磁盘残留数据

sudo wipefs -a /dev/sdc

查看bcache相关信息

1 缓存状态

cat /sys/block/bcache0/bcache/state

state的几个状态:

no cache:该backing device没有attach任何caching device
clean:一切正常,缓存是干净的
dirty:一切正常,已启用回写,缓存是脏的
inconsistent:遇到问题,后台设备与缓存设备不同步

2 缓存数据量

cat /sys/block/bcache0/bcache/dirty_data

Bcache的性能调优

bcache有很多配置选项和可调的参数,默认值适合于典型配置

1) 如果写入性能差,可以尝试将其写策略调为回写策略

echo writeback > /sys/block/bcache0/cache_mode

2) 默认情况下,bcache不会缓存顺序IO和大文件,所以顺序写性能应该没什么提升,可以打开顺序IO缓存:

echo 0 > /sys/block/bcache0/bcache/sequential_cutoff

还可以调整backing设备的顺序IO阈值,默认是4M,也就是说如果bcache设备的连续IO达到4MB以上时是直接读写backing盘,不会走SSD缓存盘,如果要设置成8M,则可如下:

echo 8M > /sys/block/bcache0/bcache/sequential_cutoff

3) 防止cache设备成为瓶颈
这种情况最可能发生在一块缓存磁盘作为多个普通盘的缓存磁盘,写入或读取处理不过来时,就会形成堵塞,这时我们可以关闭拥塞控制项,默认情况下,当读请求超过2ms,写请求超过20ms时就会直接读写backing盘。
关闭读写拥塞控制命令:

echo 0 > /sys/fs/bcache/{cache set uuid}/congested_read_threshold_us
echo 0 > /sys/fs/bcache/{cache set uuid}/congested_write_threshold_us

Ceph添加bcache设置后的数据盘:

ceph-deploy osd create ceph-node-1 --data /dev/bcache1

最新的版本Ceph已经可以直接像/dev/bcache1这样添加了

学习参考自
https://support.huaweicloud.com/usermanual-kunpengsdss/kunpengbcache_06_0016.html
https://blog.csdn.net/liangchen0322/article/details/50322635
https://www.cnblogs.com/luohaixian/p/9280141.html
http://www.yangguanjun.com/2018/03/26/lvm-sata-ssd-bcache/
https://ziyablog.com/266/bcache%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/

标签: Ceph

添加新评论