在一般NFS文件系统的使用过程中,如果客户端要使用服务端所提供的文件系统,可以在/etc/rc.d/rc.local中设置开机时自动挂载(/etc/rc.d/rc.local文件中写入的命令,在每次启动系统用户登录之前都会执行一次);也可以在登录系统后手动利用mount来挂载。
由于网络的问题,NFS服务器与客户端的连接不会一直存在,当我们挂载了NFS服务器之后,任何一方脱机都可能造成另外一方等待超时。为了解决这样的问题,就出现了下面的想法:
1、当客户端在有使用NFS文件系统的需求时才让系统自动挂载。
2、当NFS文件系统使用完毕后,让NFS自动卸载。
于是就产生了autofs这个服务。
autofs这个服务是在客户端上面,它会持续的检测某个指定的目录,并预先设置当使用到该目录的某个子目录时,将会取得来自服务器端的NFS文件系统资源,并进行自动挂载的操作。
NFS服务端(172.24.8.128):
关闭防火墙和selinux
[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 test > /data/file
[root@localhost ~]# systemctl status rpcbind
[root@localhost ~]# systemctl restart rpcbind
[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/ 这个目录名即本地端子目录
172.24.8.128:/data on /nfs/guazai type nfs4 (rw,relatime,vers=4.0,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=172.24.8.129,local_lock=none,addr=172.24.8.128)