💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
环境: nfsserver: 系统:CentOS Linux release 7.4 (Core) 内核版本:3.10.0-693.11.6.el7.x86_64 IP地址:10.45.10.151 nfsclient: 系统:CentOS Linux release 7.4 (Core) 内核版本:3.10.0-693.11.6.el7.x86_64 IP地址:10.45.29.216 nfs软件: nfs-utils: NFS服务的主程序 rpcbind: RPC服务程序 (服务端和客户端都需要安装) 操作步骤: * 安装部署 一)在nfsserver上操作 1)查看是否安装rpcbind和nft-utils服务 [root@nfsserver ~]# rpm -qa nfs-utils rpcbind 2)如果没有安装,则使用yum来安装 [root@nfsserver ~]# yum -y install rpcbind nfs-utils 在查看一下 [root@nfsserver ~]# rpm -qa nfs-utils rpcbind nfs-utils-1.3.0-0.48.el7_4.2.x86_64 rpcbind-0.2.0-42.el7.x86_64 启动服务 1)启动rpc服务 [root@nfsserver ~]# systemctl enable rpcbind [root@nfsserver ~]# systemctl start rpcbind [root@nfsserver ~]# ps -ef|grep rpc rpc 11200 1 0 10:52 ? 00:00:00 /sbin/rpcbind -w root 11202 3049 0 10:53 pts/0 00:00:00 grep --color=auto rpc [root@nfsserver ~]# rpcinfo -p localhost program vers proto port service 100000 4 tcp 111 portmapper 100000 3 tcp 111 portmapper 100000 2 tcp 111 portmapper 100000 4 udp 111 portmapper 100000 3 udp 111 portmapper 100000 2 udp 111 portmapper (RPC服务对外使用111端口) 2)启动nfs服务 ~~~ [root@nfsserver ~]# systemctl enable nfs Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service. [root@nfsserver ~]# systemctl start nfs [root@nfsserver ~]# rpcinfo -p localhost program vers proto port service 100000 4 tcp 111 portmapper 100000 3 tcp 111 portmapper 100000 2 tcp 111 portmapper 100000 4 udp 111 portmapper 100000 3 udp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 57003 status 100024 1 tcp 49338 status 100005 1 udp 20048 mountd 100005 1 tcp 20048 mountd 100005 2 udp 20048 mountd 100005 2 tcp 20048 mountd 100005 3 udp 20048 mountd 100005 3 tcp 20048 mountd 100003 3 tcp 2049 nfs 100003 4 tcp 2049 nfs 100227 3 tcp 2049 nfs_acl 100003 3 udp 2049 nfs 100003 4 udp 2049 nfs 100227 3 udp 2049 nfs_acl 100021 1 udp 47873 nlockmgr 100021 3 udp 47873 nlockmgr 100021 4 udp 47873 nlockmgr 100021 1 tcp 37146 nlockmgr 100021 3 tcp 37146 nlockmgr 100021 4 tcp 37146 nlockmgr ~~~ 二)在nfsclient上操作 1)安装rpcbind服务 [root@nfsclinet ~]# rpm -qa rpcbind [root@nfsclinet ~]# yum -y install rpcbind showmount 查看一下 [root@nfsclinet ~]# rpm -qa rpcbind rpcbind-0.2.0-42.el7.x86_64 启动服务: [root@nfsclinet ~]# systemctl enable rpcbind [root@nfsclinet ~]# systemctl start rpcbind * 简单测试 1)在nfsserver上配置 假如我需要把如下目录共享给nfsclient [root@nfsserver ~]# ll /data/video/ total 0 编写nfs配置文件 [root@nfsserver ~]# vim /etc/exports #shared /data/video for pet project at 20180412 /data/video 10.45.29.216(rw,sync) ~ 重新载入nfs服务 [root@nfsserver ~]# systemctl reload nfs 在本地检查,看看有没有共享出来 [root@nfsserver ~]# showmount -e localhost Export list for localhost: /data/video 10.45.29.216 2)在客户端检查(nfsclient) [root@nfsclinet ~]# showmount -e 10.45.10.151 clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host) 解答:防火墙没开放 firewall-cmd --add-port=892/udp --permanent firewall-cmd --add-port=892/tcp --permanent firewall-cmd --add-port=111/udp --permanent firewall-cmd --add-port=111/tcp --permanent firewall-cmd --reload 然后在查看一下 [root@nfsclinet ~]# showmount -e 10.45.10.151 Export list for 10.45.10.151: /data/video 10.45.29.216 然后执行挂载命令 [root@nfsclinet ~]# mount -t nfs 10.45.10.151:/data/video /upload/video [root@nfsclinet ~]# cd /upload/video/ 问题2: [root@nfsclinet video]# touch b.txt touch: cannot touch ‘b.txt’: Permission denied 解决办法: [root@nfsserver ~]# useradd -u 2005 -s /sbin/nologin www [root@nfsclinet ~]# useradd -u 2005 -s /sbin/nologin www /data/video 10.45.29.216(rw,sync,anonuid=2005,anongid=2005) (注意:这里的IP可以写多个,如/data/video 10.45.29.216(rw,sync,anonuid=2005,anongid=2005) 192.168.119.50(ro,sync) [root@nfsserver ~]# systemctl reload nfs [root@nfsserver video]# chown -R www.root /data/video/ [root@nfsclinet video]# touch b.txt [root@nfsclinet video]# ll b.txt -rw-r--r-- 1 www www 0 Apr 12 13:50 b.txt (通过以上测试,就发现nfs客户端是以我们配置好的用户,写入文件) 查看nfs服务器端 [root@nfsserver video]# ll total 8 -rw-r--r-- 1 www root 0 Apr 12 13:40 a.txt -rw-r--r-- 1 www www 0 Apr 12 13:50 b.txt 最后:由于重启nfsclient客户端服务器,挂载的会丢失,我们可以通过如下操作 [root@nfsclinet ~]# echo "mount -t nfs 10.45.10.151:/data/video /upload/video" >> /etc/rc.local nfs服务器端参数详解: rw: 读写 ro: 只读 sync:同步(请求或写入数据,数据同步写入到NFSserver) async:异步 all_squash: 不管访问nfs server共享目录的身份是什么,他的权限都被压缩为匿名用户,同时uid和gid都变成nfsnobody,或者是你指定的annouid用户 注意:(确保所有服务器对nfs共享目录具备相同的权限,第一种方式: all_squash 把所有客户端都压缩成匿名用户,这个匿名用户通过anonuid来指定,所有客户端都要有相同的uid和gid的用户) anonuid: 指定匿名用户的uid anongid: 指定匿名用户的gid 查看: [root@nfsserver ~]# cat /var/lib/nfs/etab /data/video 10.45.29.216(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=2005,anongid=2005,sec=sys,secure,root_squash,all_squash) nfs客户端挂载的参数 defaults: 相当于rw,suid,dev,exec,auto,nouser,and async noatime: 不更新文件系统inode的时间戳 auto: 自动挂载 noexec: 不允许执行程序 (即使设置咯,php程序还可以执行的) nosuid: 不允许有suid 查看客户端挂载参数: [root@nfsclinet video]# cat /proc/mounts 10.45.10.151:/data/video /upload/video nfs4 rw,relatime,vers=4.1,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=10.45.29.216,local_lock=none,addr=10.45.10.151 0 0