Unbuntu20.4编译安装lustre客户端

1.安装依赖包

  • 下载依赖包:

    sudo sed -i '/deb-src/s/^# //' /etc/apt/sources.list && sudo apt update
    
    # 通过uname -r查看自己内核的版本来更改安装的版本
    sudo apt install -y linux-image-5.4.0-164-generic linux-modules-5.4.0-164-generic linux-modules-extra-5.4.0-164-generic
    
    sudo apt install -y git libtool libtool-bin libyaml-dev ed libreadline-dev dpatch libsnmp-dev mpi-default-dev module-assistant quilt libjson-c-dev pkg-config
    
    sudo apt install -y libncurses5-dev libncurses-dev bison flex gnupg libelf-dev gcc libssl-dev bc bzip2 build-essential udev kmod cpio
    
    sudo apt install -y libfuse-dev libattr1-dev libblkid-dev uuid-dev devscripts fakeroot kernel-wedge libudev-dev libpython3-dev swig
    
    sudo apt install -y gettext texinfo debhelper dh-exec update-notifier-common sg3-utils attr mpi-default-bin selinux-utils
    
    sudo apt install -y python python2 python2-minimal python2.7 libpython2-stdlib libsgutils2-2 libpython2.7-stdlib python2.7-minimal libpython2.7-minimal libkeyutils-dev libmount-dev dwarves python3-distutils
    
  • 如果出现下列问题,可以这样解决:

    You might want to run 'apt --fix-broken install' to correct these.
    The following packages have unmet dependencies:
     libsnmp-dev : Depends: libsnmp35 (= 5.8+dfsg-2ubuntu2.9) but it is not going to be installed
                   Depends: libwrap0-dev but it is not going to be installed
                   Depends: libssl-dev but it is not going to be installed
                   Depends: libsensors-dev
                   Depends: libpci-dev but it is not going to be installed
    E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).
    
    # 解决方法,执行下列命令后安装
    sudo apt --fix-broken install -o Dpkg::Options::="--force-overwrite"
    

2.上传解压源码包:

  • 上传解压lustre源码包:

  sudo tar -xvf lustre-client-2.14.0_ddn85.tar.gz

3.编译和安装:

  • 先进入解压后的根目录:

    cd ~/lustre-2.14.0_ddn85/
    
  • 准备编译环境:

    # --with-o2ib 是一个选项,用于启用支持O2IB(OpenFabrics 2.0 verbs)的功能。O2IB是一种用于InfiniBand互连网络的开放式高性能通信协议
    # --disable-server 是一个选项,表示禁用服务器功能。这意味着在编译过程中不会包含服务器相关的功能和组件。
    sudo ./configure --disable-server --with-o2ib
    
  • 编译源码包

    sudo make debs
    
  • 安装客户端软件包:

    cd ./debs && sudo dpkg -i lustre-client*.deb lustre-dev*.deb
    
  • 加载模块:

    qv123@localhost:~/lustre-2.14.0_ddn85/debs$ sudo modprobe lustre && lsmod | grep lustre
    lustre               1011712  0
    lmv                   204800  1 lustre
    mdc                   262144  1 lustre
    lov                   331776  2 mdc,lustre
    ptlrpc               1331200  7 fld,osc,fid,lov,mdc,lmv,lustre
    obdclass             3284992  8 fld,osc,fid,ptlrpc,lov,mdc,lmv,lustre
    lnet                  565248  6 osc,obdclass,ptlrpc,ksocklnd,lmv,lustre
    libcfs                487424  11 fld,lnet,osc,fid,obdclass,ptlrpc,ksocklnd,lov,mdc,lmv,lustre
    

4.配置Lustre network:

  • 配置Lnet的IP地址:(添加ens38的网卡内容)

    sudo vi /etc/netplan/00-installer-config.yaml
    network:
      ethernets:
        ens33:
          ...
        ens38:
          addresses: [192.168.209.203/24]
      version: 2
      renderer: networkd
    
    sudo netplan apply
    
  • 修改配置文件:(切换成root用户)

    cat << eof > /etc/modprobe.d/lustre.conf
    options lnet networks="tcp(ens33),tcp2(ens38)"
    eof
    
    cat << eof > /etc/modprobe.d/lustre.conf
    options lnet networks="tcp(ens33),o2ib0(ib0)"
    eof
    
  • 加载模块:

    sudo lustre_rmmod && sudo modprobe -v lustre
    

