通过nfs-ganesha代理NFS服务
【摘要】 通过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)