在一般NFS文件系统的使用过程中,如果客户端要使用服务端所提供的文件系统,可以在/etc/rc.d/rc.local中设置开机时自动挂载(/etc/rc.d/rc.local文件中写入的命令,在每次启动系统用户登录之前都会执行一次);也可以在登录系统后手动利用mount来挂载。
由于网络的问题,NFS服务器与客户端的连接不会一直存在,当我们挂载了NFS服务器之后,任何一方脱机都可能造成另外一方等待超时。为了解决这样的问题,就出现了下面的想法:
1、当客户端在有使用NFS文件系统的需求时才让系统自动挂载。
2、当NFS文件系统使用完毕后,让NFS自动卸载。
于是就产生了autofs这个服务。
autofs这个服务是在客户端的上面,它会持续的检测某个指定的目录,并预先设置当使用到该目录的某个子目录时,将会取得来自服务器端的NFS文件系统资源,并进行自动挂载的操作。
NFS服务端(192.168.9.131):
关闭防火墙和selinux:
[root@localhost data]# systemctl stop firewalld
[root@localhost data]# setenforce 0
这里是搭建一个NFS服务器:
[root@localhost ~]# yum install rpcbind
[root@localhost ~]# yum install nfs-utils
[root@localhost ~]# vim /etc/exports
/data *(ro)
[root@localhost ~]# mkdir /data
[root@localhost data]# echo this is ceshi > /data/ceshi
[root@localhost ~]# systemctl restart rpcbind //重启NFS服务
NFS[root@localhost ~]# systemctl restart nfs
客户端:
[root@client ~]# yum install autofs -y //装包
1、在主配置文件里面指定被检测的特定目录为/nfs(该目录不需要事先存在,因为autofs会主动建立该目录),对应的数据文件是/etc/auto.nfs(该文件名可自定义)
[root@localhost ~]# vim /etc/auto.master
/nfs /etc/auto.nfs
2、建立数据对应文件内(/etc/auto.nfs)的挂载信息与服务器对应的资源,该文件是自己创建的。该文件的格式如下:
本地端子目录 | [-挂载参数] | 服务器所提供的目录 |
本地端子目录表示你要将服务器所提供的目录挂载在客户端的/nfs的目录名
挂载参数可不写
参数 | 参数功能 | 默认参数 |
fg bg | 当执行挂载时,该挂载行为会在前台(fg)还是后台(bg)执行,若在前台执行,则mount会持续尝试挂载,直到成功或time out为止;若为后台执行,则mount会在后台持续多次进行mount,而不会影响到前台的程序运行。 | fg |
soft hard | hard表示当两者之间的任何一台主机脱机,则RPC会持续地呼叫,直到对方恢复连接为止。如果是soft的话,那RPC会在time out后重复呼叫,而非持续呼叫 | hard |
intr | 当使用上面提到的hard方式挂载时,若加上intr这个参数,则当RPC持续呼叫时,该次的呼叫是可以被中断的 | 无 |
rsize wsize | 读出(rsize)与写入(wsize)的区块大小。这个设置值可以影响客户端与服务器端传输数据的缓冲记忆容量 | rsize=1024(bytes) wsize=1024(bytes) |
[root@localhost ~]# vim /etc/auto.nfs
guazai 172.24.8.128:/data
[root@localhost ~]# systemctl restart autofs
[root@localhost ~]# mount | grep /nfs
/etc/auto.nfs on /nfs type autofs (rw,relatime,fd=12,pgrp=4598,timeout=300,minproto=5,maxproto=5,indirect)
3、触发自动挂载
[root@localhost ~]# cd /nfs/guazai/ //这个目录名即本地端子目录 ,不需要创建当访问它时会执行自动挂载操作
注:实验没有设置防火墙和selinux,如果实验不成功,务必检查关闭防火墙和selinux,还有重启服务。