ssd在linux下专为内存设备,Linux下SSD缓存加速之bcache试用

Linux下SSD缓存加速之bcache试用

猫先生 • 2019 年 08 月 20 日

一重要客户,要求投标方提供SSD做缓存加速的方案,并提供测试报告。刚开始选择INTEL CAS,客户要求是SUSE系统,而INTEL CAS从去年8月就不再更新,只能支持到SUSE 12SP3,而客户要求操作系统必须是SUSE 12 SP4,所以不得不重新选择方案。

INTEL CAS软件支持的操作系统版本:

4c9427851b773430d2c3402653813244.png

在Linux下,使用SSD为HDD加速,目前较为成熟的方案有:flashcache,enhanceIO,dm-cache,bcache等,多方面比较以后最终选择了bcache。

bcache 是一个 Linux 内核块层超速缓存。它允许使用一个或多个高速磁盘驱动器(例如 SSD)作为一个或多个速度低得多的硬盘的超速缓存。bcache 支持直写和写回,不受所用文件系统的约束。默认情况下,它只超速缓存随机读取和写入,这也是 SSD 的强项。它还适合用于台式机、服务器和高端储存阵列

主要功能:

1,可以使用单个超速缓存设备来超速缓存任意数量的后备设备。在运行时可以挂接和分离已装入及使用中的后备设备。

2,在非正常关机后恢复 - 只有在超速缓存与后备设备一致后才完成写入。

3,SSD 拥塞时限制传至 SSD 的流量。

4,高效的写回实施方案。脏数据始终按排序顺序写出。

5,稳定可靠,可在生产环境中使用。

关于bcache的更多介绍都在这里

CentOS和Ubuntu都可以使用bcache。我是在suse下安装的,记录下,防止忘记。

1,配置suse 下的zypper本地安装源zypper ar file:///yumdata localar :添加安装源

file:///yumdata suse安装镜像的路径

local zypper安装源的名称

zypper更多参数介绍:lr 列出所有定义的安装源。

ar 添加一个新的安装源。

rr 删除指定的安装源。

nr 重命名指定的安装源。

mr 修改指定的安装源。

ref 刷新所有安装源。

clean 清除本地缓存。

e750a484f58120f0d79e49e1fd291201.png

查看zypper安装源

b2a1ff4c4cbcddaad85c78b048978779.png

2,安装bcache软件zypper install bcache-tools

f220d685d75181e2a74a284988dbbdf2.png

3,加载内核modprobe bcache

lsmod |grep bcache

有如下输出内容,说明内核加载成功

c39e41017b08a77306327d6c2f715038.png

查看当前磁盘:三个2TB HDD,一个400GB NVME SSD

830c7b75ce832d5175adf7bda18cb953.png

4,绑定SSD和HDD

bcache有两种设备,一个是backing,一个是cache,backing指的就是存放数据的后端磁盘,cache很好理解,就是高速缓存盘SSD

bcache 可以支持将用来做缓存的ssd和做数据存放的hdd一次性注册,而不需要手动连接挂载ssd和hddmake-bcache -B /dev/sdb /dev/sdc /dev/sdd -C /dev/nvme0n1

70d040d5a2f3d894d56b3ae906db3a2f.png

5,查看bcache相关信息lsblk

3471db1ed8a65f39f269845851db9f34.pngcat /sys/block/bcache0/bcache/stateno cache:该backing device没有attach任何caching device

clean:一切正常,缓存是干净的

dirty:一切正常,已启用回写,缓存是脏的

inconsistent:遇到问题,后台设备与缓存设备不同步

65238fd3bbd9e35e9f179ee20ca7c893.png

查看缓存数据量cat /sys/block/bcache0/bcache/dirty_data

54480b23e59677c81fd4bbdb8a183358.png

查看缓存模式,默认情况下是直通超速缓存模式cat /sys/block/bcache0/bcache/cache_mode

153aefb0b322af6bdaac9cd9613ba569.png

6,为了提高写的性能,需要修改缓存模式为写回echo writeback > /sys/block/bcache0/bcache/cache_mode

ab2bbc692c95b062fce2001d2b161917.png

7,格式化使用mkfs.xfs /dev/bcache0

mkdir /cache

mount /dev/bcache0 /cache

8,开机自动挂载

由于bcache设备在每次重启后,N的值并不是固定的,有可能重启后,原先的bcahe0变为bcache1,而bcache1却变成了bcache0,。所以,不能将/dev/bcache作为磁盘挂载,需要使用该磁盘的UUID进行挂载,通过以下命令可以获取磁盘的UUIDblkid /dev/bcache0

8efb7cd62d41f81c92733edef5a61f55.png

然后将uuid写入/etc/fstab 实现开机自动挂载

9,使用fio测试性能

先安装编译工具。zypper install make gcc* kernel-devel kernel-headers

61c336a7a9064a06ec4d80aee09eeb4b.pnglinux-be3v:~ # cd fio-3.15/

linux-be3v:~/fio-3.15 # ./configure

linux-be3v:~/fio-3.15 # make

linux-be3v:~/fio-3.15 # make install

10,测试有缓存fio -filename=/dev/bcache0 -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=4k -size=200G -numjobs=10 -runtime=60 -group_reporting -name=mytest

c0d84dfbb74113664a923faaac1ac721.png

11,测试无缓存fio -filename=/dev/sdb -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=4k -size=200G -numjobs=10 -runtime=60 -group_reporting -name=mytest

675f0101870580ad2df1af8a03019289.png

后附常用bcache命令

1,查看cache 缓存盘的CACHE_SET_UUIDll /sys/fs/bcache

2,注销缓存盘

通过缓存盘的CACHE_SET_UUID,在/sys/fs/bcache//unregister写入1,即可进行注销echo 1 >/sys/fs/bcache/06e33354-7c21-4c52-990d-1a653617ab20/unregister

3,停用后端磁盘echo 1 > /sys/block/sdb/bcache/stop

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

4,把 cache 上面的数据刷到后端磁盘上面echo 0 > /sys/block/bcache0/bcache/writeback_percent

5,fio测试工具常用参数说明filename=/dev/sdb 测试文件名称,通常选择需要测试的盘的data目录。

direct=1 测试过程绕过机器自带的buffer。使测试结果更真实。

rw=randwrite 测试随机写的I/O

rw=randrw 测试随机写和读的I/O

bs=16k 单次io的块文件大小为16k

bsrange=512-2048 同上,提定数据块的大小范围

size=5g 本次的测试文件大小为5g,以每次4k的io进行测试。

numjobs=30 本次的测试线程为30.

runtime=1000 测试时间为1000秒,如果不写则一直将5g文件分4k每次写完为止。

ioengine=psync io引擎使用pync方式

rwmixwrite=30 在混合读写的模式下,写占30%

group_reporting 关于显示结果的,汇总每个进程的信息

lockmem=1g 只使用1g内存进行测试。

zero_buffers 用0初始化系统buffer。

nrfiles=8 每个进程生成文件的数量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值