本文主要是介绍Linux使用bcache 将SSD加速硬盘,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前言
在Linux下,使用SSD为HDD加速,目前较为成熟的方案有:flashcache,enhanceIO,dm-cache,bcache等,多方面比较以后最终选择了bcache。 bcache 是一个 Linux 内核块层超速缓存。它允许使用一个或多个高速磁盘驱动器(例如 SSD)作为一个或多个速度低得多的硬盘的超速缓存。bcache 支持直写和写回,不受所用文件系统的约束。默认情况下,它只超速缓存随机读取和写入,这也是 SSD 的强项。它还适合用于台式机、服务器和高端储存阵列。CentOS和Ubuntu都可以使用bcache。bcache是在3.10以后的版本加入mainline的,因此需要3.10以上的内核版本。但是笔者使用Centos 7在3.10.0的内核上进行配置时,发现无法生成相应的配置文件节点,测试过程中使用4.3.3版的内核。
主要功能:
1,可以使用单个超速缓存设备来超速缓存任意数量的后备设备。在运行时可以挂接和分离已装入及使用中的后备设备。
2,在非正常关机后恢复 - 只有在超速缓存与后备设备一致后才完成写入。
3,SSD 拥塞时限制传至 SSD 的流量。
4,高效的写回实施方案。脏数据始终按排序顺序写出。
5,稳定可靠,可在生产环境中使用。
Bcache通过make-bcache命令完成bcache的创建,需要安装相关的工具包bcache-tools。
我们通过编译安装 (Github)
https://github.com/g2p/bcache-tools/archive/refs/tags/v1.0.8.tar.gz
这是最新的v1.0.8,如果要查看其他版本请访问
Tags · g2p/bcache-tools · GitHub
下载源码(我这里使用了github链接代理加速)
wget https://github.moeyy.xyz/https://github.com/g2p/bcache-tools/archive/refs/tags/v1.0.8.tar.gz
解压源码压缩包
tar -zxvf v1.0.8.tar.gz
安装依赖
yum install libblkid-devel -y
编译安装
如果没有make命令请自行安装软件包
make && make install
格式化硬盘分区
应用硬盘到bcache模式之前需要将目标分区格式化为bcache,这一步会破坏磁盘分区中所有数据。方法和信息如下
# 如果磁盘是第一次使用,或完全是空的,第一步通常不用执行,这一步市为了擦除分区文件信息,如果挂载也要先卸载,否则会出现device busy的问题
wipefs -a /dev/sdb /dev/sdc
创建cache 也就是我们的SSD的分区作为缓存
缓存参数意义:
-B: 设置backing device -C: 设置cache device -w: block size (hard sector size of SSD),默认是2K,可使用--block=4K代替 -b: bucket size,可以使用--bucket=1M代替
make-bcache -C /dev/sdc1
查看下
[root@master ~]# bcache-super-show /dev/sdc1
sb.magic ok
sb.first_sector 8 [match]
sb.csum C322F881FE092899 [match]
sb.version 0 [cache device]dev.label (empty)
dev.uuid d3834fdd-d31d-4347-9da3-31064cae77ac
dev.sectors_per_block 1
dev.sectors_per_bucket 1024
dev.cache.first_sector 1024
dev.cache.cache_sectors 20968448
dev.cache.total_sectors 20969472
dev.cache.ordered no
dev.cache.discard no
dev.cache.pos 0
dev.cache.replacement 0 [lru]cset.uuid 0609854c-f083-408b-8ea6-f90d4afd60c6
创建backend
接着创建被加速的backend
make-bcache -B /dev/sdb
这快硬盘就是我们的HDD 机械硬盘
查看下
[root@master ~]# bcache-super-show /dev/sdb
sb.magic ok
sb.first_sector 8 [match]
sb.csum C71B7848F1913A17 [match]
sb.version 1 [backing device]dev.label (empty)
dev.uuid da958760-83c8-4d05-9789-f8b371bd62aa
dev.sectors_per_block 1
dev.sectors_per_bucket 1024
dev.data.first_sector 16
dev.data.cache_mode 0 [writethrough]
dev.data.cache_state 0 [detached]cset.uuid 9a492f33-f28d-41f8-8cb1-3cfd93d07885
注册
echo /dev/sdb > /sys/fs/bcache/register
echo /dev/sdc1 > /sys/fs/bcache/register
设备绑定
往backend附加cache
此处附加的uuid,是在上面查询到的cache的uuid
echo d3834fdd-d31d-4347-9da3-31064cae77ac > /sys/block/bcache0/bcache/attach
这篇关于Linux使用bcache 将SSD加速硬盘的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!