访问NFS网络共享文件
NFS(Network File System),最初是Sun公司所发展的,其最大的功能就是可以通过网络,让不同主机可以共享彼此的文件。在linux主机之间可以使用nfs文件系统进行网络共享,这里需要两台主机模拟说明问题,一台作为服务器,一台作为客户端。
一、服务器共享出一个目录,客户端可以挂载
服务器:
安装必要软件及打开其服务
[[email protected] ~]# yum install nfs-utils -y
[[email protected] ~]# systemctl start nfs
配置防火墙策略:
(1)查看默认的防火墙策略
[[email protected] ~]# firewall-cmd --list-all
(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
(3)新建/westos/nfs共享目录
[[email protected] ~]# mkdir /westos/nfs -p
[[email protected] ~]# vim /etc/exports ##编辑策略文件
注:/westos/nfs 为共享目录;* 表示所有人都可以;sync表示为实时同步更新到内存与硬盘中。
[[email protected] ~]# exportfs -rv ## 生效之(加载上面的文件,刷新服务。不可以重启服务)
客户端:
显示120主机的/etc/exports 所共享的目录文件
[[email protected] ~]# showmount -e 172.25.254.120
验证挂载:
[[email protected] ~]# mount 172.25.254.120:/westos/nfs /mnt/
[[email protected] ~]# df ##查看已经挂载成功
[[email protected] ~]# umount /mnt/ ##卸载之
二、客户端的自动挂载与卸载
接续上文。
[[email protected] ~]# yum install autofs.x86_64 -y
忽略视觉,未打开或关闭该服务下,则/net不显示存在;打开该服务后,可以看到/net目录已经显示出来
为了测试,这里先打开此服务
[[email protected] ~]# systemctl start autofs
进入/net/172.25.254.120,可见:当未进入共享目录时,没有自动挂载;当进入共享目录时,已经自动挂载。
当然,当切出共享目录后,系统会自动卸载,但是需要一段时间。
查看配置文件中的默认卸载时间,可见为300秒
[[email protected] ~]# vim /etc/sysconfig/autofs ##(7.0版本)
[[email protected] ~]# vim /etc/sysconfig/autofs
13 TIMEOUT=5
[[email protected] ~]# systemctl restart autofs.service ##重启服务
效果演示:
三、客户端对共享目录可写以及指定目录自动挂载
默认情况下,客户端对共享文件只读
若要是实现共享目录对客户端可写操作,需要分别对服务器和客户端进行配置。
关于服务器:
[[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)
[[email protected] ~]# vim /etc/auto.nfs ##子配置文件
注:nfs表示:最终挂载点; -rw表示:可写; 黑色标记:挂载设备。
[[email protected] ~]# systemctl restart autofs.service 0 ##重启服务
测试客户端指定目录的自动挂载:(眼见不一定为真)
查看挂载:
测试客户端的可读写:
在客户端新建文件:inherit
在服务器查看共享目录:
四、不更新共享文件的更改时间
默认情况下,共享文件的更改时间会随客户端的访问而改变,如下:
当N个客户端频繁访问时,为缓解服务器的压力,可以选择不更新文件更改的时间
[[email protected] ~]# vim /etc/auto.nfs ##子配置文件
(noatime:表示不更新文件被更改的时间)
[[email protected] ~]# systemctl restart autofs.service ##重启服务
效果演示:
五、指定用户id身份对共享目录下文件操作
默认情况下,客户端新建的文件身份默认是nfsnobody
话不多,步骤如下:
[[email protected] ~]# vim /etc/exports ##指定id身份为1001
[[email protected] ~]# exportfs -rv ##生效
效果演示:
客户端在共享目录下,新建文件See_ID
服务器在共享目录下,可见身份是ID为1001(服务器没有id为1001的用户时)
服务器在共享目录下,可见身份是ID为1001(服务器存在id为1001的用户时)
同样,在客户端存在id为1001的用户时
六、恢复客户端在共享目录下新建文件的root身份
注:欲做此步,先要恢复实验五之前的状态(实验五已经将所有身份都定义为id=1001)
[[email protected] ~]# vim /etc/exports
[[email protected] ~]# exportfs -rv
默认情况下:服务器的root新建文件的身份就是root,而客户端的root新建文件的身份则是nfsnobody
服务端root在共享目录下新建文件
客户端root在共享目录下新建文件
配置方法:
[[email protected] ~]# vim /etc/exports
[[email protected] ~]# exportfs -rv
效果演示:客户端在共享目录下新建文件
七、其他
只允许主机220对共享目录可读写,并且其root执行root身份
[[email protected] ~]# vim /etc/exports
/westos/nfs 172.25.254.220(sync,rw,no_root_squash)
[[email protected] ~]# exportfs -rv
主机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
效果明显,不再赘述,请读者自行尝试。