5.挂载文件系统:

sudo mkdir /mnt/global-client1
sudo mount -t lustre 192.168.209.21@tcp2:192.168.209.22@tcp2:/global /mnt/global-client1

# 切换成root用户查看
root@localhost:/home/qv123# cd /mnt/global-client1
root@localhost:/mnt/global-client1# ll
total 3602672
drwxr-xr-x 3 root root       4096 Oct 16 18:41 ./
drwxr-xr-x 3 root root       4096 Oct 17 10:45 ../
-rw-r--r-- 1 root root          0 Oct 16 18:41 test
-rw-r--r-- 1 root root 3693318144 Oct 16 18:45 test1

6.准备编译环境和编译中的问题:

  • 问题1:依赖

    复制代码
    configure: WARNING: GSS keyring backend requires libkeyutils
    configure: error: Cannot enable gss_keyring. See above for details.
    复制代码
    # 解决方法
    apt install -y keyutils-libs keyutils-libs-devel
  • 问题2:依赖

    复制代码
    configure: error: libyaml development package is required
    复制代码
    # 解决方法
    apt install -y libyaml-devel
  • 问题三:依赖

    复制代码
    configure: error: libmount development package is required
    复制代码
    # 解决方法
    apt install -y libyaml-devel
  • 问题四:依赖

    复制代码
    dpkg-checkbuilddeps: 错误: Unmet build dependencies: module-assistant libreadline-dev debhelper (>= 11) dpatch libsnmp-dev quilt
    复制代码
    # 解决方法
    apt install -y module-assistant libreadline-dev debhelper dpatch libsnmp-dev quilt
  • 问题四:

    复制代码
    /usr/src/linux-headers-6.2.0-33-generic/include/linux/shrinker.h:102:27: note: declared here
      102 | extern int __printf(2, 3) register_shrinker(struct shrinker *shrinker,
    复制代码
    # 解决方法
    ​
  • 问题五:

    复制代码
    dpkg-buildpackage: 错误: debian/rules build subprocess returned exit status 2
    复制代码
    # 解决方法
    ​
  • 问题六:

    复制代码
    dpkg-checkbuilddeps: error: Unmet build dependencies:
    linux-headers-generic  linux-headers-amd64inux-headers-arm64
    复制代码
    # 解决方法
    ​
  • 问题七:

    复制代码
    dpkg-checkbuilddeps: error: Unmet build dependencies: pkg-confi
    复制代码
    # 解决方法
    sudo apt install -y pkg-config
相关推荐
-杀意感知-2 分钟前
Linux 开发工具(vim、gcc/g++、make/Makefile)+【小程序:进度条】-- 详解
linux
如意机反光镜裸5 分钟前
CentOS7搭建Hadoop3集群教程
运维
周湘zx29 分钟前
k8s中的存储
linux·运维·云原生·容器·kubernetes
[听得时光枕水眠]1 小时前
【Docker】Docker上安装MySql8和Redis
运维·docker·容器
AI原吾1 小时前
解锁自动化新境界:KeymouseGo,让键盘和鼠标动起来!
运维·python·自动化·计算机外设·keymousego
_平凡之路_1 小时前
解决ubuntu22.04 gnome-terminal 无法启动的问题
linux·运维·python
凯子坚持 c1 小时前
0基础带你入门Linux之使用
linux·运维·服务器
EterNity_TiMe_2 小时前
【Linux基础IO】深入Linux文件描述符与重定向:解锁高效IO操作的秘密
linux·运维·服务器·学习·性能优化·学习方法
python-码博士2 小时前
Rosetta 一:手把手教你用Linux安装Rosetta(全网最简洁)
linux·运维·服务器
神秘的土鸡2 小时前
Linux中Docker容器构建MariaDB数据库教程
linux·运维·服务器·数据库·docker·mariadb