前言:
我们都知道,在机械硬盘上,小文件读写很容易遇到瓶颈,在nas上比如群晖都是有SSD缓存的,我个人后期换掉了目前已知的nas系统,使用了ubuntu 当nas系统,所以我找到了bcache缓存来给机械阵列增加一个SSD缓存,增加小文件的速度。
至于bacache是个啥,大家百度把,会有更详细的解释,我这里就不耍大刀了。
教程:
注意:配置bcache的过程会清空所有操作硬盘的数据(ssd,hdd)
一,内核开启bcache,注意内核超过3.0版本就有,低于这个版本的请升级。
modprobe bcache lsmod |grep bcache
二,安装管理工具
apt-get install bcache-tools
三,查看硬盘
使用命令查看我们系统已经识别到的硬盘,并记录需要处理的机械硬盘和固态硬盘
fdisk -l
获取到,机械硬盘和固态硬盘,这里我虚构两个,实际操作请进行替换,机械/dev/sdb 固态/dev/nvme1n1
四,清楚硬盘的块信息
注意:此步骤会清空所有操作的硬盘,有重要数据的请提前备份
wipefs /dev/sdb wipefs /dev/nvme1n1
五,绑定固态和机械硬盘
bcache 有两种设备,一种是backing也就是绑定机械硬盘,一种是cache就是固态。
make-bcache -B /dev/sdb 绑定机械 make-bcache -C /dev/nvme1n1 绑定固态
六,查看块信息
使用命令,lsblk 查看会得到如下结果
sdb 8:16 0 10.9T 0 disk └─bcache0 253:0 0 10.9T 0 disk nvme1n1 259:0 0 465.8G 0 disk
七,查看缓存固态的UUID
bcache-super-show /dev/nvme1n1
八,绑定缓存盘
把上一步获取到的UUID 绑定到机械盘。
echo "859a0f12-86db-404f-9c6b-4fbbca1511fe" >/sys/block/bcache0/bcache/attach
九,再次查看块信息
使用命令lsblk查看
sdb 8:16 0 10.9T 0 disk └─bcache0 254:0 0 10.9T 0 disk nvme0n1 259:0 0 465.8G 0 disk └─bcache0 254:0 0 10.9T 0 disk
十,格式化数据盘
吧数据盘格式化为XFS
mkfs.xfs /dev/bcache0
十一,开机自动挂载
在开机挂载前,可以使用mount命令临时挂载一下看看,没问题在继续,mount属于临时挂载,重启就没了。
mount /dev/bcache0 /mnt
注意mnt 可以修改为你想挂的路径
使用命令查看bcache的uuid
blkid /dev/bcache0
把获取到的uuid 添加到/etc/fstab
nano /etc/fstab
UUID=2794bd1f-cdd4-49af-aff3-73a184536a4b /mnt xfs defaults 0 0
命令中的mnt 需要修改为想要挂的路径,到此就结束了。
配置完了,我们来看看简单修改一下策略。
Bcache有三种缓存策略
writeback回写策略:数据先写入到缓存磁盘,再等待系统将缓存磁盘数据刷到后端磁盘
writethrough写通策略:数据会同时写入缓存磁盘和数据磁盘(默认是该模式)
writearound直达策略:数据直接写入后端磁盘
查看当前策略:
cat /sys/block/bcache0/bcache/cache_mode
修改策略:
echo writeback > /sys/block/bcache0/bcache/cache_mode
writeback可以替换成你想使用的策略
查看缓存状态:
cat /sys/block/bcache0/bcache/state
clean:一切正常,缓存是干净的
dirty:一切正常,已启用回写,缓存是脏的
inconsistent:遇到问题,后台设备与缓存设备不同步
默认配置,bcache 并不会缓存大文件,如果需要缓存大文件,可是使用命令,让bcache缓存大文件。
echo 0 /sys/block/bcache0/bcache/sequential_cutoff
结尾:
到此教程就结束了,bcache 还有很多参数可以调整适应不同环境,我这里只是写了最基础的配置,如有其他不同意见,可以在下面留言或者来q群。