前言:

我们都知道,在机械硬盘上,小文件读写很容易遇到瓶颈,在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群。

发表回复

后才能评论