NFS工作原理
NFS是Network File System的缩写,即网络文件系统。客户端通过挂载的方式将NFS服务器端共享的数据目录挂载到本地目录下。
1、由程序在NFS客户端发起存取文件的请求,客户端本地的RPC(rpcbind)服务会通过网络向NFS服务端的RPC的111端口发出文件存取功能的请求。 2、NFS服务端的RPC找到对应已注册的NFS端口,通知客户端RPC服务。 3、客户端获取正确的端口,并与NFS daemon联机存取数据。 4、存取数据成功后,返回前端访问程序,完成一次存取操作。 所以无论客户端,服务端,需要使用NFS,必须安装RPC服务。 NFS的RPC服务,在Centos5下名为portmap,Centos6/7下名称为rpcbind。
部署环境
Server端:192.168.21.35 Client端 :192.168.21.230 Server端软件:nfs-utils、rpcbind Client端软件 :安装NFS文件系统模块
部署操作
服务端操作
1、关闭selinux
sh-4.2# sed -i 's/enforcing/disabled/' /etc/selinux/config sh-4.2# reboot
2、卸载防火墙
sh-4.2# rpm -qa | grep "firewall" | xargs rpm -e --nodeps sh-4.2# rpm -qa | grep "iptables" | xargs rpm -e --nodeps
3、配置本地源
sh-4.2# cat GuGe.repo [GuGe] name=GuGe baseurl=file:///mnt gpgcheck=0 enable=1
4、安装部署NFS
sh-4.2# yum install nfs-utils rpcbind sh-4.2# systemctl restart rpcbind.service # 启动rpcbind sh-4.2# systemctl status rpcbind.service sh-4.2# systemctl enable rpcbind sh-4.2# ss -anpt | grep "111" LISTEN 0 128 *:111 *:* users:(("rpcbind",pid=18264,fd=4),("systemd",pid=1,fd=39)) LISTEN 0 128 :::111 :::* users:(("rpcbind",pid=18264,fd=6),("systemd",pid=1,fd=41)) sh-4.2# rpcinfo -p localhost # 向rpc注册nfs信息 sh-4.2# systemctl start nfs.service # 启动nfs服务 sh-4.2# rpcinfo -p localhost # 查看启动nfs服务之后的rpc状态
5、进程详解
sh-4.2# ps -ef|egrep "rpc|nfs" rpc 18264 1 0 22:46 ? 00:00:00 /sbin/rpcbind -w rpcuser 18319 1 0 22:51 ? 00:00:00 /usr/sbin/rpc.statd root 18320 2 0 22:51 ? 00:00:00 [rpciod] root 18332 1 0 22:51 ? 00:00:00 /usr/sbin/rpc.idmapd root 18366 1 0 22:51 ? 00:00:00 /usr/sbin/rpc.mountd root 18371 2 0 22:51 ? 00:00:00 [nfsd4_callbacks] root 18377 2 0 22:51 ? 00:00:00 [nfsd] root 18378 2 0 22:51 ? 00:00:00 [nfsd] root 18379 2 0 22:51 ? 00:00:00 [nfsd] root 18380 2 0 22:51 ? 00:00:00 [nfsd] root 18381 2 0 22:51 ? 00:00:00 [nfsd] root 18382 2 0 22:51 ? 00:00:00 [nfsd] root 18383 2 0 22:51 ? 00:00:00 [nfsd] root 18384 2 0 22:51 ? 00:00:00 [nfsd] root 18402 18050 0 22:52 pts/0 00:00:00 grep -E rpc|nfs nfsd(rpc.nfsd)主进程,主要是管理客户端能否登入服务端,登入者ID判别。 mountd(rpc.mountd)管理NFS文件系统,登入者的权限管理 rpc.lockd(非必要)用来锁定文件,用于客户端同时写入 rpc.statd(非必要)检查文件一致性 rpc.idmapd 名字映射后台进程
6、配置共享目录
sh-4.2# vi /etc/exports # NFS服务端配置 /test 192.168.21.0/24(rw,sync) sh-4.2# exportfs -rv # 重新加载nfs配置 exporting 192.168.21.0/24:/test sh-4.2# showmount -e localhost # 查看nfs服务器挂载情况 Export list for localhost: /test 192.168.21.0/24 sh-4.2# chown -R nfsnobody.nfsnobody /test/ # 设置目录权限 exports文件配置格式: FS共享的目录 NFS客户端地址1(参数1,参数2,...) 客户端地址2(参数1,参数2,...) NFS客户端地址: 指定IP: 192.168.0.1 指定子网所有主机: 192.168.0.0/24 指定域名的主机: test.com 指定域名所有主机: *.test.com 所有主机: * 参数: ro:目录只读 rw:目录读写 sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性 async:将数据先保存在内存缓冲区中,必要时才写入磁盘 all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody) no_all_squash:与all_squash取反(默认设置) root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置) no_root_squash:与rootsquash取反 anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx) anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户
客户端操作
sh-4.2# yum -y install nfs-* sh-4.2# mount -t nfs 192.168.21.35:/test /test # 这里已经关闭了防火墙及selinux
sh-4.2# vi /etc/fstab
192.168.21.35:/test /test nfs defaults 0 0
windows也可以挂在NFS文件
参考地址:https://www.cnblogs.com/jkko123/p/6361476.html?utm_source=itdadao&utm_medium=referral