NFS


测试版本:CentOS 6.4 64b


NFS监听2049(TCP/UDP)端口,但由于文件系统非常复杂,不同的功能都会使用不同的程序来启动,因此额外端口就会不固定(随机1024以下的),这就需要向远程过程调用程序(RPC, Remote Procudure Call)注册,由RPC程序告知客户端NFS功能模块使用的确切端口,RPC程序(portmap或rpcbind)监听固定的111端口(TCP/UDP)。因此RPC要在NFS启动之前启动,而且若RPC重启,原来注册的数据会清空,因此RPC重新启动后,它管理的服务都需要重新启动来重新想RPC注册。

NFS_第1张图片

如上图所示,当客户端有 NFS 档案存取需求时,他会如何向服务器端要求数据呢?

1、客户端会向服务器端的 RPC (port 111) 发出 NFS 档案存取功能的询问要求;

2、服务器端找到对应的已注册的 NFS daemon端口后,会回报给客户端;

3、客户端了解正确的端口后,就可以直接与 NFS daemon 来联机。

FS依赖RPC运行,因此我们称 NFS 为 RPC server 的一种。事实上,有很多这样的服务器都是向 RPC 注册的,例如,NIS (Network Information Service) 也是 RPC server 的一种。


NFS 启动的 RPC daemons

 NFS 服务器主要的任务是进行文件系统的分享,文件系统的分享则与权限有关。 所以 NFS 服务器启动时至少需要两个 daemons ,一个管理客户端是否能够登入的问题, 一个管理客户端能够取得的权限。如果你还想要管理 quota 的话,那么 NFS 还得要再加载其他的 RPC 程序就是了。我们以较单纯的 NFS 服务器来说:

rpc.nfsd:

最主要的 NFS 服务器服务提供商。这个 daemon 主要的功能就是在管理客户端是否能够使用服务器文件系统挂载信息等, 其中还包含这个登入者的 ID 的判别。


rpc.mountd

这个 daemon 主要的功能,则是在管理 NFS 的文件系统哩!当客户端顺利的通过 rpc.nfsd 而登入服务器之后,在他可以使用 NFS 服务器提供的文件之前,还会经过文件权限 (就是那个 -rwxrwxrwx 与 owner, group 那几个权限啦) 的认证程序!他会去读 NFS 的配置文件 /etc/exports 来比对客户端的权限,当通过这一关之后客户端就可以取得使用 NFS 档案的权限啦!(注:这个也是我们用来管理 NFS 分享之目录的权限与安全设定的地方哩!)


rpc.lockd (非必要)

这个玩意儿可以用在管理档案的锁定 (lock) 用途。为何档案需要『锁定』呢? 因为既然分享的 NFS 档案可以让客户端使用,那么当多个客户端同时尝试写入某个档案时, 就可能对于该档案造成一些问题啦!这个 rpc.lockd 则可以用来克服这个问题。 但 rpc.lockd 必须要同时在客户端与服务器端都开启才行喔!此外, rpc.lockd 也常与 rpc.statd 同时启用。


rpc.statd (非必要)

可以用来检查档案的一致性,与 rpc.lockd 有关!若发生因为客户端同时使用同一档案造成档案可能有所损毁时, rpc.statd 可以用来检测并尝试回复该档案。与 rpc.lockd 同样的,这个功能必须要在服务器端与客户端都启动才会生效。

上述这几个 RPC 所需要的程序,其实都已经写入到两个基本的服务启动脚本中了,那就是 nfs 以及 nfslock ! 亦即是在 /etc/init.d/nfs, /etc/init.d/nfslock,与服务器较有关的写入在 nfs 服务中,而与客户端的 rpc.lockd 之类的,就设定于 nfslock 服务中。


