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 的時候,將分享的目錄顯示到屏幕上。

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

相關文章
相關標籤/搜索