通过nfs-ganesha代理NFS服务

举报
ground-zero 发表于 2020/08/12 07:23:46 2020/08/12
【摘要】 通过Nfs-ganesha代理NFS服务器

假设局域网A中的机器需要访问局域网B的NFS服务,但是基于网络安全的考虑,局域网A中只有机器A1可以访问局域网B的NFS服务,相信这种场景是比较常见的。最近,笔者就遇到了类似的使用场景,在调查解决方案的时候,搜索引擎多次关联到一个叫nfs-ganasha的开源软件。于是,笔者就根据nfs-ganasha为数不多的文档,结合nfs-ganesha源代码尝试解决我的问题。


nfs-ganesha目前最新的正式release版本为v3.3,经多次验证,是不支持代理NFS v3服务的,所幸,笔者从当前最新更新的代码分支中(next分支),查到了代理V3服务器的逻辑,于是费了好大劲从最新代码中编译二进制文件,经验证,问题得到解决,下面我会简单介绍一下如何配置nfs-ganesha解决我的问题的。


先睹为快

1. 首先准备好配置文件(比如叫做ganesha-v3.conf)

EXPORT
{
        Export_Id = 77;
        # 这个是上面提到的局域网B的NFS服务export的一个目录
        Path = /my_shared_dir;
        Pseudo = /tmp_proxy;
        Access_Type = RW;
        Squash = no_root_squash;
        # Exporting FSAL
        FSAL {
                Name = PROXY_V3;
                # 这个是上面提到的局域网B的NFS服务IP地址
                Srv_Addr = 100.0.0.1;
        }
}
NFS_CORE_PARAM {
        ## Allow NFSv3 to mount paths with the Pseudo path, the same as NFSv4,
        ## instead of using the physical paths.
        mount_path_pseudo = true;
}

2. 然后启动ganesha服务

注意:ganesha-v3.conf的内容如步骤1所示

rpcbind
rpc.statd -L
rpc.idmapd
/usr/bin/ganesha.nfsd -F -L /dev/stdout -f /usr/bin/ganesha.nfsd -F -L /dev/stdout -f ganesha-v3.conf

3.尝试挂载

注意:如果在不同于步骤2的机器上挂载,127.0.0.1设为步骤2机器的公网IP

mkdir lhg
mount -t nfs 127.0.0.1:/tmp_proxy lhg

代码编译ganesha

wget https://github.com/nfs-ganesha/nfs-ganesha/archive/next.zip && unzip next.zip
cd next/next
cmake -DCMAKE_BUILD_TYPE=Release -Wno-dev -DPROXY_HANDLE_MAPPING=ON -DUSE_9P=OFF -DUSE_FSAL_CEPH=OFF -DUSE_FSAL_GLUSTER=OFF -DUSE_FSAL_LUSTRE=OFF -DUSE_FSAL_LIZARDFS=OFF -DUSE_FSAL_XFS=ON -DUSE_FSAL_RGW=OFF -DRADOS_URLS=OFF -DUSE_RADOS_RECOV=OFF -D_MSPAC_SUPPORT=OFF -DUSE_GSS=ON -DUSE_FSAL_LUSTRE=OFF -DALLOCATOR=libc ../src/ \
make
make install

总结

Nfs-ganesha是运行在用户空间的NFS(支持v3,4.0,4.1,4.1 pNFS和4.2)文件服务,旨在解决linux内核FUSE(Filesystem in Userspace)不支持通过NFS协议向外export FUSE的痛点,目前可支持通过NFS export多种文件系统,包括ceph,Cluster,GPFS等(更多信息请参阅链接)。

Nfs-ganesha适用于较多的使用场景,希望本文能够帮助到大家。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。