Linux/Ubuntu/Debian使用bcache开启SSD缓存加速 您所在的位置:网站首页 ubuntu缓存过高 Linux/Ubuntu/Debian使用bcache开启SSD缓存加速

Linux/Ubuntu/Debian使用bcache开启SSD缓存加速

2024-06-03 13:12| 来源: 网络整理| 查看: 265

前言

随着磁盘小文件的增多,机械硬盘4K读写速度非常容易遇到瓶颈,考虑到固态硬盘高昂的价格,所以采用固态硬盘作为缓存盘,机械硬盘作为数据盘的方案,使用固态硬盘给机械硬盘加速。

bcache简介

bcache 是一个 Linux 内核块层超速缓存。它允许使用一个或多个高速磁盘驱动器(例如 SSD)作为一个或多个速度低得多的硬盘的超速缓存。bcache 支持直写和写回,不受所用文件系统的约束。

主要功能:

1,可以使用单个超速缓存设备来超速缓存任意数量的后备设备。在运行时可以挂接和分离已装入及使用中的后备设备。 2,在非正常关机后恢复 - 只有在超速缓存与后备设备一致后才完成写入。 3,SSD 拥塞时限制传至 SSD 的流量。 4,高效的写回实施方案。脏数据始终按排序顺序写出。 5,稳定可靠,可在生产环境中使用。

以下教程使用debian演示。

内核开启bcache modprobe bcache lsmod |grep bcache 安装bcache-tools apt install bcache-tools 绑定SSD和HDD

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

查看系统中存在的硬盘 fdisk -l 清除磁盘的块信息 wipefs -a /dev/nvme0n1 wipefs -a /dev/sdb 添加数据盘 make-bcache -B /dev/sdb 添加缓存盘 make-bcache -C /dev/nvme0n1 查看块信息 lsblk root@debian:~# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 16G 0 disk ├─sda1 8:1 0 487M 0 part /boot ├─sda2 8:2 0 1K 0 part ├─sda3 8:3 0 1023K 0 part ├─sda4 8:4 0 12G 0 part │ ├─debian--vg-root 254:0 0 11.5G 0 lvm / │ └─debian--vg-swap_1 254:1 0 4G 0 lvm [SWAP] └─sda5 8:5 0 3.5G 0 part ├─debian--vg-root 254:0 0 11.5G 0 lvm / └─debian--vg-swap_1 254:1 0 4G 0 lvm [SWAP] sdb 8:16 0 3.7T 0 disk └─bcache0 253:0 0 3.7T 0 disk sdc 8:32 0 3.7T 0 disk └─sdc1 8:33 0 3.7T 0 part nvme0n1 259:0 0 477G 0 disk 查看缓存盘的UUID bcache-super-show /dev/nvme0n1

最后一行的cset.uuid的值就是我们要找的uuid,然后进行attach操作完成添加缓存磁盘:

绑定缓存盘 echo "dcddc3f8-e1d4-4ecf-8510-67158a5e3958" >/sys/block/bcache0/bcache/attach root@debian:~# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 16G 0 disk ├─sda1 8:1 0 487M 0 part /boot ├─sda2 8:2 0 1K 0 part ├─sda3 8:3 0 1023K 0 part ├─sda4 8:4 0 12G 0 part │ ├─debian--vg-root 253:0 0 11.5G 0 lvm / │ └─debian--vg-swap_1 253:1 0 4G 0 lvm [SWAP] └─sda5 8:5 0 3.5G 0 part ├─debian--vg-root 253:0 0 11.5G 0 lvm / └─debian--vg-swap_1 253:1 0 4G 0 lvm [SWAP] sdb 8:16 0 3.7T 0 disk └─bcache0 254:0 0 3.7T 0 disk sdc 8:32 0 3.7T 0 disk └─sdc1 8:33 0 3.7T 0 part nvme0n1 259:0 0 477G 0 disk └─bcache0 254:0 0 3.7T 0 disk

如提示错误以下,可以尝试重启后继续操作

-bash: echo: write error: No such file or directory 查看缓存状态 cat /sys/block/bcache0/bcache/state no cache:该backing device没有attach任何caching device clean:一切正常,缓存是干净的 dirty:一切正常,已启用回写,缓存是脏的 inconsistent:遇到问题,后台设备与缓存设备不同步 更改缓存策略 Bcache有三种缓存策略 (1)writeback回写策略:数据先写入到缓存磁盘,再等待系统将缓存磁盘数据刷到后端磁盘 (2)writethrough写通策略:数据会同时写入缓存磁盘和数据磁盘(默认是该模式) (3)writearound直达策略:数据直接写入后端磁盘。

为保证性能,改为writeback回写策略。

查看缓存模式 cat /sys/block/bcache0/bcache/cache_mode 改为回写策略 echo writeback > /sys/block/bcache0/bcache/cache_mode 格式化数据盘 mkfs.xfs /dev/bcache0 挂载数据盘 临时挂载 mount /dev/bcache0 /diskb 开机自动挂载

查看设备UUID

blkid /dev/bcache0

添加到/etc/fstab

vi /etc/fstab UUID=caa8005f-05ce-430d-b133-94f0a3b32f39 /diska xfs defaults 0 0

重启后验证是否正常挂载。

测试缓存性能 安装测试工具fio apt install fio 读取测试 无缓存时数据盘 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 加了缓存的数据盘 fio -filename=/dev/bcache0 -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=4k -size=200G -numjobs=10 -runtime=60 -group_reporting -name=mytest 写入测试 无缓存时数据盘 fio -filename=/dev/sdb -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=4k -size=200G -numjobs=10 -runtime=60 -group_reporting -name=mytest 加了缓存的数据盘 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 测试结果 读取IOPS读取速度写入IOPS写入速度 无缓存数据盘934238.3MB/s209859kB/s 带缓存的数据盘13.1k53.7MB/s84.1k344MB/s

虽然有提升,但是离预期相差较大,可能跟策略有关,后续再研究优化。

Bcache常用操作

点击查看Bcache常用操作



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有