zoukankan      html  css  js  c++  java
  • 源码编译安装 ganesha

    源码编译安装 ganesha

    简介

    • 系统环境:CentOS 7.5
    • ceph:luminous
    • nfs-ganesha:v2.6 stable

    安装步骤

    安装依赖

    • 首先需要安装编译会用到的公共库
    1
    
      yum install gcc git cmake autoconf libtool bison flex doxygen openssl-devel gcc-c++ krb5-libs krb5-devel libuuid-devel nfs-utils -y

    如果是使用 Ubuntu 系统,主要有以下几个包不同

    • gcc-c++ -> g++
    • libuuid-devel -> uuid-dev
    • nfs-utils -> nfs-kernel-server
    • 如果要生成 FSAL_RGW 模块,需要安装 librgw2-devel
    1
    
      yum install librgw2-devel -y
    • 如果要生成 FSAL_CEPH 模块,需要安装 libcephfs1-devel
    1
    
      yum install libcephfs-devel -y

    源码下载

    克隆源码到本地

    1
    
    git clone -b V2.6-stable https://github.com/nfs-ganesha/nfs-ganesha.git --recursive

    编译

    • cmake nfs-ganesha 源码

      • 如果需要生成 FSAL_RGW 模块,则在编译选项中添加: -DUSE_FSAL_RGW=ON
      • 如果需要生成 FSAL_CEPH 模块,则在编译选项中添加: -DUSE_FSAL_CEPH=ON
    1
    2
    3
    4
    5
    
      cd nfs-ganesha
      cd src/
      mkdir build
      cd build/
      cmake -DUSE_FSAL_RGW=ON -DUSE_FSAL_CEPH=ON ../
    • cmake 的过程中会有以下输出
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    
      -- Looking for ceph_ll_lookup_root in cephfs - found
      -- Found cephfs libraries: /usr/lib64/libcephfs.so
      -- Found CEPHFS: /usr/include  
      -- Looking for rgw_mount in rgw
      -- Looking for rgw_mount in rgw - found
      -- Found rgw libraries: /usr/lib64/librgw.so
      -- Found RGW: /usr (found suitable version "1.1", minimum required is "1.1") 
      ...
      -- USE_FSAL_CEPH = ON
      -- USE_FSAL_CEPH_MKNOD = OFF
      -- USE_FSAL_CEPH_SETLK = OFF
      -- USE_FSAL_CEPH_LL_LOOKUP_ROOT = ON
      -- USE_FSAL_RGW = ON

    请确保 -- USE_FSAL_CEPH 为 ON ,以及 -- USE_FSAL_RGW 为 ON

    • 在 build 目录下进行编译和安装
    1
    2
    
      make
      make install

    PS: 在 make install 生成的输出中,可以看到:

    – Up-to-date: /usr/share/doc/ganesha/config_samples/rgw.conf … – Up-to-date: /usr/share/doc/ganesha/config_samples/ceph.conf

    这两个文件就是配置将RGWCephFS配置为ganesha-nfs的配置模板

    配置 service

    将 nfs-ganesha 源码目录下的 nfs-ganesha/src/scripts/systemd 目录下的 service 文件复制到系统 /usr/lib/systemd/system/ 目录下,将 nfs-ganesha 配置为系统服务让 systemd 接管,然后设置开机自启

    1
    2
    3
    4
    5
    
    cd nfs-ganesha/src/scripts/systemd
    cp nfs-ganesha-config.service /usr/lib/systemd/system/nfs-ganesha-config.service
    cp nfs-ganesha.service.el7 /usr/lib/systemd/system/nfs-ganesha.service
    cp nfs-ganesha-lock.service.el7 /usr/lib/systemd/system/nfs-ganesha-lock.service
    systemctl enable nfs-ganesha

    The DBUS Interface

    配置系统 DBUS 服务(编译安装需要手动执行这个过程)

    • 将文件 src/scripts/ganeshactl/org.ganesha.nfsd.conf 复制到该目录 /etc/dbus-1/system.d/ 。需要重新启动 DBus 服务(messagebus)才能加载此文件
    1
    2
    
      cp src/scripts/ganeshactl/org.ganesha.nfsd.conf /etc/dbus-1/system.d/
      systemctl restart messagebus
    • 重启 nfs-ganesha 服务,因为与 DBus 服务器的连接只在服务初始化时执行,所以如果之前忘了复制 org.ganesha.nfsd.conf 文件就需要重启 nfs-ganesha 服务
    1
    
      systemctl restart nfs-ganesha
    • 可查看 nfs-ganesha 日志观察服务是否正常启动运行,通常是/var/log/ganesha/ganesha.log
    1
    
      tail -f /var/log/ganesha/ganesha.log

    编辑配置文件

    其实这一步可以略过的,只是为了后面 Check Export 能检测到一个挂载点而已,如果这一步不配置,manila 也会通过 SSH 连接到主机对每个 share 进行单独的配置文件的添加

    编辑 /etc/ganesha/ganesha.conf 文件,写入以下内容

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    
    EXPORT
    {
            Export_ID=1;
            Path = "/";
            Pseudo = /;
            Access_Type = RW;
            NFS_Protocols = 4;
            Transport_Protocols = TCP;
            FSAL {
                    Name = CEPH;
            }
    }

    启动 nfs-ganesha 服务

    • 编译安装有个坑,就是少了个 nfs-ganesha-ceph 包,导致 manila 传递过来的命令无法正常执行,需要单独使用 yum 命令进行安装(因为我没找到源码地址,也没法自己编译安装了,所以编译安装 nfs-ganesha 还不如直接用添加源的方式进行安装···)
      经测试这步可以省略:
    1
    
      yum install nfs-ganesha-ceph
    • 执行以下命令重新启动 nfs-ganesha
    1
    
      systemctl restart nfs-ganesha
    • 使用以下命令查看 nfs-ganesha 服务是否正常运行
    1
    
      systemctl status nfs-ganesha

    Check Export

    使用以下命令检测挂载点

    1
    2
    3
    4
    
    [root@c1 ~]# showmount -e
    Export list for c1:
    / (everyone)
    [root@c1 ~]# 

    参考链接

  • 相关阅读:
    HTML标签(2)
    HTML简介(1)
    JqueryUI input 自动提示 autocomplete
    Linux基础--单ubuntu 系统 u盘启动 install
    Spark Parquet file split
    HashMap与ConcurrentHashMap
    线程池阻塞队列之ArrayBlockingQueue
    线程池阻塞队列之LinkedBlockingQueue
    线程池的拒绝策略
    关闭线程池shutdown 和 shutdownNow 的区别
  • 原文地址:https://www.cnblogs.com/flytor/p/11430490.html
Copyright © 2011-2022 走看看