NFS服务器详解

1、NFS服务简介node

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

由于 NFS 支持的功能至关的多,而不一样的功能都会使用不一样的程序来启动, 每启动一个功能就会启用一些端口来传输数据,所以, NFS 的功能所对应的端口才没有固定住, 而是随机取用一些未被使用的小于 1024 的端口来做为传输之用。linux

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

因此你要注意,要启动 NFS 以前,RPC 就要先启动了,不然 NFS 会没法向 RPC 注册。 另外,RPC 若从新启动时,本来注册的数据会不见,所以 RPC 从新启动后,它管理的全部服务都须要从新启动来从新向 RPC 注册。windows

当客户端有 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 的一种。bash

咱们如今知道 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 那几个权限啦) app

的认证程序!他会去读 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 一样的,这个功能必需要在服务器端与客户端都启动才会生 效。

 

2、所须要的软件及软件结构

要设定好 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 ~]#

 

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


[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

 

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

/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

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

 

 [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 的身份会被主动的 压缩成为匿名者。

 

6、客户端挂载

 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 的时候,将分享的目录显示到屏幕上。

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

相关文章
相关标签/搜索