内核开启bcache
| modprobe bcache |
| lsmod |grep bcache |
安装bcache-tools
绑定SSD和HDD
bcache有两种设备,一个是backing,一个是cache,backing指的就是存放数据的后端磁盘,cache很好理解,就是高速缓存盘SSD
查看系统中存在的硬盘
清除磁盘的块信息
| wipefs -a /dev/nvme0n1 |
| wipefs -a /dev/sdb |
| umount: /run/user/0: target is busy. |
| umount: /sys/fs/cgroup: target is busy. |
| umount: /: target is busy. |
| umount: /run: target is busy. |
| umount: /dev: target is busy. |
添加数据盘
添加缓存盘
| make-bcache -C /dev/nvme0n1 |
查看块信息
| 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 |
格式化数据盘
| apt-get install -y xfsprogs |
| mkfs.xfs /dev/bcache0 |
挂载数据盘
临时挂载
| mount /dev/bcache0 /diskb |
开机自动挂载
查看设备UUID
添加到/etc/fstab
| UUID=caa8005f-05ce-430d-b133-94f0a3b32f39 /diska xfs defaults 0 0 |
重启后验证是否正常挂载
测试缓存性能
读取测试
无缓存时数据盘
| 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 |
| fio -filename=/dev/bcache0 -ioengine=sync -direct=1 -rw=write -bs=8k -size=10G -numjobs=8 -runtime=100 -allow_mounted_write=1 -group_reporting -name=fio_test |
停用设备
注销设备
| echo 1 >/sys/fs/bcache/<UUID>/unregister |
停用bcache
| echo 1 >/sys/block/bcache0/bcache/stop |
擦除磁盘残留数据
| wipefs -a /dev/sdc |
| wipefs -a /dev/sdb |
本文作者:Byron_Zora
本文链接:https://www.cnblogs.com/byzora/p/17279254.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步