NFS服务器详解

一、NFS服务简介

NFS 就是 Network FileSystem 的缩写,最早之前是由sun 这家公司所发展出来的。 它最大的功能就是可以透过网络,让不同的机器、不同的操作系统、可以彼此分享个别的档案 (share files)。所以,你也可以简单的将他看做是一个文件服务器 (file server). 

因为 NFS 支持的功能相当的多,而不同的功能都会使用不同的程序来启动, 每启动一个功能就会启用一些端口来传输数据,因此, NFS 的功能所对应的端口才没有固定住, 而是随机取用一些未被使用的小于 1024 的端口来作为传输之用。

此时我们就得需要远程过程调用 (RPC) 的服务啦!RPC 最主要的功能就是在指定每个 NFS 功能所对应的 port number ,并且回报给客户端,让客户端可以连结到正确的端口上去。 那 RPC 又是如何知道每个 NFS 的端口呢?这是因为当服务器在启动 NFS 时会随机开启用数个端口,并主动的向 RPC 注册,因此 RPC 可以知道每个端口对应的 NFS 功能,然后 RPC 又是固定使用 port 111 来监听客户端的需求并回报客户端正确的端口, 所以当然可以让 NFS 的启动更为快捷了。

所以你要注意,要启动 NFS 之前,RPC 就要先启动了,否则 NFS 会无法向 RPC 注册。 另外,RPC 若重新启动时,原本注册的数据会不见,因此 RPC 重新启动后,它管理的所有服务都需要重新启动来重新向 RPC 注册。

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

  1. 客户端会向服务器端的 RPC (port 111) 发出 NFS 档案存取功能的询问要求;
  2. 服务器端找到对应的已注册的 NFS daemon 端口后,会回报给客户端;
  3. 客户端了解正确的端口后,就可以直接与 NFS daemon 来联机。

由于 NFS 的各项功能都必须要向 RPC 来注册,如此一来 RPC 才能了解 NFS 这个服务的各项功能之 port number, PID, NFS 在服务器所监听的 IP 等等,而客户端才能够透过 RPC 的询问找到正确对应的端口。 也就是说,NFS 必须要有 RPC 存在时才能成功的提供服务,因此我们称 NFS 为 RPC server 的一种。事实上,有很多这样的服务器都是向 RPC 注册的,举例来说,NIS (Network Information Service) 也是 RPC server 的一种。

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

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 同样的,这个功能必须要在服务器端与客户端都启动才会生 效。

 

二、所需要的软件及软件结构

要设定好 NFS 服务器我们必须要有两个软件才行,分别是:

RPC 主程序:rpcbind

就如同刚刚提的到,我们的 NFS 其实可以被视为一个 RPC 服务,而要启动任何 一个 RPC 服务之前,我们都需要做好 port 的对应 (mapping) 的工作才行,这 个工作其实就是『 rpcbind 』这个服务所负责的!也就是说, 在启动任何一个 RPC 服务之前,我们都需要启动 rpcbind 才行! (在 CentOS 5.x 以前这个软 件称为 portmap,在 CentOS 6.x 之后才称为 rpcbind 的!)

NFS 主程序:nfs-utils

就是提供 rpc.nfsd 及 rpc.mountd 这两个 NFS daemons 与其他相关 documents 与说明文件、执行文件等的软件!这个就是 NFS 服务所需要的主要 软件啦!一定要有喔!

NFS 软件结构:

