由于Bcache是在linux kernel 3.10之后才加入的,所以要使用Bcache,首先必须确保内核版本至少是3.10或及以上,可以使用uname -a
查看内核版本
[root@ceph01 ~]# uname -a
Linux ceph01 4.18.0-305.3.1.el8.x86_64 #1 SMP Tue Jun 1 16:14:33 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
其次,还要查看内核中有没有编入Bcache模块,默认内核并没有将Bcache编译进内。检查内核中有没有Bcache模块的的方式有两种:
- 检查
/sys/fs/bcache/
目录是否存在,没有则说明内核中没有bcache - 检查
/lib/modules/<$version>/kernel/drivers/md/bcache/
目录是否存在,如果存在则可以运行modprobe bcache命令来加载bcache模块,不存在则说明内核中没有bcache。
可以通过下载内核源码重新编译将Bcache以内核模块的形式编译进内核。
1 下载内核源码
下载地址:https://github.com/torvalds/linux/archive/refs/tags/
[root@ceph01 ~]# wget https://github.com/torvalds/linux/archive/refs/tags/v4.18.tar.gz
如果下载速度太慢,可以先本地下载,再上传到服务器上。
2 编译内核
2.1 安装依赖
yum update
yum install gcc bc gcc-c++ ncurses ncurses-devel cmake elfutils-libelf-devel openssl-devel
2.2 添加Bcache选项
[root@ceph01 linux-4.18]# make menuconfig
执行上面的命令会出现如下配置界面,
选择Device Drivers,回车
选择Multiple devices driver support(RAID and LVM),回车
移动到Block device as cache选项,按Y键将该功能编译进内核。保存退出即可!
Y:将该功能编译进内核
N:不将该功能编译进内核
M:将该功能编译成可以动态加载到内核中的模块
2.3 去除证书编译
编译可能会提示证书有误,直接不编译即可。
vim .config
搜索"cert",将CONFIG_SYSTEM_TRUSTED_KEYS
值改为空白即可,CONFIG_MODULE_SIG_KEY
保持不变。CONFIG_MODULE_SIG_KEY
的置空可能会引起make modules_install的报错。
2.4 编译安装
根据CPU核数编译,例如:
make -j16 bzImage # 编译内核
下图是我编译完成的提示(之前编译过一次,只有这个图了):
make -j16 modules # 编译内核模块
make modules_install # 拷贝内核模块的.ko文件到/lib/modules/下
make install # 拷贝initrd和bzImage到boot目录下,并修改开机启动配置文件
reboot # 重启
2.5 验证
重启后在开机界面会让你选择内核,进入系统后使用uname -a
命令验证
[root@ceph01 linux-4.18]# uname -a
Linux ceph01 4.18.0 #2 SMP Wed Oct 18 03:03:29 EDT 2023 x86_64 x86_64 x86_64 GNU/Linux
检查/sys/fs/bcache/
目录是否存在
创建Bcache测试