作者:冭獭1314 | 来源:互联网 | 2023-09-05 12:12
服务器端开启NFS服务后,客户端就可以挂载了。客户端可以像操作本地文件系统一样操作NFS文件系统。客户端在挂载NFS文件系统时可以加一些选项,一般可以指定下列选项。1.softandhard前面
服务器端开启NFS服务后,客户端就可以挂载了。客户端可以像操作本地文件系统一样操作NFS文件系统。客户端在挂载NFS文件系统时可以加一些选项,一般可以指定下列选项。
1. soft and hard
前面的文章中提到过,客户端和服务器通过RPC机制进行通信,客户端向服务器发送RPC请求,服务器解析RPC请求中的信息进行处理,然后向客户端发送应答消息。RPC请求具有一个超时时间,如果在这个时间内客户端没有接收到应答消息,就会重发刚才的RPC请求。客户端可以设置超时重发次数。当超过重试次数后客户端会根据soft/hard选项进行不同处理。如果客户端使用了soft,则认为RPC请求失败,不再重复发送这个RPC请求。如果客户端使用了hard,则客户端继续重复发送失败的RPC请求。
2.timeo and retrans
这是和RPC请求重传相关的两个参数。timeo表示RPC消息等待时间,如果客户端在这个时间内没有接收到应答消息,则认为RPC消息失败了。retrans表示RPC请求重试次数,当达到这个次数时客户端根据soft/hard选项进行不同处理。
3.rsize and wsize
客户端和服务器通过RPC机制进行通信。当客户端读取服务器中文件内容时,服务器将文件内容封装在RPC应答消息中返回给客户端。但是RPC消息有一个长度限制,当文件内容超出这个长度时,服务器需要将文件内容封装在多个RPC应答消息中传输。rsize就指定了每个RPC应答消息中最多可以传输的数据量。wsize含义和rsize类似,当客户端向服务器文件写入数据时也是将数据封装在RPC消息中传输给服务器,wsize表示写操作中每个RPC消息最多可以传输的数据量。如果客户端在挂载NFS文件系统时没有指定rsize/wsize的值,则客户端和服务器会自行协商出一个合适的数值。
4.ac and noac
这是和文件缓存相关的一个选项。为了提高系统性能,NFS客户端可以缓存文件属性信息,在一定的时间范围内这些属性缓存是有效的。这就存在文件同步的问题,因为NFS文件系统可以供多个客户端挂载,不同客户端上的用户可以同时访问同一个文件,如何保持文件同步是一个非常麻烦的问题。如果客户端挂载文件系统时使用了ac选项,则表示启用文件属性缓存机制。在文件属性缓存的有效期内,如果其他客户端已经修改了文件属性(比如撤销了文件写权限),这个客户端无法及时感知这种变化。当客户端写服务器发起WRITE请求时,首先检查本地文件属性缓存,发现自己具有写权限,于是就将数据发送给服务器。但是由于其他客户端已经撤销了写权限,因此这些数据是不能写到服务器的磁盘中的,WRITE请求失败,这就会降低系统性能。如果客户端在挂载文件系统时使用了noac选项,则客户端不会缓存文件属性信息。当客户端向服务器发起WRITE请求时,首先会发起一个GETATTR请求获取文件属性,如果发现没有写权限,就不会向服务器传输数据了。但是相比于ac选项,客户端在发起WRITE请求前需要先发起GETATTR请求,这同样会降低系统性能。因此,当客户端数量比较少,客户端与服务器的交互不频繁时可以使用ac选项。而保持文件同步更好的办法是在NFS文件系统中使用文件锁。
5.acregmin and acregmax
这也是和文件属性缓存相关的两个选项。如果客户端使用了ac选项则会创建文件属性缓存。这个缓存具有一个有效期,当超过这个期限后就认为文件属性无效了。这个有效期是一个动态变化的数值。初始有效期是acregmin。在这个有效期内,客户端可能会再次获取文件属性,更新本地文件属性缓存。如果更新文件属性缓存时发现缓存中的数据有效,则会将有效期加倍,但是有效最大值不能超过acregmax。如果更新文件属性时发现缓存中的数据已经无效了,则会将有效期重新设置为acregmin。
6.acdirmin and acdirmax
这两个选项的含义和acregmin、acregmax相同,但是acregmin/acregmax针对普通文件,acdirmin/acdirmax针对目录文件缓存。用户可以为普通文件和目录文件缓存设置不同的有效期。
7.actimeo
这个选项表示将acregmin、acregmax、acdirmin、acdirmax设置成统一的数值,都使用actimeo指定的时间。
8.sec
指定NFS服务使用的认证方式。服务器需要对客户端进行认证,认证通过后才处理客户端发送的请求;如果认证失败,则拒绝这个请求。有效的认证方式包括none, sys, krb5, krb5i, krb5p, lkey, lkeyi, lkeyp, spkm, spkmi, and spkmp,默认的认证方式是sys。
9.sharecache and nosharecache
这是和文件缓存共享相关的一个选项。客户端可以多次挂载同一个文件系统,比如我们将同一个文件系统分别挂载到了/mnt1和/mnt2两个目录下。
mount -t nfs nfs-server:/tmp/nfs/root /mnt1
mount -t nfs nfs-server:/tmp/nfs/root /mnt2
这两个文件系统中的文件都会在客户端创建文件缓存,sharecache表示这两个文件系统使用同一份缓存,如果我们在/mnt1中执行了写操作,则缓存中保存的就是最新的数据了,那么当我们在/mnt2中执行读操作时,由于缓存中的数据已经是最新的了,直接从缓存中读取数据就可以了,就不必从服务器读取数据了。nosharecache表示这两个文件系统使用两份缓存,由于/mnt1和/mnt2使用了两份缓存,那么由于/mnt1中执行了写操作,数据传输到了服务器中,那么/mnt2缓存中的数据就不是最新的了。因此,当我们在/mnt2中执行读操作时,必须向服务器请求数据,这就降低了系统效率。这个选项的默认值是sharecache,客户端多次挂载同一个文件系统时共享缓存。
10.lookupcache
这是和目录项缓存相关的一个选项,这个选项的值可以是all, none, pos or positive。客户端可以向服务器发起LOOKUP请求查找某个文件。如果查找的文件存在,查找到的结果标记为positive;如果查找的文件不存在,查找的结果标记为negative。如果lookupcache的值是pos(或者positive,这两个值完全相同),则NFS客户端认为positive的结果有效,而negative的结果无效。这样,如果客户端想删除标记为positive的文件,不需要提前查询这个文件在服务器端是否存在。如果要创建一个标记为negative的文件,需要提前查询服务器端是否存在同名文件,因为客户端不信任标记为negative的缓存。如果lookupcache的值是all,则客户端既信任标记为positive的缓存,也信任标记为negative的缓存。如果lookupcache的值是none,则客户端既不信任标记为positive的缓存,也不信任标记为negative的缓存。默认值是all。
11.fsc
这个选项是也是一种缓存机制,但是和前面提到的缓存不同,这是一种磁盘缓存。当客户端读取文件内容时,如果本地缓存中的数据有效,则直接从本地缓存中读取数据。如果本地缓存中的数据无效或者根本没有数据,则向服务器请求数据。因为数据需要从服务器传输到客户端来,因此会受到网络环境影响,效率比较低。为此,人们提出了fscache缓存。fscache缓存是一种本地缓存,但是将数据保存在客户端的磁盘中。当客户端接收到服务器传过来的数据后,一方面将数据放入缓存中(内存中),供客户端的进程使用,另一方面将数据保存在磁盘中。这样,下次再读取数据时就可以不向服务器发送请求了,而是直接从本地磁盘中读取数据到缓存中,这就加快了数据访问速率。当然,fscache缓存只能用在只读文件系统中或者修改频率不频繁的文件系统中,否则客户端需要频繁更新fscache缓存中的数据,反而降级了系统性能。