访问NFS网络共享文件

时间:2024-03-16 21:04:44

访问NFS网络共享文件

NFS(Network File System),最初是Sun公司所发展的,其最大的功能就是可以通过网络,让不同主机可以共享彼此的文件。在linux主机之间可以使用nfs文件系统进行网络共享,这里需要两台主机模拟说明问题,一台作为服务器,一台作为客户端。

访问NFS网络共享文件

一、服务器共享出一个目录,客户端可以挂载 

服务器:

安装必要软件及打开其服务

[[email protected] ~]# yum install nfs-utils -y

[[email protected] ~]# systemctl start nfs

配置防火墙策略:

(1)查看默认的防火墙策略

[[email protected] ~]# firewall-cmd --list-all

访问NFS网络共享文件

(2)配置相关策略

在防火墙里永久增加nfs服务

[[email protected] ~]# firewall-cmd --permanent --add-service=nfs

在防火墙里永久新增rpc-bind配置端口服务

[[email protected] ~]# firewall-cmd --permanent --add-service=rpc-bind

在防火墙里永久新增挂载服务

[[email protected] ~]# firewall-cmd --permanent --add-service=mountd

重新加载生效

[[email protected] ~]# firewall-cmd --reload

验证策略:

[[email protected] ~]# firewall-cmd --list-all

访问NFS网络共享文件

(3)新建/westos/nfs共享目录

[[email protected] ~]# mkdir /westos/nfs  -p

[[email protected] ~]# vim /etc/exports    ##编辑策略文件

访问NFS网络共享文件

注:/westos/nfs 为共享目录;* 表示所有人都可以;sync表示为实时同步更新到内存与硬盘中。

[[email protected] ~]# exportfs -rv       ## 生效之(加载上面的文件,刷新服务。不可以重启服务)

客户端:

显示120主机的/etc/exports 所共享的目录文件

[[email protected] ~]# showmount -e 172.25.254.120

访问NFS网络共享文件

验证挂载:

[[email protected] ~]# mount 172.25.254.120:/westos/nfs /mnt/

[[email protected] ~]# df              ##查看已经挂载成功

访问NFS网络共享文件

[[email protected] ~]# umount /mnt/  ##卸载之


二、客户端的自动挂载与卸载

接续上文。

[[email protected] ~]# yum install autofs.x86_64 -y

忽略视觉,未打开或关闭该服务下,则/net不显示存在;打开该服务后,可以看到/net目录已经显示出来

访问NFS网络共享文件

为了测试,这里先打开此服务

[[email protected] ~]# systemctl start autofs

进入/net/172.25.254.120,可见:当未进入共享目录时,没有自动挂载;当进入共享目录时,已经自动挂载。

访问NFS网络共享文件

当然,当切出共享目录后,系统会自动卸载,但是需要一段时间。

查看配置文件中的默认卸载时间,可见为300秒

[[email protected] ~]# vim /etc/sysconfig/autofs   ##(7.0版本)

访问NFS网络共享文件

[[email protected] ~]# vim /etc/sysconfig/autofs

 13 TIMEOUT=5

[[email protected] ~]# systemctl restart autofs.service     ##重启服务

效果演示:

访问NFS网络共享文件


三、客户端对共享目录可写以及指定目录自动挂载

默认情况下,客户端对共享文件只读

访问NFS网络共享文件

若要是实现共享目录对客户端可写操作,需要分别对服务器和客户端进行配置。

关于服务器:

[[email protected] ~]# vim /etc/exports  

/westos/nfs   *(sync,rw)               ##加入 rw表示可写

[[email protected] ~]# exportfs -rv     ##生效

exporting *:/westos/nfs

[[email protected] ~]# chmod 777 /westos/nfs/    ##该目录对所有人可写

关于客户端:

一个主配置文件(系统原有),一个子配置文件(自己新建)

[[email protected] ~]# vim /etc/auto.master     ##主配置文件

这里黑色标记的是最终挂载点上层目录,其右为子配置文件(为了规范,命名为auto.nfs)访问NFS网络共享文件

[[email protected] ~]# vim /etc/auto.nfs       ##子配置文件

访问NFS网络共享文件

注:nfs表示:最终挂载点; -rw表示:可写; 黑色标记:挂载设备。

[[email protected] ~]# systemctl restart autofs.service   0     ##重启服务

测试客户端指定目录的自动挂载:(眼见不一定为真

访问NFS网络共享文件

查看挂载:

访问NFS网络共享文件

测试客户端的可读写:

在客户端新建文件:inherit

访问NFS网络共享文件

在服务器查看共享目录:

访问NFS网络共享文件


四、不更新共享文件的更改时间

默认情况下,共享文件的更改时间会随客户端的访问而改变,如下:

访问NFS网络共享文件

当N个客户端频繁访问时,为缓解服务器的压力,可以选择不更新文件更改的时间

[[email protected] ~]# vim /etc/auto.nfs                            ##子配置文件

访问NFS网络共享文件

(noatime:表示不更新文件被更改的时间)

[[email protected] ~]# systemctl restart autofs.service      ##重启服务

效果演示:

访问NFS网络共享文件


五、指定用户id身份对共享目录下文件操作

默认情况下,客户端新建的文件身份默认是nfsnobody

访问NFS网络共享文件

话不多,步骤如下:

[[email protected] ~]# vim /etc/exports         ##指定id身份为1001

访问NFS网络共享文件

[[email protected] ~]# exportfs -rv                ##生效

访问NFS网络共享文件

效果演示:

客户端在共享目录下,新建文件See_ID

访问NFS网络共享文件

服务器在共享目录下,可见身份是ID为1001(服务器没有id为1001的用户时)

访问NFS网络共享文件

服务器在共享目录下,可见身份是ID为1001(服务器存在id为1001的用户时)

访问NFS网络共享文件

同样,在客户端存在id为1001的用户时

访问NFS网络共享文件


六、恢复客户端在共享目录下新建文件的root身份

注:欲做此步,先要恢复实验五之前的状态(实验五已经将所有身份都定义为id=1001)

[[email protected] ~]# vim /etc/exports

访问NFS网络共享文件

[[email protected] ~]# exportfs -rv

默认情况下:服务器的root新建文件的身份就是root,而客户端的root新建文件的身份则是nfsnobody

服务端root在共享目录下新建文件

访问NFS网络共享文件

客户端root在共享目录下新建文件

访问NFS网络共享文件

配置方法:

[[email protected] ~]# vim /etc/exports

访问NFS网络共享文件

[[email protected] ~]# exportfs -rv

效果演示:客户端在共享目录下新建文件

访问NFS网络共享文件


七、其他

只允许主机220对共享目录可读写,并且其root执行root身份

[[email protected] ~]# vim /etc/exports

/westos/nfs   172.25.254.220(sync,rw,no_root_squash)

[[email protected] ~]# exportfs -rv

访问NFS网络共享文件

主机1-10对于共享目录只读,并不可具备写权限,同时只允许主机220对共享目录可读写,并且其root执行root身份

[[email protected] ~]# vim /etc/exports

/westos/nfs   172.25.254.220(sync,rw,no_root_squash) 172.25.254.[1-10](sync,ro)

[[email protected] ~]# exportfs -rv

访问NFS网络共享文件

效果明显,不再赘述,请读者自行尝试。