因为 NFS 本身的服务并没有进行身份登入的识别, 所以说,当你在客户端以 dmtsai 的身份想要存取服务器端的文件系统时, 服务器端会以客户端的使用者 UID 与 GID 等身份来尝试读取服务器端的文件系统。所以 NFS 通常需要与 NIS 这一个可以确认客户端与服务器端身份一致的服务搭配使用


分享资源的登录档:/var/lib/nfs/*tab

在 NFS 服务器的登录文件都放置到 /var/lib/nfs/ 目录里面,在该目录下有两个比较重要的登录档, 

一个是 etab ,主要记录了 NFS 所分享出来的目录的完整权限设定值;

[root@www ~]# tail /var/lib/nfs/etab
/home/public    192.168.100.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,
no_all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534)
# 上面是同一行,可以看出除了 rw, sync, root_squash 等等,
# 其实还有 anonuid 及 anongid 等等的设定!

另一个 xtab 则记录曾经链接到此 NFS 服务器的相关客户端数据。


NFS 会直接使用到核心功能,所以你的核心必须要有支持 NFS 才行。万一如果你的核心版本小于 2.2 版,或者重新自行编译过核心的话,那么就得要很注意啦!因为你可能会忘记选择 NFS 的核心支持啊!

还好,我们 CentOS 或者是其他版本的 Linux ,预设核心通常是支持 NFS 功能的,所以你只要确认你的核心版本是目前新的 2.6.x 版,并且使用你的 distribution 所提供的核心,那应该就不会有问题!


安装

安装nfs-utils时一般会捎带安装RPC协议软件,CentOS 5.x是portmap而6.x是rpcbind

yum install -y nfs-utils

/etc/rc.d/init.d/nfs 

/etc/rc.d/init.d/nfslock 

/etc/rc.d/init.d/rpcgssd 

/etc/rc.d/init.d/rpcidmapd 

/etc/rc.d/init.d/rpcsvcgssd //以上几个是生成的脚本 

/etc/sysconfig/nfs //nfs的配置文件 

/sbin/rpc.lockd //管理文件锁,防止同一文件多人同时读写造成文件损坏 

/usr/sbin/exportfs //这个命令很重要,修改了exports文件后不需要重启nfs服务就可以刷新服务资源靠的就是他 

/usr/sbin/mountstats //可以按挂载点查看客户端各种状态信息,很详细 

/usr/sbin/nfsiostat //按挂载点查看客户端IO详细状态信息 

/usr/sbin/nfsstat //可以查看服务端或客户端各种NFS状态信息 

/usr/sbin/showmount //查看NFS服务器和挂载上的客户端各种信息


服务器配置

配置文件

主要配置文件为:/etc/exports

格式为: 共享目录 可mount主机IP(参数1,参数2,……)

如:我要让 *.centos.vbird 网域的主机,登入我的 NFS 主机时,可以存取 /home/linux ,但是他们存数据的时候,我希望他们的 UID 与 GID 都变成 45 这个身份的使用者,假设我 NFS 服务器上的 UID 45 与 GID 45 的用户/组名为 nfsanon。

答:

[root@www ~]# groupadd -g 45 nfsanon
[root@www ~]# useradd -u 45 -g nfsanon nfsanon
[root@www ~]# mkdir /home/linux
[root@www ~]# setfacl -m u:nfsanon:rwx /home/linux
[root@www ~]# vim /etc/exports
/tmp          *(rw,no_root_squash)
/home/public  192.168.100.0/24(rw)    *(ro)
/home/test    192.168.100.10(rw)
/home/linux   *.centos.vbird(rw,all_squash,anonuid=45,anongid=45)
# 如果要开放匿名,那么重点是 all_squash,并且要配合 anonuid !

特别注意到那个 all_squash 与 anonuid, anongid 的功能!如此一来,当 clientlinux.centos.vbird 登入这部 NFS 主机,并且在 /home/linux 写入档案时,该档案的所有人与所有群组,就会变成 /etc/passwd 里面对应的 UID 为 45 的那个身份的使用者了!

授权信息设置如下:

(1) rw //客户端拥有读写的权限。

(2) ro //客户端只有读的权限。

(3) no_root_squash //root用户可访问,不变成匿名用户,即root用户可以以root用户的权限访问NFS服务器的共享资源。

(4) root_squash //root用户变成匿名用户

(5) all_squash //所有用户都变成匿名用户

(6) anonuid // 见下方anongid

(7) anongid //所有匿名用户的UID或组ID都变为后面设定的UID或GID的权限。因为所有在NFS服务器用户列表中没有用户名的都会匿名用户,这里设定这些匿名用户的用户权限。

(8)sync 代表数据会同步写入到内存与硬盘中

(9)async 则代表数据会先暂存于内存当中,而非直接写入硬盘!


说明:必须注意nfs/目录的访问权限,必须设置成777权限;父目录/var权限无要求,普通的755即可;


启动相关服务

NFS 的启动还需要 rpcbind 的协助才行。

[root@www ~]# /etc/init.d/rpcbind start

# 如果 rpcbind 本来就已经在执行了,那就不需要启动啊!

[root@www ~]# /etc/init.d/nfs start

# 有时候某些 distributions 可能会出现如下的警告讯息:

exportfs: /etc/exports [3]: No 'sync' or 'async' option specified 

for export "192.168.100.10:/home/test".

  Assuming default behaviour ('sync').

# 上面的警告讯息仅是在告知因为我们没有指定 sync 或 async 的参数,

# 则 NFS 将默认会使用 sync 的信息而已。你可以不理他,也可以加入 /etc/exports。

[root@www ~]# /etc/init.d/nfslock start
[root@www ~]# chkconfig rpcbind on
[root@www ~]# chkconfig nfs on
[root@www ~]# chkconfig nfslock on

rpcbind 启动之后,会出现一个 port 111 的 sunrpc 的服务,那就是 rpcbind !nfs 则会启动至少两个以上的 daemon !然后就开始在监听 Client 端的需求!

如果你想要增加一些 NFS 服务器的数据一致性功能时,可能需要用到 rpc.lockd 及 rpc.statd 等 RPC 服务, 那么或许你可以增加一个服务,那就是 nfslock !

在确认启动没有问题之后,接下来我们来瞧一瞧那么 NFS 到底开了哪些端口

[root@www ~]# netstat -tulnp| grep -E '(rpc|nfs)'
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address  Foreign Address  State   PID/Program name
tcp        0      0 0.0.0.0:875    0.0.0.0:*        LISTEN  3631/rpc.rquotad
tcp        0      0 0.0.0.0:111    0.0.0.0:*        LISTEN  3601/rpcbind
tcp        0      0 0.0.0.0:48470  0.0.0.0:*        LISTEN  3647/rpc.mountd
tcp        0      0 0.0.0.0:59967  0.0.0.0:*        LISTEN  3689/rpc.statd
tcp        0      0 0.0.0.0:2049   0.0.0.0:*        LISTEN  -
udp        0      0 0.0.0.0:875    0.0.0.0:*                3631/rpc.rquotad
udp        0      0 0.0.0.0:111    0.0.0.0:*                3601/rpcbind
udp        0      0 0.0.0.0:897    0.0.0.0:*                3689/rpc.statd
udp        0      0 0.0.0.0:46611  0.0.0.0:*                3647/rpc.mountd
udp        0      0 0.0.0.0:808    0.0.0.0:*                3601/rpcbind
udp        0      0 0.0.0.0:46011  0.0.0.0:*                3689/rpc.statd

总共产生了好多的 port,不过主要的端口是:

rpcbind 启动的 port 在 111 ,同时启动在 UDP 与 TCP;

nfs 本身的服务启动在 port 2049 上头!

其他 rpc.* 服务启动的 port 则是随机产生的,因此需向 port 111 注册。

使用 rpcinfo 来观察每个 RPC 服务的注册状况:

[root@www ~]# rpcinfo -p [IP|hostname]
[root@www ~]# rpcinfo -t|-u  IP|hostname 程序名称

选项与参数:

-p :针对某 IP (未写则预设为本机) 显示出所有的 port 与 porgram 的信息;

-t :针对某主机的某支程序检查其 TCP 封包所在的软件版本;

-u :针对某主机的某支程序检查其 UDP 封包所在的软件版本;


# 1. 显示出目前这部主机的 RPC 状态

[root@www ~]# rpcinfo -p localhost
   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper
    100011    1   udp    875  rquotad
    100011    2   udp    875  rquotad
    100011    1   tcp    875  rquotad
    100011    2   tcp    875  rquotad
    100003    2   tcp   2049  nfs
....(底下省略)....
# 程序代号 NFS版本 封包类型 埠口  服务名称

# 2. 针对 nfs 这个程序检查其相关的软件版本信息 (仅察看 TCP 封包)

[root@www ~]# rpcinfo -t localhost nfs
program 100003 version 2 ready and waiting
program 100003 version 3 ready and waiting
program 100003 version 4 ready and waiting

# 可发现提供 nfs 的版本共有三种,分别是 2, 3, 4 版!

新的 NFS 版本传输速度较快,由上表看起来,我们的 NFS 至少支持到第 4 版,应该还算合理, 如果你的 rpcinfo 无法输出,那就表示注册的数据有问题啦!可能需要重新启动 rpcbind 与 nfs


#3、检查共享目录

随后可以采用showmount �e查看一下,看看共享的目录情况:

[root@ns var]# showmount -e localhost
Export list for ns.osserver:
/var/nfs 172.20.*.*

关于安全或防火墙的端口映射

一般来说, NFS 的服务仅会对内部网域开放,不会对因特网开放的。然而,如果你有特殊需求的话, 那么也可能会跨不同网域就是了。但是,NFS 除了固定的 port 111, 2049 之外, 还有很多不固定的端口是由 rpc.mountd, rpc.rquotad 等服务所开启的,所以,你的 iptables 就很难设定规则!

为了解决这个问题, CentOS 6.x 有提供一个固定特定 NFS 服务的端口配置文件,那就是 /etc/sysconfig/nfs ! 你在这个档案里面就能够指定特定的端口,这样每次启动 nfs 时,相关服务启动的端口就会固定,如此一来, 我们就能够设定正确的防火墙!这个配置文件内容很多,绝大部分的数据你都不要去更改,只要改跟 PORT 这个关键词有关的数据即可。 那么需要更改的 rpc 服务有哪些呢?主要有 mountd, rquotad, nlockmgr 这三个,所以你应该要这样改:

[root@www ~]# vim /etc/sysconfig/nfs
RQUOTAD_PORT=1001   <==约在 13 行左右
LOCKD_TCPPORT=30001 <==约在 21 行左右
LOCKD_UDPPORT=30001 <==约在 23 行左右
MOUNTD_PORT=1002    <==约在 41 行左右

# 记得设定值最左边的批注服务要拿掉之外,端口的值你也可以自行决定。

[root@www ~]# /etc/init.d/nfs restart
[root@www ~]# rpcinfo -p | grep -E '(rquota|mount|nlock)'
    100011    2   udp   1001  rquotad
    100011    2   tcp   1001  rquotad
    100021    4   udp  30001  nlockmgr
    100021    4   tcp  30001  nlockmgr
    100005    3   udp   1002  mountd
    100005    3   tcp   1002  mountd

# 上述的输出数据已经被鸟哥汇整过了,没用到的端口先挪掉了!

很可怕吧!如果想要开放 NFS 给别的网域的朋友使用,又不想要让对方拥有其他服务的登入功能, 那你的防火墙就得要开放上述的十个端口啦!有够麻烦的~假设你想要开放 120.114.140.0/24 这个网域的人能够使用你这部服务器的 NFS 的资源,防火墙需要开放:

[root@www ~]# vim /usr/local/virus/iptables/iptables.allow
iptables -A INPUT -i $EXTIF -p tcp -s 120.114.140.0/24 -m multiport \
         --dport 111,2049,1001,1002,30001 -j ACCEPT
iptables -A INPUT -i $EXTIF -p udp -s 120.114.140.0/24 -m multiport \
         --dport 111,2049,1001,1002,30001 -j ACCEPT
[root@www ~]# /usr/local/virus/iptables/iptables.rule

NFS 服务器关机前的注意事项:

需要注意的是,由于 NFS 使用的这个 RPC 服务,当客户端连上服务器时,那么你的服务器想要关机, 那可就会成为『不可能的任务』!如果你的服务器上面还有客户端在联机,那么你要关机, 可能得要等到数个钟头才能够正常的关机成功!

所以,建议你的 NFS Server 想要关机之前,能先『关掉 rpcbind 与 nfs 』这两个东西! 如果无法正确的将这两个 daemons 关掉,那么先以 netstat -utlp 找出 PID ,然后以 kill 将他关掉先!这样才有办法正常的关机成功喔!这个请特别特别的注意!

当然啦,你也可以利用 showmount -a localhost 来查出来那个客户端还在联机? 或者是查阅 /var/lib/nfs/rmtab 或 xtab 等档案来检查亦可。找到这些客户端后, 可以直接 call 他们啊!让他们能够帮帮忙先!

事实上,客户端以 NFS 联机到服务器端时,如果他们可以下达一些比较不那么『硬』的挂载参数时, 就能够减少这方面的问题喔!相关的安全性可以参考下一小节的 客户端可处理的挂载参数与开机挂载。



客户端配置


现在假设客户端在 192.168.100.10 这部机器上,而服务器是 192.168.100.254 , 那么赶紧来检查一下我们是否已经有 rpcbind 的启动,另外远程主机有什么可用的目录呢!

# 1. 启动必备的服务:若没有启动才启动,有启动则保持原样不动。

[root@clientlinux ~]# /etc/init.d/rpcbind start
[root@clientlinux ~]# /etc/init.d/nfslock start

# 另外,如果服务器端有启动 nfslock 的话,客户端也要启动才能生效!


# 2. 查询服务器提供哪些资源给我们使用呢?

[root@clientlinux ~]# showmount -e 192.168.100.254
Export list for 192.168.100.254:
/tmp         *
/home/linux  *.centos.vbird
/home/test   192.168.100.10
/home/public (everyone)   <==这是等一下我们要挂载的目录


客户端可处理的挂载参数与开机挂载

除了 NFS 服务器需要保护之外,我们取用人家的 NFS 文件系统也需要自我保护才行啊! 那要如何自我保护啊?可以透过 mount 的指令参数!包括底下这些主要的参数可以尝试加入:


suid/nosuid 使用 nosuid 就能够取消 SUID 的功能

rw/ro 指定该文件系统是只读 (ro) 或可擦写

dev/nodev 是否可以保留装置档案的特殊功能,一般来说只有 /dev 这个目录才会有特殊的装置,因此你可以选择 nodev

exec/noexec 是否具有执行 binary file 的权限

user/nouser 是否允许使用者进行档案的挂载与卸除功能,如果要保护文件系统,最好不要提供使用者进行挂载与卸除吧

auto/noauto 这个 auto 指的是『mount -a』时,会不会被挂载的项目。 


一般来说,如果你的 NFS 服务器所提供的只是类似 /home 底下的个人资料, 应该不需要可执行、SUID 与装置档案,因此当你在挂载的时候,可以这样下达指令喔:

[root@clientlinux ~]# umount /home/nfs/public
[root@clientlinux ~]# mount -t nfs -o nosuid,noexec,nodev,rw \
> 192.168.100.254:/home/public /home/nfs/public
[root@clientlinux ~]# mount | grep addr
192.168.100.254:/home/public on /home/nfs/public type nfs (rw,noexec,nosuid,
nodev,vers=4,addr=192.168.100.254,clientaddr=192.168.100.10)

这样一来你所挂载的这个文件系统就只能作为资料存取之用,相对来说,对于客户端是比较安全一些的。 所以说,这个nosuid, noexec, nodev 等等的参数可得记得啊!

关于 NFS 特殊的挂载参数

举例来说,由于文件系统对 Linux 是非常重要的东西,因为我们进行任何动作时,只要有用到文件系统, 那么整个目录树系统就会主动的去查询全部的挂载点。如果你的 NFS 服务器与客户端之间的联机因为网络问题, 或者是服务器端先关机了,却没有通知客户端,那么客户端只要动到文件系统的指令 (例如 df, ls, cp 等等) ,整个系统就会慢到爆!因为你必须要等到文件系统搜寻等待逾时后,系统才会饶了你!(鸟哥等过 df 指令 30 分钟过...)

为了避免这些困扰,我们还有一些额外的 NFS 挂载参数可用!例如:

fg/bg 当执行挂载时,该挂载的行为会在前景 (fg) 还是在背景 (bg) 执行, 若在前景执行时,则 mount 会持续尝试挂载,直到成功或 time out 为止,若为背景执行, 则 mount 会在背景持续多次进行 mount ,而不会影响到前景的程序操作。 如果你的网络联机有点不稳定,或是服务器常常需要开关机,那建议使用 bg 比较妥当。

soft/hard 如果是 hard 的情况,则当两者之间有任何一部主机脱机,则 RPC 会持续的呼叫,直到对方恢复联机为止。如果是 soft 的话,那 RPC 会在 time out 后『重复』呼叫,而非『持续』呼叫, 因此系统的延迟会比较不这么明显。同上,如果你的服务器可能开开关关,建议用 soft 喔!

intr 当你使用上头提到的 hard 方式挂载时,若加上 intr 这个参数, 则当 RPC 持续呼叫中,该次的呼叫是可以被中断的 (interrupted)。

rsize/wsize 读出(rsize)与写入(wsize)的区块大小 (block size)。 这个设定值可以影响客户端与服务器端传输数据的缓冲记忆容量。一般来说, 如果在局域网络内 (LAN) ,并且客户端与服务器端都具有足够的内存,那这个值可以设定大一点, 比如说 32768 (bytes) 等,提升缓冲记忆区块将可提升 NFS 文件系统的传输能力! 但要注意设定的值也不要太大,最好是达到网络能够传输的最大值为限。


通常如果你的 NFS 是用在高速运作的环境当中的话,那么可以建议加上这些参数的说:

[root@clientlinux ~]# umount /home/nfs/public
[root@clientlinux ~]# mount -t nfs -o nosuid,noexec,nodev,rw \
> -o bg,soft,rsize=32768,wsize=32768 \
> 192.168.100.254:/home/public /home/nfs/public

则当你的 192.168.100.254 这部服务器因为某些因素而脱机时,你的 NFS 可以继续在背景当中重复的呼叫! 直到 NFS 服务器再度上线为止。这对于系统的持续操作还是有帮助的啦! 当然啦,那个 rsize 与 wsize 的大小则需要依据你的实际网络环境而定喔!

将 NFS 开机即挂载

我们知道开机就挂载的挂载点与相关参数是写入 /etc/fstab 中的,那 NFS 能不能写入 /etc/fstab 当中呢?非常可惜的是, 不可以呢!为啥呢?分析一下开机的流程,我们可以发现网络的启动是在本机挂载之后,因此当你利用 /etc/fstab 尝试挂载 NFS 时,系统由于尚未启动网络,所以肯定是无法挂载成功的啦!那怎办?简单!就写入 /etc/rc.d/rc.local 即可!

[root@clientlinux ~]# vim /etc/rc.d/rc.local
mount -t nfs -o nosuid,noexec,nodev,rw,bg,soft,rsize=32768,wsize=32768 \
192.168.100.254:/home/public /home/nfs/public


autofs 的设定概念

autofs 这个服务在客户端计算机上面,会持续的侦测某个指定的目录, 并预先设定当使用到该目录下的某个次目录时,将会取得来自服务器端的 NFS 文件系统资源,并进行自动挂载的动作。 讲这样或许你有点模糊,让我们拿底下这个图示来看看:

NFS_第2张图片

图  autofs 自动挂载的配置文件内容示意图

如上图所示,我们的 autofs 主要配置文件为 /etc/auto.master,这个档案的内容很简单, 如上所示,我只要定义出最上层目录 (/home/nfsfile) 即可,这个目录就是 autofs 会一直持续侦测的目录啦。 至于后续的档案则是该目录底下各次目录的对应。在 /etc/auto.nfs (这个档案的档名可自定义) 里面则可以定义出每个次目录所欲挂载的远程服务器的 NFS 目录资源!

举例来说:『当我们在客户端要使用 /home/nfsfile/public 的数据时,此时 autofs 才会去 192.168.100.254 服务器上挂载 /home/public !』且『当隔了 5 分钟没有使用该目录下的数据后,则客户端系统将会主动的卸除 /home/nfsfile/public 』。

很不错用的一个工具吧!因为有用到服务器的数据时才自动挂载,没有使用了就会自动卸除! 而不是传统的情况一直是挂载的!既然这么好用,那就让我们实际来操演一下:

建立主配置文件 /etc/auto.master ,并指定侦测的特定目录

这个主要配置文件的内容很简单,只要有要被持续侦测的目录及『数据对应文件』即可。 那个数据对应文件的文件名是可以自行设定的,在鸟哥这个例子当中我使用 /etc/auto.nfs 来命名。

[root@clientlinux ~]# vim /etc/auto.master
/home/nfsfile  /etc/auto.nfs

上述数据中比较需要注意的是,那个 /home/nfsfile 目录不需要存在,因为 autofs 会主动的建立该目录! 如果你建立了,可能反而会出问题~因此,先确定一下没有该目录吧!


建立数据对应文件内 (/etc/auto.nfs) 的挂载信息与服务器对应资源

刚刚我们所指定的 /etc/auto.nfs 是自行设定的,所以这个档案是不存在的。那么这个档案的格式是如何呢?你可以这样看:

[本地端次目录]  [-挂载参数]  [服务器所提供的目录]
选项与参数:
[本地端次目录] :指的就是在 /etc/auto.master 内指定的目录之次目录
[-挂载参数]    :就是前一小节提到的 rw,bg,soft 等等的参数啦!可有可无;
[服务器所提供的目录] :例如 192.168.100.254:/home/public 等
[root@clientlinux ~]# vim /etc/auto.nfs
public   -rw,bg,soft,rsize=32768,wsize=32768  192.168.100.254:/home/public
testing  -rw,bg,soft,rsize=32768,wsize=32768  192.168.100.254:/home/test
temp     -rw,bg,soft,rsize=32768,wsize=32768  192.168.100.254:/tmp
# 参数部分,只要最前面加个 - 符号即可!

这样就可以建立对应了!要注意的是,那些 /home/nfsfile/public 是不需要事先建立的! 咱们的 autofs 会事情况来处理喔!好了,接下来让我们看看如何实际运作吧!



其它相关命令

1、当修改了/etc/exports文件后,可以不用重新启动nfs服务,直接采用exports �rv 即可重新导出共享目录;

该命令格式如下:

exportfs [-aruv]

-a :全部mount或者unmount /etc/exports中的内容

-r :重新mount /etc/exports中分享出来的目录

-u :umount 目录

-v :在 export 的时候,将详细的信息输出到屏幕上。







你可能感兴趣的:(server,服务器,客户端,程序,而且)