什么是NFS服务器
NFS(Network File System)即网络文件系统,它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。Sun公司开发,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
简单的说:NFS是Linux之间的一种文件共享系统(Linux与Windows之间的共享使用Samba是专业的),NFS配置完成之后,客户端访问这个共享就像访问本地文件一样!(NFS通过软件也可以实现与Windows之间的共享)
NFS是通过rpcbind(remote procedure call protocol)实现远程文件存储,共享的是文件系统。NFS一般用来存储共享视频,图片等静态数据。
NFS挂载原理
NFS服务器的挂载结构图:
如上图示:当我们在NFS服务器设置好一个共享目录/home/public后,其他的有权访问NFS服务器的NFS客户端就可以将这个目录挂载到自己文件系统的某个挂载点,这个挂载点可以自己定义,如上图客户端A与客户端B挂载的目录就不相同。并且挂载好后我们在本地能够看到服务端/home/public的所有数据。如果服务器端配置的客户端只读,那么客户端就只能够只读。如果配置读写,客户端就能够进行读写。挂载后,NFS客户端查看磁盘信息命令:#df –h。
既然NFS是通过网络来进行服务器端和客户端之间的数据传输,那么两者之间要传输数据就要有想对应的网络端口,NFS服务器到底使用哪个端口来进行数据传输呢?基本上NFS这个服务器的端口开在2049,但由于文件系统非常复杂。因此NFS还有其他的程序去启动额外的端口,这些额外的用来传输数据的端口是随机选择的,是小于1024的端口;既然是随机的那么客户端又是如何知道NFS服务器端到底使用的是哪个端口呢?这时就需要通过远程过程调用(Remote Procedure Call,RPC)协议来实现了!
NFS工作原理
原理之前需要了解的:
RPC(Remote Procedure Call,远程程序调用)请求远程计算机给予服务。客户机通过网络传送RPC到远程计算机,请求服务。
Portmap,端口映射是一个服务器,将RPC程序号转换为DARPA的协议端口号。在使用RPC调用时它必须运行。 portmap进程的主要功能是把RPC程序号转化为Internet的端口号。
客户端想NFS服务器提交RPC请求,明确访问NFS服务,并告知具体的读写操作,RPC寻找portmap,并根据客户端请求,返回相应结果。客户端获取NFS服务器的端口,直接与NFS进行相关读写操作!
客户端以什么身份来访问?
客户端访问服务端默认是使用nfsnobody这个用户来进行访问的。uid和gid为65534。服务器默认共享时,也是加上了all_squash这个参数。并制定anonuid为65534(也就是nfsnobayd用户)。当然如果系统中nfsnobody是其他的uid,那么就有可能造成访问权限出现问题。所以最好我们可以通过一设置一个用户来访问,统一UID、GID。
挂载情况怎样呢?
有两个重要的文件,能够解决这个疑问。/var/lib/nfs/etab、/var/lib/nfs/rmtab这两个文件就能够查看服务器上共享了什么目录,到底有多少客户端挂载了共享,能查看到客户端挂载的具体信息。
1、etab这个文件能看到服务器上共享了哪些目录,执行哪些人可以使用,并且设定的参数为何。
2、rmtab这个文件就是能够查看到共享目录被挂载的情况。
NFS常用路径 | 说明 |
/etc/exports | NFS服务的主配置文件。 |
/usr/sbin/exports | NFS的管理命令,可以加载NFS配置生效等 |
/usr/sbin/showmount | 用来客户端查看NFS配置及挂在结果命令 |
/var/lib/nfs/etab | NFS配置文件的完整参数设定文件 |
/proc/mounts | 客户端挂在参数 |
/vae/lib/nfs/rmtab | 客户端访问服务器exports的信息列表 |
实现NFS有几个关键组件:
NFS quotas: 用于实现磁盘配额的高级功能,当客户端挂载NFS后可以限制使用磁盘空间大小;
NFS mountd: NFS借助于RPC,仅支持基于IP的认证,因为这是一种远程过程的调用,而不是请求/响应服务,没有认证能力。那么如何实现认证呢?是通过辅助进程mountd来实现的,mountd负责发放令牌!多个mountd进程可以监听在不同的端口号上,前提这些端口号都事先在RPC统一调度管理器rpcbind中注册过,从而实现多个用户并发访问;
1.客户端想要挂载NFS时,去问Server端的rpcbind;
2.rpcbind查询自己的注册表,选择一个已经注册的mountd进程和端口号;
3.mountd完成对客户端的身份认证,发放令牌给客户端;
4.客户端接着访问nfsd TCP/UDP 2049进行挂载后的正常操作
所以,mountd进进程其实是辅助进程,是为了增强nfsd完成用户身份认证的能力的!
NFS idmapd: 用户挂载了远端的NFS,那么创建的文件的属主属组是谁呢?如果客户端A用用户名test创建了文件,而NFS Server上又没有test用户,那该咋办?
idmapd很好地解决了这个问题,是客户端和服务器端账号映射关系的解决工具。
Rpc.nfsd,rpc.mountd,portmap
个性的工作原理:
1,客户机:RPC,请问nfsd的端口号是多少呀?
2.服务器:是2049。
3.客户机:那我测试一下2049通不通。
4. 服务器:收到了,是通的。
5.客户机:RPC,请问mountd的端口号是多少呀?
6. 服务器:是1234。
7.客户机:那我测试一下1234通不通。
8. 服务器:收到了,是通的。
9. 客户机:我要挂载 /paddy_fs_01。
10.服务器:(根据该共享的配置,这台客户机有挂载权限,所以)你的请求被批准了。
11.客户机:我测试一下挂上了没有。
12.服务器:挂上了啦。
13.客户机:我想看看这个文件系统的属性。
14.服务器:给,就这些。
15.客户端:挂载
16.客户端:挂载结束,读abc.txt开始:
17. 客户机:我要访问 /paddy_fs_01。
18. 服务器:来吧,(根据你的UID)你有读,查询,更改,扩展和删除的权利。
19. 客户机:我想看看有哪些子目录。
20. 服务器:看,就这些。
21. 客户机:我想看看abc.txt的属性。、
22. 服务器:File Mode等属性都在这了。
23. 客户机:我还想再看看。
24. 服务器:再给你一次好了。
25. 客户机:我想访问abc.txt。
26. 服务器:你有权限的,访问吧。
27. 客户机:我要读abc.txt,从0开始读16384字节。
28. 服务器:给。
29. 客户机:我要读abc.txt,从16384开始读32768字节。
(被过滤掉的包,服务器传输32768字节给客户机。)
30. 客户机:我要读abc.txt,从49152开始读32606字节。
(被过滤掉的包,服务器传输32606字节给客户机。)
RPC与NFS如何通讯
因为NFS支持的功能相当多,而不同的功能都会使用不同的程序来启动,每启动一个功能就会启用一些端口来传输数据,因此NFS的功能对应的端口并不固定,客户端要知道NFS服务器端的相关端口才能建立连接进行数据传输,而RPC就是用来统一管理NFS端口的服务,并且统一对外的端口是111,RPC会记录NFS端口的信息,如此我们就能够通过RPC实现服务端和客户端沟通端口信息。PRC最主要的功能就是指定每个NFS功能所对应的port number,并且通知客户端,记客户端可以连接到正常端口上去。
那么RPC又是如何知道每个NFS功能的端口呢?
首先当NFS启动后,就会随机的使用一些端口,然后NFS就会向RPC去注册这些端口,RPC就会记录下这些端口,并且RPC会开启111端口,等待客户端RPC的请求,如果客户端有请求,那么服务器端的RPC就会将之前记录的NFS端口信息告知客户端。如此客户端就会获取NFS服务器端的端口信息,就会以实际端口进行数据的传输了。
提示:在启动NFS SERVER之前,首先要启动RPC服务(即portmap服务,下同)否则NFS SERVER就无法向RPC服务区注册,另外,如果RPC服务重新启动,原来已经注册好的NFS端口数据就会全部丢失。因此此时RPC服务管理的NFS程序也要重新启动以重新向RPC注册。特别注意:一般修改NFS配置文档后,是不需要重启NFS的,直接在命令执行/etc/init.d/nfs reload或exportfs –rv即可使修改的/etc/exports生效。
NFS客户端和NFS服务端通讯过程
1)首先服务器端启动RPC服务,并开启111端口
2)启动NFS服务,并向RPC注册端口信息
3)客户端启动RPC(portmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口
4)服务端的RPC(portmap)服务反馈NFS端口信息给客户端。
5)客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。
使用NFS的好处
1. 节省本地存储空间,将常用的数据存放在一台NFS服务器上且可以通过网络访问,那么本地终端将可以减少自身存储空间的使用。
2. 用户不需要在网络中的每个机器上都建有Home目录,Home目录可以放在NFS服务器上且可以在网络上被访问使用,而却通过Autofs可以实现目录漫游!(NIS,LDAP)
3. 一些存储设备如软驱、CDROM和Zip(一种高储存密度的磁盘驱动器与磁盘)等都可以在网络上被别的机器使用。这可以减少整个网络上可移动介质设备的数量。
4:强有力的权限控制
NFS应用环境
1. 多个机器共享一台CDROM或者其他设备。这对于在多台机器中安装软件来说更加便宜跟方便。
2. 在大型网络中,配置一台中心 NFS 服务器用来放置所有用户的home目录可能会带来便利。这些目录能被输出到网络以便用户不管在哪台工作站上登录,总能得到相同的home目录。家目录漫游
3. 不同客户端可在NFS上观看影视文件,节省本地空间。
4. 在客户端完成的工作数据,可以备份保存到NFS服务器上用户自己的路径下。
5. NFS是运行在应用层的协议。随着NFS多年的发展和改进,NFS既可以用于局域网也可以用于广域网,且与操作系统和硬件无关,可以在不同的计算机或系统上运行。
6. 控制统一存储,比如集群,这样当我们的访问集群提供的服务,我们拿到的数据怎么都是一致的!
常见的版本
NFSV2,NFSV3,NFSV4(RHEL6默认版本)
NFS工作模式和端口
软件包:nfs-utils(包括服务器和客户端相关工具,CentOS8 最小化安装时默认没有安装)
相关软件包:rpcbind(必须),tcp_wrappers
Kernel支持:nfs.ko
端口:2049(nfsd), 其它端口由portmap(111)分配
说明:CentOS 6 开始portmap进程由rpcbind代替
NFS服务主要进程:
rpc.nfsd 最主要的NFS进程,管理客户端是否可登录;这个daemon主要的功能就是管理客户端是否能够使用服务器文件系统挂载信息,其中还包含判断这个登录用户的ID。
rpc.mountd 挂载和卸载NFS文件系统,包括权限管理;当client端顺利通过rpc.nfsd登入主机后,在它可以使用NFS服务器提供规定文件之前,还会经过文件使用权限的认证程序。它会去读取NFS的配置 文件/etc/exports来对比客户端的权限,当通过这一关之后,client端也就取得使用NFS文件的权限。
rpc.lockd 非必要,管理文件锁,避免同时写出错; 这个daemon用于管理文件的锁定方面,当多个客户端同时尝试写入某个文件时就可以对该文件造成一些问题。rpc.lockd则可以用来克服这此问题。但rpc.lockd必须要同时在客户端和服务器端都开 启才行。
rpc.statd 非必要,检查文件一致性,可修复文件;这个daemon可以用来检查文件的一致性,若发生因为客户端同时使用同一个文件造成文件损坏时,rpc.statd可以用来检测并尝试恢复该文件
[root@Kylinos63 ~]# rpm -ivh /media/Packages/nfs-utils-1.2.3-39.el6.x86_64.rpm //服务端软件包
[root@Kylinos63 ~]# rpm -ivh /media/Packages/nfs-utils-lib-1.1.5-6.el6.x86_64.rpm //安装会依赖
默认标准环境已经安装了NFS软件,没安装yum安装最方便(yum install -y nfs-utils)
[root@Kylinos63 ~]# systemctl enable nfs
[root@Kylinos63 ~]# systemctl start nfs
Starting NFS services: [ OK ] #NFS服务
Starting NFS quotas: [ OK ] #NFS配额
Starting NFS mountd: [ OK ] #NFS挂载
Starting NFS daemon: [ OK ] #守护进程
Starting RPC idmapd: [ OK ] #RPC
[root@Kylinos63 ~]# netstat -antup | grep 2049 //查看启动与否(TCP,UDP都监控)
tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN -
tcp 0 0 :::2049 :::* LISTEN -
udp 0 0 0.0.0.0:2049 0.0.0.0:* -
udp 0 0 :::2049
nfs配置文件
/etc/exports //默认配置文件位置(man exports查看帮助)
客户端查看NFS
[root@Kylinos64 ~]# showmount -e 192.168.1.63 //显示1.63的NFS共享
配置NFS共享实例1
配置一个简单的NFS共享,所有人可以读写
nfs配置文件修改
[root@Kylinos63 ~]# mkdir /nfs1
[root@Kylinos63 ~]# chown nobody:nobody -R /nfs1
[root@Kylinos63 ~]# vim /etc/exports
/nfs1 *(rw) #共享目录为/media, *表示所有,权限rw
[root@Kylinos63 ~]# systemctl restart nfs
[root@Kylinos64 ~]# mkdir nfs1
[root@Kylinos64 ~]# mount -t nfs 192.168.1.63:/nfs1 /nfs1
[root@Kylinos64 ~]# cd /nfs1/ && touch a.txt //创建测试文件
touch: cannot touch `a.txt': Permission denied #权限不够
对于客户端来说,客户端会默认将用户映射为系统用户nobody,nobody也是系统用户,可以更改目录所有者解决权限问题,实验效果我们先不改,直接用777权限做实验
[root@Kylinos63 ~]# cat /etc/passwd | grep nfs
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
[root@Kylinos63 ~]# ll -d /nfs1/ //Server查看权限
drwxr-xr-x 2 root root 4096 Oct 9 10:36 /nfs1/
[root@Kylinos63 ~]# chmod 777 /nfs1/ //Server添加权限
[root@Kylinos64 nfs1]# touch a.txt //客户端再次测试
[root@Kylinos64 nfs1]# ll /nfs //客户端查看创建文件
-rw-r--r-- 1 nobody nobody 0 7月 7 10:14 a.txt
创建的文件应该在服务器上,验证:
[root@Kylinos63 ~]# ls /nfs1/ //服务端查看创建文件
-rw-r--r-- 1 nobody nobody 0 7月 7 10:14 /nfs1/a.txt
客户端开机自动挂载
[root@Kylinos64 nfs1]# cd ; vim /etc/fstab //末尾追加此行
192.168.1.63:/nfs1 /nfs1 nfs defaults 0 0
[root@Kylinos64 ~]# umount /nfs1
[root@Kylinos64 ~]# mount -a //fstab用mount -a测试
[root@Kylinos64 ~]# ls /nfs1/
配置NFS共享实例2
通过修改配置文件一些特殊参数达到共享效果
一些常见权限参数
详情参数:man exports
参数名称 | 参数用途 |
ro | 只读访问,该主机对该共享目录有只读权限 |
rw | 读写访问,该主机对该共享目录有读写权限,要注意是针对nfs之外还有目录自己权限 |
sync | 所有数据在请求时写入共享,资料同步写入到内存与硬盘中 |
async | NFS在写入数据前可以相应请求,资料会先暂存于内存中,而非直接写入硬盘 |
secure | NFS通过1024以下的安全TCP/IP端口发送 |
insecure | NFS通过1024以上的端口发送 ,允许从这台机器过来的非授权访问 |
wdelay | 如果多个用户要写入NFS目录,则归组写入(默认) |
no_wdelay | 关闭写延时,如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。 |
hide | 在NFS共享目录中不共享其子目录 |
no_hide | 共享NFS目录的子目录,如果将一个目录挂载到另外一个目录上,原来目录通常就被隐藏。要禁用这种行为,需启用 hide 选项。 |
subtree_check | 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认) |
no_subtree_check | 不检查父目录权限,关闭子树检查,子树检查会执行一些不想忽略的安全性检查。缺省选项是启用子树检查。 |
all_squash | 共享文件的UID和GID映射匿名用户anonymous,适合公用目录。 |
no_all_squash | 保留共享文件的UID和GID(默认) |
root_squash | root用户的所有请求映射成如anonymous用户一样的权限(默认) |
anonuid=xxx | 指定NFS服务器/etc/passwd文件中匿名用户的UID |
root_squash | 客户机用root用户访问该共享文件夹时,将root用户映射成匿名用户 |
no_root_squash | 客户机用root访问该共享文件夹时,不压制root用户身份 |
anonuid | 将客户机上的用户映射成指定的本地用户ID的用户 |
anongid | 将客户机上的用户映射成属于指定的本地用户组ID |
no_auth_nlm | 不对加锁请求进行认证。如果关心安全性,避免使用该选项。缺省选项是 auth_nlm 或 secure_locks。 |
mp | 显式地声明这个选项,NFS 要求挂载所导出的目录 |
fsid=num | NFS 故障恢复的情况中使用。如希望实现 NFS 的故障恢复,请参考 NFS 文档。 |
[root@Kylinos63 ~]# vim /etc/exports //追加下面这些行
/usr/a/all_squash *(rw,all_squash,anonuid=500,anongid=500)
/usr/a/async *(async)
/usr/a/no_root_squash *(rw,no_root_squash)
/usr/a/ro *(ro)
/usr/a/rw 192.168.1.0/24(rw)
/usr/a/root_squash *(rw,root_squash)
/usr/a/sync 192.168.1.0/255.255.255.0(sync)
#注意:发布共享目录中的格式除开共享目录是必须跟的参数之外,其他参数时可选的,共享目录与客户端之间是隔开的,客户端与参数之间没有空格
[root@Kylinos63 ~]# systemctl restart nfs
测试all_squash,anongid,anonuid
全部映射为nfs,所以需要在服务器上存在这个用户
[root@Kylinos63 ~]# useradd -u 500 -s /sbin/nologin nfs ; systemctl restart nfs
[root@Kylinos64 ~]# mount -t nfs 192.168.1.63:/usr/a/all_squash a/all_squash/
[root@Kylinos64 ~]# touch a/all_squash/1.txt
[root@Kylinos64 ~]# ll a/all_squash/1.txt //客户端查看是否映射为服务器测的500用户所有
-rw-r--r-- 1 500 500 0 Oct 9 14:02 a/all_squash/1.txt
[root@Kylinos63 ~]# ll /usr/a/all_squash/ //客户端查看,引进映射为nfs用户 gid,uid为500
-rw-r--r-- 1 nfs nfs 0 Oct 9 14:02 1.txt
测试no_root_squash
不压制root用户身份,root用户常见,所有者还是root
[root@Kylinos64 ~]# mount -t nfs 192.168.1.63:/usr/a/no_root_squash a/no_root_squash/
[root@Kylinos64 ~]# touch a/no_root_squash/2.txt
[root@Kylinos64 ~]# ll a/no_root_squash/2.txt
-rw-r--r-- 1 root root 0 Oct 9 14:06 a/no_root_squash/2.txt
[root@Kylinos63 ~]# ll /usr/a/no_root_squash/
-rw-r--r-- 1 root root 0 Oct 9 14:06 2.txt
测试root_squash
Root用户常见,全部变为nfs匿名用户nobody
[root@Kylinos64 ~]# mount -t nfs 192.168.1.63:/usr/a/root_squash a/root_squash/
[root@Kylinos64 ~]# touch a/root_squash/3.txt
[root@Kylinos63 ~]# ll /usr/a/root_squash/3.txt //查看是否映射
-rw-r--r-- 1 nobody nobody 0 Oct 9 14:10 /usr/a/root_squash/3.txt
其他的测试方法雷同
Autofs
我们挂载/tmp/a下面的内容的时候,需要一条一条的挂载,使用autofs可以实现自动挂载(当让可以使用fstab添加进去实现挂载,但是在某些情况下,autofs会很方便,比如在ldap或nis域里面,使用autofs可以实现家目录漫游)
自动挂载器是一种服务(autofs) , 它可以“根据需要”自动挂载NFS共享,并将在不再使用NFS共享时自动卸载这些共享。
自动挂载器优势
• 用户无需具有root 特权就可以运行mount/umount 命令。
• 自动挂载器中配置的NFS 共享可供计算机上的所有用户使用, 受访问权限约束。
• NFS 共享不像/etc/fstab 中的条目一样永久连接, 从而可释放网络和系统资源
• 自动挂载器完全在客户端配置, 无需进行任何服务器端配置。
• 自动挂载器与mount 命令使用相同的挂载选项, 包括安全性选项。
• 支持直接和间接挂载点映射, 在挂载点位置方面提供了灵活性。
• 间接挂载点可通过autofs' 创建和删除, 从而减少了手动管理这些挂载点的需求。
• NFS 是自动挂载器的默认文件系统, 但自动挂载器也可以用于自动挂载多种不同的文件系统。
• autofs 是管理方式类似于其他系统服务的一种服务。
缺点:建议使用三级目录,因为autofs的挂载点的上级目录是没有写权限的。
autofs软件安装
[root@Kylinos64 ~]# yum install autofs -y //rpm安装会依赖libhesiod.so,软件包为hesiod
建立自动挂载环境
[root@Kylinos64 ~]# mkdir /tmp/a //创建目录用于挂载服务端目录
自动挂载设计到两个文件,一个auto.master(定义本地挂载地点),一个auto.misc(用来设置挂载文件的文件系统类型和其他选项),位置都在/etc/下面
[root@Kylinos64 ~]# vim /etc/auto.master
/misc /etc/auto.misc #此行下面添加下面这行
/tmp/a /etc/auto.nfs --timeout=60 #当我们进入/tmp/a目录时,就去找/etc/auto.nfs这个配置文件,超过60s超时,放弃
[root@Kylinos64 ~]# vim /etc/auto.nfs //新建这个文件,和上面提到的auto.misc意义一样
root_squash -fstype=nfs 192.168.1.63:/tmp/a/root_squash
no_root_squash -fstype=nfs 192.168.1.63:/tmp/a/no_root_squash
all_squash -fstype=nfs 192.168.1.63:/tmp/a/all_squash
nfs1 -fstype=nfs 192.168.1.63:/nfs1
映射文件- 直接映射
顾名思义, 直接映射用于将NFS 共享映射到现有挂载点。自动挂载器不会尝试自动创建挂载点;在autofs 服务启动之前, 挂载点必须已存在。
继续前面的示例, /etc/auto,direct 文件的内容可能类似下文:
/mnt/docs -rw,sync serverX:/shares/docs
挂载点(或密钥) 始终为绝对路径,以”/” (斜杠) 开头。映射文件的其余部分使用相同的结构。
只有最右侧的目录受自动挂载程序的控制。因此, 挂载点(此示例中为/mnt)以上的目录结构不会被autofs 遮盖。
映射文件- 间接通配符映射
当NFS 服务器导出一个目录中的多个子目录时, 可将自动挂载程序配置为使用单个映射条目访问这些子目录其中的任何一个。作为示例, 对于从NFS 服务器自动挂载用户主目录, 此功能非常有用。
继续前面的示例, 如果serverX:/shares 导出两个或多个子目录, 并且能够使用相同的挂载选项访问这些子目录, 则/etc/auto.demo 文件的内容可能类似于下文:
* -rw,sync serverX:/shares/&
挂载点(或密钥) 是“*” (星号) , 而源位置上的子目录是“&” (& 符号) 。条目中的所有其他内容都相同。-
当用户尝试访问/shares/work 时, 密钥* (此示例中为work) 将代替源位置中的& 符号, 并将挂载serverX:/shares/work 。对于间接示例, autofs 服务将自动创建和删除work 目录。
本示例中的配置应是:
* -fstype=nfs 192.168.1.63:/usr/a/&
测试
[root@Kylinos64 ~]# systemctl daemon-reload;systemctl restart autofs
[root@Kylinos64 ~]# systemctl enable autofs
[root@Kylinos64 ~]# cd /usr/a/nfs1
[root@Kylinos64 nfs1]# cd /usr/a/root_squash
[root@Kylinos64 root_squash]# cd /usr/a/no_root_squash
[root@Kylinos64 no_root_squash]# cd /usr/a/all_squash
只有cd到我们挂载的目录下切入一次,我们才能触发自动挂载,另外自动挂载的目录不能提前创建,在配置文件里面写好,触发后自动创建
[root@Kylinos64 ~]# ls /usr/a/root_squash/
3.txt
[root@Kylinos64 ~]# ls /usr/a/no_root_squash/
2.txt
[root@Kylinos64 ~]# ls /usr/a/all_squash/
1.txt
[root@Kylinos64 ~]# ls /usr/a/nfs1/
a.txt b.txt