• Linux编译内核添加Bcache模块


    由于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
    
    • 1
    • 2

    其次,还要查看内核中有没有编入Bcache模块,默认内核并没有将Bcache编译进内。检查内核中有没有Bcache模块的的方式有两种:

    1. 检查/sys/fs/bcache/目录是否存在,没有则说明内核中没有bcache
    2. 检查/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
    
    • 1

    如果下载速度太慢,可以先本地下载,再上传到服务器上。

    2 编译内核

    2.1 安装依赖

    yum update
    yum install gcc bc gcc-c++ ncurses ncurses-devel cmake elfutils-libelf-devel openssl-devel
    
    • 1
    • 2

    2.2 添加Bcache选项

    [root@ceph01 linux-4.18]# make menuconfig
    
    • 1

    执行上面的命令会出现如下配置界面,

    image-20231018103703834

    选择Device Drivers,回车

    image-20231018104352660

    选择Multiple devices driver support(RAID and LVM),回车

    image-20231018104622908

    image-20231018104738807

    移动到Block device as cache选项,按Y键将该功能编译进内核。保存退出即可!

    Y:将该功能编译进内核

    N:不将该功能编译进内核

    M:将该功能编译成可以动态加载到内核中的模块

    2.3 去除证书编译

    编译可能会提示证书有误,直接不编译即可。

    vim .config
    
    • 1

    搜索"cert",将CONFIG_SYSTEM_TRUSTED_KEYS值改为空白即可,CONFIG_MODULE_SIG_KEY保持不变。CONFIG_MODULE_SIG_KEY的置空可能会引起make modules_install的报错。

    2.4 编译安装

    根据CPU核数编译,例如:

    make -j16 bzImage      # 编译内核
    
    • 1

    下图是我编译完成的提示(之前编译过一次,只有这个图了):

    make -j16 modules      # 编译内核模块
    
    • 1

    image-20231018160418507

    make modules_install   # 拷贝内核模块的.ko文件到/lib/modules/下
    make install           # 拷贝initrd和bzImage到boot目录下,并修改开机启动配置文件
    reboot                 # 重启
    
    • 1
    • 2
    • 3

    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
    
    • 1
    • 2

    检查/sys/fs/bcache/目录是否存在

    image-20231018160529329

    创建Bcache测试

    image-20231018160735200

    image-20231018160633533

    参考

  • 相关阅读:
    NoSql 数据库简介
    语言模型和编解码模型
    AUTOCAD——坐标轴固定、CAD使用环形阵列绘制图形
    UE5C++学习(一)--- 增强输入系统
    C/C++飞机票订购系统
    图片的可视化呈现有效增强大屏吸引力
    在Qt中使用SQLite数据库
    39、HumanNeRF
    python下celery的基本使用
    HIVE优化和数据倾斜、合并小文件
  • 原文地址:https://blog.csdn.net/gengduc/article/details/133908570