鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

FUSE调优

环境准备

  • Libfuse用户态优化基于openEuler 22.03(LTS-SP4)版本进行开发,使用该特性时,Ceph客户端操作系统需要升级到openEuler 22.03(LTS-SP4)。
  • openEuler 22.03自带的Libfuse版本为3.10.5,Ceph 16及以上版本上Fuse模块才开始支持使用Libfuse 3.x版本,因此Ceph需要安装16以上的版本,建议直接安装openEuler 22.03(LTS-SP4)自带的16.2.7版本。安装方法可参见Ceph 16.2.7 安装指南(openEuler 22.03)
  • 优化后的Libfuse不支持splice读写模式,需要在ceph.conf配置中关闭该读写模式,具体可参见Ceph文件存储 部署指南(CentOS 7.6&openEuler 20.03&openEuler 22.03)中的“配置MON节点”章节,将global作用域下的参数配置为如下内容。

    fuse_splice_read = false

    fuse_splice_write = false

    fuse_splice_move = false

    由于openEuler 22.03 (LTS-SP4)自带的ceph-fuse依赖的Libfuse库版本为2.x版本,需要在openEuler 22.03 (LTS-SP4)上安装Libfuse3重新编译ceph-fuse,具体步骤如下。

以下步骤任选一台服务端机器或者客户端机器进行编译。

  1. 安装Libfuse3模块。
    1
    yum install fuse3 fuse3-devel
    
  2. 进入“/home”目录下载Ceph 16.2.7源码。
    1
    cd /home && wget https://download.ceph.com/tarballs/ceph-16.2.7.tar.gz --no-check-certificate
    
  3. 解压源码包。
    1
    tar -zxvf ceph-16.2.7.tar.gz
    
  4. 安装编译相关依赖。
    1
    yum install java-devel sharutils checkpolicy selinux-policy-devel gperf cryptsetup fuse-devel gperftools-devel libaio-devel libblkid-devel libcurl-devel libudev-devel libxml2-devel libuuid-devel ncurses-devel valgrind-devel xfsprogs-devel xmlstarlet yasm nss-devel libibverbs-devel openldap-devel CUnit-devel python3-Cython python3-setuptools python-prettytable lttng-ust-devel expat-devel junit boost-random keyutils-libs-devel openssl-devel libcap-ng-devel python3-sphinx leveldb leveldb-devel snappy snappy-devel lz4 lz4-devel liboath liboath-devel libbabeltrace-devel librabbitmq librabbitmq-devel librdkafka librdkafka-devel libnl3 libnl3-devel rdma-core-devel numactl numactl-devel numactl-libs createrepo openldap-devel rdma-core-devel lz4-devel expat-devel lttng-ust-devel libbabeltrace-devel python3-Cython gperftools-devel bc dnf-plugins-core librabbitmq-devel rpm-build java-1.8.0-openjdk-devel python3-devel openeuler-lsb rpmdevtools cmake gcc-c++ libtool cryptsetup-devel sqlite-devel lua-devel libicu-devel -y
    
  5. 进入ceph-16.2.7目录并执行编译构建脚本。
    1
    cd ceph-16.2.7 && ./do_cmake.sh -DCMAKE_BUILD_TYPE=Release
    
  6. 进入“build”目录,并编译ceph-fuse。
    1
    cd build && make -j ceph-fuse
    
  7. 编译成功后,ceph-fuse位于“build/bin”目录。
    1
    cd bin
    

Fuse相关依赖安装

以下步骤都在客户端节点进行。

  1. 安装Libfuse3模块。
    1
    yum install fuse3 fuse3-devel
    
  2. 将“环境准备”中的步骤7的ceph-fuse移动到“/usr/bin”目录下,并对ceph-fuse进行提权。
    1
    chmod 755 /usr/bin/ceph-fuse
    
  3. 安装优化后的内核。
    1
    yum install kernel-5.10.0-263.0.0.166.oe2203sp4.aarch64
    

    Libfuse库优化需要内核Fuse模块进行改造支持,内核Fuse部分的改动从kernel-5.10.0-263.0.0.166版本开始支持。

  4. 将内核切换到步骤3安装的版本。
    1
    grub2-set-default 'openEuler (5.10.0-263.0.0.166.oe2203sp4.aarch64) 22.03 (LTS-SP4)'
    
  5. 重启服务器,使得切换后的内核生效。
    1
    reboot
    

挂载CephFuse文件系统

以下步骤都在客户端节点进行。

  1. 创建文件系统挂载点。
    1
    mkdir /mnt/cephfs
    
  2. 执行挂载命令。
    1
    ceph-fuse -m 192.168.3.166:6789,192.168.3.167:6789,192.168.3.168:6789 /mnt/cephfs -o use_fastpath
    
    • 192.168.3.166”“192.168.3.167”“192.168.3.168”,对应的是Ceph存储节点的Public IP地址。
    • MON默认端口号为6789,-o后带上“use_fastpath”参数表示使能libfuse优化模块,若不指定将使用原始libfuse模块。
  3. 查看是否挂载成功。
    1
    df -h
    

    通过df -h命令查看文件系统是否挂载成功,若成功挂载可看到下图红色框的文件目录。