前言介绍
NFS:Network File System,网络文件系统,通过网络(一般指局域网)让不同主机可以共享文件或目录。NFS是使用C/S架构,由一个或多个客户端和一个服务端组成。服务端向其他计算机提供对文件系统的访问,其过程称为输出。NFS客户端对共享文件系统进行访问时,把它们从NFS服务器中“输送”出来。NFS传输协议用于服务器和客户机之间文件访问和共享的通信,从而使客户机远程地访问保存在服务端存储设备上的数据。相当于Windows的文件共享系统。
服务端部署
软件安装
[root@template ~]# rpm -qa | grep -E "nfs|rpcbind" #<==== 检查发现未安装
[root@template ~]# yum install nfs-utils rpcbind -y #<==== 安装软件
编写配置文件
[root@template ~]# vim /etc/exports
/opt/nfs 192.168.227.4(rw,sync,fsid=0) 192.168.227.5(rw,sync,fsid=0)
配置说明:
这一行分为三个部分:
第一部分:/opt/nfs ,这个是本地要共享出去的目录,注意给权限。
第二部分:192.168.227.0/24 ,允许访问的主机,可以是一个IP:192.168.227.4,也可以是一个IP段:192.168.227.0/24
第三部分:括号中部分。
rw表示可读写,ro只读;
sync :同步模式,内存中数据时时写入磁盘;async :不同步,把内存中数据定期写入磁盘中;
no_root_squash :加上这个选项后,root用户就会对共享的目录拥有至高的权限控制,就像是对本机的目录操作一样。不安全,不建议使用;root_squash:和上面的选项对应,root用户对共享目录的权限不高,只有普通用户的权限,即限制了root;all_squash:不管使用NFS的用户是谁,他的身份都会被限定成为一个指定的普通用户身份;
anonuid/anongid :要和root_squash 以及all_squash一同使用,用于指定使用NFS的用户限定后的uid和gid,前提是本机的/etc/passwd中存在这个uid和gid。
fsid=0表示将/opt/nfs整个目录包装成根目录
这个配置文件也可以这样写:
/opt/test/ 192.168.227.0/24(rw,no_root_squash,no_all_squash,sync,anonuid=501,anongid=501)
启动服务
先为rpcbind和nfs做开机启动:
systemctl enable rpcbind.service
systemctl enable nfs-server.service
然后分别启动rpcbind和nfs服务:
systemctl start rpcbind.service
systemctl start nfs.service
注意要先启动rpc再启动nfs
确认NFS服务器启动成功:
rpcinfo -p
通过查看service列中是否有nfs服务来确认NFS是否启动。
showmount -e 192.168.227.3
查看可挂载目录及可连接的IP
防火墙配置
最简单的还是直接关闭防火墙,不过不推荐
设置端口的话,也不推荐,因为nfs服务对应的端口多,且不配置的话,端口是不固定的
这里推荐根据服务配置
firewall-cmd --zone=public --add-service=nfs --permanent
firewall-cmd --zone=public --add-service=rpc-bind --permanent
firewall-cmd --zone=public --add-service=mountd --permanent
客户端部署
软件安装
yum install -y nfs-utils
systemctl enable rpcbind.service
systemctl start rpcbind.service
客户端不需要启动nfs服务,只需要启动rpcbind服务
检查 NFS 服务器端是否有目录共享
showmount -e 192.168.227.3
挂载
mount -t nfs 192.168.227.3:/opt/nfs/ /opt/nfs/
检查是否成功
df -h
查看挂载情况,挂载完成,可以正常访问本机下的/opt/nfs,并能成功读取写入文件即为成功。
开机挂载
vim /etc/fstab
192.168.227.3:/opt/nfs /opt/nfs nfs nolock 0 0
保存后,重新挂载
mount -a