/etc/exports:(主要配置文件):这个档案就是 NFS 的主要配置文件了!不过,系统并没有默认值,所以这个档案『 不一定会存在』,你可能必须要使用 vim 主动的建立起这个文件(/var/lib/nfs/etab 默认的权限设置)。

 /usr/sbin/exportfs (NFS 文件系统维护指令):这个是维护 NFS 分享资源的指令,我们可以利用这个指令重新分享/etc/exports 变更的目录资源、将 NFS Server 分享的目录卸除或重新分享等 等,这个指令是 NFS 系统里面相当重要的一个

 /var/lib/nfs/*tab(分享资源的登录档):在 NFS 服务器的登录文件都放置到 /var/lib/nfs/ 目录里面,在该目录下有两个比较重要的登录档, 一个是 etab ,主要记录了 NFS 所分享出来的目录的完 整权限设定值;另一个 xtab 则记录曾经链接到此 NFS 服务器的相关客户端数 据。

/usr/sbin/showmount (客户端查询服务器分享资源的指令):这是另一个重要的 NFS 指令。exportfs 是用在 NFS Server 端,而 showmount则主要用在 Client 端。这个 showmount 可以用来察看 NFS 分享出来的目录资 源

/etc/sysconfig/nfs: 主要设置端口   ( “ NFS 随机选取数个端口向 RPC 注册”时 产生的daemon的端口,rpc.nfsd:rpc.mountd: rpc.lockd rpc.statd  rpc.rquotad 等等。)

 

NFS服务部署服务器准备

 

 服务器一台  192.168.80.150      [root@cnetos68 桌面]#

 客户端一台  192.168.80.110       [root@www ~]#

 

三、软件的安装和服务启动


[root@cnetos68 桌面]## yum -y install nfs-utils rpcbind  #安装软件

已加载插件:fastestmirror
设置安装进程
Loading mirror speeds from cached hostfile
... ...
已安装:
  nfs-utils.x86_64 1:1.2.3-70.el6_8.2                           rpcbind.x86_64 0:0.2.0-12.el6                          

作为依赖被安装:
  keyutils.x86_64 0:1.4-5.el6         libevent.x86_64 0:1.4.13-4.el6         libgssglue.x86_64 0:0.1-11.el6           
  libtirpc.x86_64 0:0.2.1-11.el6_8    nfs-utils-lib.x86_64 0:1.1.5-11.el6    python-argparse.noarch 0:1.2.1-2.1.el6   


[root@cnetos68 桌面]# rpm -qa rpcbind nfs-utils
nfs-utils-1.2.3-70.el6.x86_64
rpcbind-0.2.0-12.el6.x86_64

[root@cnetos68 桌面]# /etc/init.d/rpcbind start   #启动服务
[root@cnetos68 桌面]# /etc/init.d/rpcbind status
rpcbind (pid 1789) 正在运行...
[root@cnetos68 桌面]#
[root@cnetos68 桌面]# /etc/init.d/nfs start   # 说明NFS向RPC注册启动的服务  NFSrpc.nfsd:rpc.mountd: rpc.lockd rpc.statd  rpc.rquotad 
启动 NFS 服务: [确定]   
关掉 NFS 配额: [确定]
启动 NFS mountd: [确定]
启动 NFS 守护进程: [确定]
正在启动 RPC idmapd: [确定]

[root@cnetos68 桌面]# lsof -i:111
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rpcbind 1789 rpc 6u IPv4 13198 0t0 UDP *:sunrpc
rpcbind 1789 rpc 8u IPv4 13201 0t0 TCP *:sunrpc (LISTEN)
rpcbind 1789 rpc 9u IPv6 13203 0t0 UDP *:sunrpc
rpcbind 1789 rpc 11u IPv6 13206 0t0 TCP *:sunrpc (LISTEN)

[root@cnetos68 桌面]# netstat -lntup|grep rpcbind       #查看监听端口

tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1789/rpcbind
tcp 0 0 :::111 :::* LISTEN 1789/rpcbind
udp 0 0 0.0.0.0:111 0.0.0.0:* 1789/rpcbind  
udp 0 0 0.0.0.0:692 0.0.0.0:* 1789/rpcbind
udp 0 0 :::111 :::* 1789/rpcbind
udp 0 0 :::692 :::* 1789/rpcbind


[root@cnetos68 桌面]# netstat -lntup|grep 2049  #查看监听端口
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 :::* -


[root@cnetos68 桌面]#chkconfig  nfs on   #开机启动

[root@cnetos68 桌面]#chkconfig  rpcbind  on

[root@cnetos68 桌面]# chkconfig --list nfs
nfs 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
[root@cnetos68 桌面]# chkconfig --list rpcbind
rpcbind 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭

 

[root@cnetos68 桌面]# cat /etc/sysconfig/nfs   在启动 NFS 时会随机开启用数个端口,并主动的向 RPC 注册。可以固定这些端口,防火墙就可以更好的设置了。

# Path to remote quota server. See rquotad(8)
#RQUOTAD="/usr/sbin/rpc.rquotad"
# Port rquotad should listen on.
RQUOTAD_PORT=4000 
# TCP port rpc.lockd should listen on.
LOCKD_TCPPORT=4001
# UDP port rpc.lockd should listen on.
LOCKD_UDPPORT=4001
# Optional arguments passed to rpc.mountd. See rpc.mountd(8)
#RPCMOUNTDOPTS=""
# Port rpc.mountd should listen on.
MOUNTD_PORT=4002
# Optional arguments passed to rpc.statd. See rpc.statd(8)
#STATDARG=""
# Port rpc.statd should listen on.
STATD_PORT=4003

[root@cnetos68 桌面]# rpcinfo -p localhost      查看rpc监听的端口        rpcinfo命令参考在下文。 

 程序代码   NFS版本   数据包类型   端口   服务名称
program vers proto port service
100000 4 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 2 udp 111 portmapper
100011 1 tcp 4000 rquotad
100011 2 tcp 4000 rquotad
100005 1 udp 4002 mountd
100005 2 udp 4002 mountd
100003 2 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 2 tcp 2049 nfs_acl
100003 2 udp 2049 nfs
100003 4 udp 2049 nfs
100227 2 udp 2049 nfs_acl
100021 1 udp 4001 nlockmgr
100021 4 udp 4001 nlockmgr
100021 1 tcp 4001 nlockmgr
100021 4 tcp 4001 nlockmgr

[root@cnetos68 桌面]#  netstat -tulnp | grep -E '(rpc|nfs)' 

tcp 0 0 0.0.0.0:4000 0.0.0.0:* LISTEN 4235/rpc.rquotad
tcp 0 0 0.0.0.0:4002 0.0.0.0:* LISTEN 4240/rpc.mountd
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 3487/rpcbind
tcp 0 0 0.0.0.0:36441 0.0.0.0:* LISTEN 1903/rpc.statd
tcp 0 0 :::4002 :::* LISTEN 4240/rpc.mountd
tcp 0 0 :::39141 :::* LISTEN 1903/rpc.statd
tcp 0 0 :::111 :::* LISTEN 3487/rpcbind
udp 0 0 0.0.0.0:111 0.0.0.0:* 3487/rpcbind
udp 0 0 0.0.0.0:4000 0.0.0.0:* 4235/rpc.rquotad
udp 0 0 0.0.0.0:4002 0.0.0.0:* 4240/rpc.mountd
udp 0 0 127.0.0.1:807 0.0.0.0:* 1903/rpc.statd
udp 0 0 0.0.0.0:694 0.0.0.0:* 3487/rpcbind
udp 0 0 0.0.0.0:42310 0.0.0.0:* 1903/rpc.statd
udp 0 0 :::111 :::* 3487/rpcbind
udp 0 0 :::60558 :::* 1903/rpc.statd
udp 0 0 :::4002 :::* 4240/rpc.mountd
udp 0 0 :::694 :::* 3487/rpcbind

防火墙设置
[root@cnetos68 桌面]#  iptables -I INPUT 1 -p tcp --dport 111,2049  -j ACCEPT

[root@cnetos68 桌面]#  iptables -I INPUT 1 -p udp --dport 111,2049 -j ACCEPT

root@cnetos68 桌面]#  iptables -I INPUT 1 -p tcp --dport 4000:4003  -j ACCEPT

root@cnetos68 桌面]#  iptables -I INPUT 1 -p udp --dport 4000:4003  -j ACCEPT

 

四、共享文件设置 与 配置文件说明

/etc/exports:(主要配置文件):可能需要使用 vim 主动的建立起这个文件( 默认的权限参考/var/lib/nfs/etab)。

[root@cnetos68 桌面]# vim /etc/exports   #NFS服务器设置

#格式:  共享目录      客户端地址1(权限1,权限2)     客户端地址2(权限1,权限2)

  1. 配置文件每行分为两段:第一段为共享的目录,使用绝对路径,第二段为客户端地址及权限。  
  2. 地址可以使用完整IP或网段,例如10.0.0.8或10.0.0.0/24,10.0.0.0/255.255.255.0当然也可以地址可以使用主机名,DNS解析的和本地/etc/hosts解析的都行,支持通配符,例如:*.chengyongxu.com  
  3. 权限有:  
  4. rw:read-write,可读写;    注意,仅仅这里设置成读写客户端还是不能正常写入,还要正确地设置共享目录的权限。
  5. ro:read-only,只读;  
  6. sync:文件同时写入硬盘和内存;  
  7. async:文件暂存于内存,而不是直接写入内存;  
  8. no_root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,也拥有root权限。显然开启这项是不安全的。  
  9. root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,拥有匿名用户权限,通常他将使用nobody或nfsnobody身份;  
  10. all_squash:不论NFS客户端连接服务端时使用什么用户,对服务端分享的目录来说都是拥有匿名用户权限;  
  11. no_all_squash 保留共享文件的UID和GID(默认)
  12. anonuid:匿名用户的UID值,默认通常是nobody或nfsnobody,可以在此处自行设定;  
  13. anongid:匿名用户的GID值。  默认通常是nobody或nfsnobody。
  14. insecure NFS通过1024以上的端口发送
  15. wdelay 如果多个用户要写入NFS目录,则归组写入(默认)
  16. no_wdelay 如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。 hide 在NFS共享目录中不共享其子目录 no_hide 共享NFS目录的子目录
  17. subtree_check 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)
  18. no_subtree_check 和上面相对,不检查父目录权限

 

 /tmp    192.168.80.0/24(rw)

[root@cnetos68 桌面]# exportfs -arv   #强烈建议使用这个命令刷新共享文件信息。不要使用services  nfs  restart  。

exporting 192.168.80.0/24:/tmp

五、客户端挂载和其它设置

 

 [root@www ~]# showmount -e 192.168.80.150    #查看服务器的共享文件。

Export list for 192.168.80.150:

/tmp 192.168.80.0/24

[root@www ~]# mount -t nfs 192.168.80.150:/tmp /mnt/nfs1     #挂载
[root@www ~]# df
文件系统 1K-块 已用 可用 已用% 挂载点
192.168.80.150:/tmp 9948032 3801472 5634560 41% /mnt/nfs1
[root@www ~]# cd /mnt/nfs1
[root@www nfs1]# touch aa  #能不能创建文件,还要看服务器里的目录的权限 和 ACL设置(如  -setfacl )。
[root@www nfs1]# ll
-rw-r--r-- 1 nfsnobody nfsnobody 0 08-31 10:21 aa  

 

 继续实验  #重点,会引用好多问题。

#服务端操作:

[root@cnetos68 桌面]# vim /etc/exports

/tmp 192.168.80.0/24(rw,no_root_squash)

[root@cnetos68 桌面]# exportfs -arv

#客户端操作: 

[root@www nfs1]# touch bb  
[root@www nfs1]# ll
-rw-r--r-- 1 nfsnobody nfsnobody 0 08-31 10:21 aa
-rw-r--r-- 1 root root 0 08-31 11:23 bb

说明:客户端以root 登录操作会压缩成root

#客户端操作: 

[lduan@www tmp]$ su - lduan  #切换用户  ldaun 的用户ID是500
[lduan@www tmp]$ cd /mnt/nfs1
[lduan@www nfs1]$ touch cc
[lduan@www nfs1]$ ll
-rw-r--r-- 1 nfsnobody nfsnobody 0 08-31 10:21 aa
-rw-r--r-- 1 root root 0 08-31 11:23 bb
-rw-rw-r-- 1 lduan lduan 0 08-31 11:27 cc

#服务器端操作:#服务端的zzhz 的用户ID也是500    文件变成了zzhz.

[root@cnetos68 桌面]# cat /etc/passwd   
zzhz:x:500:500:zjolzzhz:/home/zzhz:/bin/bash
[root@cnetos68 桌面]# ll /tmp/
-rw-r--r--. 1 nfsnobody nfsnobody 0 8月 31 10:21 aa
-rw-r--r--. 1 root root 0 8月 31 11:23 bb
-rw-rw-r--. 1 zzhz zzhz 0 8月 31 11:27 cc

说明: 服务端和客户端都是ID为500的账号,但账号名不一定。

#客户端操作:

[root@www ~]# useradd zjol
[zjol@www nfs1]$ cat /etc/passwd | grep zjol
zjol:x:501:501::/home/zjol:/bin/bash
[root@www ~]# su - zjol
[zjol@www ~]$ cd /mnt/nfs1
[zjol@www nfs1]$ touch dd
[zjol@www nfs1]$ ll
-rw-r--r-- 1 nfsnobody nfsnobody 0 08-31 10:21 aa
-rw-r--r-- 1 root root 0 08-31 11:23 bb
-rw-rw-r-- 1 lduan lduan 0 08-31 11:27 cc
-rw-rw-r-- 1 zjol zjol 0 08-31 11:46 dd
#服务器操作:

[root@cnetos68 桌面]# ll /tmp/
-rw-r--r--. 1 nfsnobody nfsnobody 0 8月 31 10:21 aa
-rw-r--r--. 1 root root 0 8月 31 11:23 bb
-rw-rw-r--. 1 zzhz zzhz 0 8月 31 11:27 cc
-rw-rw-r--. 1 501 501 0 8月 31 11:46 dd

说明:服务端没有这个ID,会显示客户端的501。

总结:服务器端会以客户端的用户UID与GID等身份来尝试读取服务器端的文件系统。那么就产生一个问题。如果客户端与服务器的用户身份不一致。

1.NFS server/NFS client 刚好有相同的账号与群组

则此时使用者可以直接以此账号的身份进行服务器所提供的文件系统之存取。

2.    NFS server 的 500这个 UID 账号对应为 zzhz,客户端500对应是lduan.

若 NFS 服务器上的 /etc/passwd 里面 UID 500 的使用者名称为 zzhz 时,则客户端的 lduan 可以存取服务器端的 zzhz这个使用者的档案喔!只因为 两者具有相同的 UID 而已。这就造成很大的问题了!因为没有人可以保证客户 端的 UID 所对应的账号会与服务器端相同, 那服务器所提供的数据不就可能会 被错误的使用者乱改?

3.    NFS server 并没有 501 .

这个 UID另一个极端的情况是,在服务器端并没有 501 这个 UID 的存在,则此时 zjol的身份在该目录下会被压缩成匿名者。但有时也会有特殊的情况,例如在服务器端分享 /tmp 的情况下,zjol的身份还是会保持 501 但建立的 各项数据在服务器端来看,就会属于无拥有者的资料。

4.如果使用者身份是 root 时
有个比较特殊的使用者,那就是每个 Linux 主机都有的 UID 为 0 的 root 。
想一想,如果客户端可以用 root 的身份去存取服务器端的文件系统时,那服务 器端的数据哪有什么保护性? 所以在预设的情况下, root 的身份会被主动的 压缩成为匿名者。

 

六、客户端挂载

 1.临时挂载    挂载命令mount带有很多参数 。自行参考。

 [root@www ~]# mount -t nfs 192.168.80.150:/tmp /mnt/nfs1     

2.我们知道开机就挂载的挂载点与相关参数是写入 /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.80.150:/fiel    /mount /nfs2

以下是NFS挂载参数。  mount的挂载参数参考其它说明。

① suid | nosuid : 当挂载的分区上面有任何SUID的二进制程序时,只要使用nosuid就可以取消SUID的功能

② rw | ro :可以指定文件系统是只读还是可读写。服务器可以提供读写,客户端可以仅允许只读。

③ dev | nodev : 一般只有/dev这个目录才会有特殊的设备,一般选择nodev

④ exec | noexec : 如果想要挂载是可执行的二进制文件,则选择exec,如果是类似与/home的数据分区,可以选择noexec即可

⑤ user | nouser : 最好不允许用户进行挂载和卸载,不用修改,默认一般是nouse 

⑥ fg | bg :若设置挂载的行为在前台执行可选择fg,此时mount会持续尝试挂载,直到成功或者  time out为止。若设置挂载的行为在后台执行可选择bg,此时mount在后台持续进行挂载,而不会影响前 台的运行,建议用bg。

⑦ soft | hard :如果是hard的方式,则当两者之间有一方脱机,则rpc会持续呼叫,直到对方恢复 连接为 止。如果是soft的方式,那rpc会在一方脱机后重复呼叫而非持续呼叫,建议用soft。

⑧ intr : 当使用上面的hard方式挂载时,若加上intr这个参数,则当rpc持续呼叫时,该次的呼叫是可以被中断的。

⑨ rsize | wsize: 读写的区块大写(这说的真扯淡,根本听不懂。),简单解释说就是这个值影响到了NFS文件系统的传输能力,值越大,则传输能力越强。注意,这个值不能设置的太大,达到网络传输的最大值为限。

 

3.客户端自动挂载。(类似光盘插入就挂载好了。但此类挂载更强。客户端进该文件夹才挂载。)

[zjol@www nfs2]$ cat /etc/auto.master 

# This is an automounter map and it has the following format
# key [ -mount-options-separated-by-comma ] location
# For details of the format look at autofs(5).
#
/misc          /etc/auto.misc
/nfsfile           /etc/auto.nfs          nfsifle 先创建  ,为挂载点,  auto.nfs 自定义文件

#/-          /etc/auto.nfs    不要目录

+auto.master

 

[root@www ~]# cp /etc/auto.misc    /etc/auto.nfs   #复制文件参考

[root@www ~]# cat /etc/auto.nfs
# This is an automounter map and it has the following format
# key [ -mount-options-separated-by-comma ] location
# Details may be found in the autofs(5) manpage

cd -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
nfs        -fstype=nfs,rw 192.168.80.150:/tmp     #nfs是虚拟文件,承接nfsfile挂载点。

#/nfs        -fstype=nfs,rw 192.168.80.150:/tmp #不要目录,直接cd /nfs


[root@www ~]# service autofs stop   #  注意,这个有个bug,不能使用restart .
停止 automount: [确定]

[root@www ~]# service autofs start
启动 automount: [确定]
[root@www ~]#

测试结果

[root@www ~]# df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda2 9920624 3528124 5880432 38% /
/dev/sda1 101086 11416 84451 12% /boot
tmpfs 517568 0 517568 0% /dev/shm
192.168.80.150:/tmp 9948032 3801728 5634304 41% /mnt/nfs1
[root@www ~]# cd /nfsfile/
[root@www nfsfile]# ll
没有文件
[root@www nfsfile]# cd nfs
[root@www nfs]# ll
-rw-r--r-- 1 nfsnobody nfsnobody 0 08-31 10:21 aa
-rw-r--r-- 1 root root 0 08-31 11:23 bb
-rw-rw-r-- 1 lduan lduan 0 08-31 11:27 cc
-rw-rw-r-- 1 zjol zjol 0 08-31 11:46 dd
[root@www nfs]# df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda2 9920624 3528124 5880432 38% /
/dev/sda1 101086 11416 84451 12% /boot
tmpfs 517568 0 517568 0% /dev/shm
192.168.80.150:/tmp 9948032 3801728 5634304 41% /mnt/nfs1
192.168.80.150:/tmp 9948032 3801728 5634304 41% /nfsfile/nfs

  

windows7 :在添加删除程序中添加NFS客户端。注意  win7专业版是没有的,旗舰版有。

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 

rpcinfo 命令说明

[root@www ~]# rpcinfo -p [IP|hostname]
[root@www ~]# rpcinfo -t|-u IP|hostname 程序名称
选项与参数:
-p :针对某 IP (未写则默认为本机) 显示出所有的 port 与 porgram 的信 息;
-t :针对某主机的某个程序检查其 TCP 封包所在的软件版本;
-u :针对某主机的某个程序检查其 UDP 封包所在的软件版本;

[root@cnetos68 桌面]# rpcinfo -p localhost
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
省略部分
100021 1 tcp 4001 nlockmgr
100021 3 tcp 4001 nlockmgr
100021 4 tcp 4001 nlockmgr
[root@cnetos68 桌面]# 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

 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 

 rpcinfo 命令说明

showmount [-ae] [hostname|IP]
选项与参数:
-a :显示当前主机与客户端的 NFS 连接共享的状态。
-e :显示某台主机的 /etc/exports 所分享的目录数据。

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

exportfs [-aruv]
选项与参数:
-a :全部挂载(或卸除) /etc/exports 文件中的设置
-r :重新挂载 /etc/exports 里面的设置,此外,亦同步更新 /etc/exports 及 /var/lib/nfs/xtab 的内容。
-u :卸除某一目录
-v :在 export 的时候,将分享的目录显示到屏幕上。

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

posted on 2018-08-30 15:44 yuanbangchen 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/Yuanbangchen/p/9560586.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值