Linux搭建NFS
- 相关概念
NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络资源共享。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
NFS体系至少有两个主要部分:一台NFS服务器和若干台客户机
- 实现过程
(1)NFS RPC的主要功能是记录每个NFS功能所对应的端口号,并将信息传递给请求数据的NFS客户端,从而实现数据的传输。
(2)NFS服务启动时会随机取用数个端口,并主动向RPC服务注册取用的相关端口信息,RPC服务就知道每个端口对应的NFS功能了,然后RPC会用固定的端口来监听NFS客户端的请求,将正确的NFS端口传给NFS的客户端
服务启动顺序:RPC — >NFS
- 相关参数设置
ro: read only,客户端对共享资源仅仅有读权限
rw: read write,客户端对共享资源有读、写权限
no_root_squash: 信任客户端,根据用户UID进行判断,如果登入到NFS主机的用户是root,那么此用户就拥有对共享资源的最高权限。此参数非常不安全,建议不使用
all_squash:不管登录NFS主机的用户是什么用户,都会将共享出来的UID GID映射为匿名用户。
root_squas: 系统预设值,当登入NFS主机的root时,那么这个使用者的权限将被缩成为匿名使用者,也就是说它的UID与GID都会变成nobody身份,
只有可读权限,系统以此为默认预设值,显然为了安全考虑
no_all_squash:系统预设值,保留共享文件的UID和GID的默认权限。也就是说客户端的UID GID和服务端共享文件UID和GID相同时,才对共享
文件有读写权限。
sync: 资料同步写入磁盘中,默认选择
async: 资料会先暂时存放在内存中,不会直接卸任磁盘
- 服务安装配置,Linux — Linux
- [ ] Sever端配置
- [确保以下RPM包已经安装 ]
rpcbind: rpm -qa |grep rpcbind
nfs : rpm -qa |grep nfs-utils
yum -y install rpcbind
yum -y install nfs-utils
- [ 配置Server端配置文件] /etc/exports
配置顺序为:[ 共享资源路径 ] [ 主机地址 ] [ 选项 ],其中选项参考上文“相关参数释义”
vim /etc/exports
/backup *(sync,rw,all_squash)
usage: exportfs [-adfhioruvs] [host:/path]
[root@wogg-yuanduan /]# exportfs -rv
exporting *:/backup
-r:重新mount /etc/exports中分享出来的目录
-v:在export的过程中,将详细的信息输出到屏幕上
- [ 启动相关服务] nfs和rpc、nfslock服务
systemctl start nfs
[root@wogg-yuanduan /]# ps -ef |grep nfs
root 7712 2 0 23:25 ? 00:00:00 [nfsd4_callbacks]
root 7718 2 0 23:25 ? 00:00:00 [nfsd]
root 7719 2 0 23:25 ? 00:00:00 [nfsd]
root 7720 2 0 23:25 ? 00:00:00 [nfsd]
root 7721 2 0 23:25 ? 00:00:00 [nfsd]
root 7722 2 0 23:25 ? 00:00:00 [nfsd]
root 7723 2 0 23:25 ? 00:00:00 [nfsd]
root 7724 2 0 23:25 ? 00:00:00 [nfsd]
root 7725 2 0 23:25 ? 00:00:00 [nfsd]
systemctl start rpcbind
[root@wogg-yuanduan /]# ps -ef |grep rpc
root 589 2 0 18:21 ? 00:00:00 [rpciod]
root 7703 1 0 23:25 ? 00:00:00 /usr/sbin/rpc.idmapd
rpcuser 7704 1 0 23:25 ? 00:00:00 /usr/sbin/rpc.statd --no-notify
rpc 7706 1 0 23:25 ? 00:00:00 /sbin/rpcbind -w
root 7707 1 0 23:25 ? 00:00:00 /usr/sbin/rpc.mountd
root 7744 6721 0 23:26 pts/2 00:00:00 grep --color=auto rpc
systemctl start nfslock
- [关闭相关的防火墙]
iptables -F
vim /etc/selinux/config
setenforce 0
systemctl stop firewalld
systemctl disable firewalld
- [ ] Client端配置
- [ 确保以下RPM包已安装]
rpcbind: rpm -qa |grep rpcbind
nfs : rpm -qa |grep nfs-utils
- [查看服务器对外提供共享NFS的目录]
[root@wogg-mubiaoduan ~]# showmount -e 192.168.79.128
Export list for 192.168.79.128:
/backup *
- [挂在NFS共享文件系统 ]
mount -t nfs 192.168.79.128:/backup/ /backup/