我是
靠谱客的博主
顺心寒风,最近开发中收集的这篇文章主要介绍
源码编译安装 ganesha源码编译安装 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 ../ |
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
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
这两个文件就是配置将RGW
和CephFS
配置为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 |
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 ~]# |
参考链接
- https://segmentfault.com/a/1190000012348558
- https://github.com/nfs-ganesha/nfs-ganesha/wiki/Dbusinterface
- https://docs.openstack.org/manila/queens/contributor/ganesha.html
发表评论 取消回复