NFS 服務(wù)

網(wǎng)絡(luò)文件系統(tǒng),英文Network File System(NFS)统捶。是由SUN公司研制的UNIX表示層協(xié)議(pressentation layer protocol)鸽素,能使使用者訪問網(wǎng)絡(luò)上別處的文件就像在使用自己的計(jì)算機(jī)一樣务甥。
它允許網(wǎng)絡(luò)中的計(jì)算機(jī)之間通過TCP/IP網(wǎng)絡(luò)共享資源。在NFS的應(yīng)用中呜袁,本地NFS的客戶端應(yīng)用可以透明地讀寫位于遠(yuǎn)端NFS服務(wù)器上的文件,就像訪問本地文件一樣简珠,也就是說客戶端PC可以掛載NFS服務(wù)器所提供的目錄并且掛載之后這個(gè)目錄看起來如同本地的磁盤分區(qū)一樣阶界,可以使用cp、cd聋庵、mv膘融、rm及df等與磁盤相關(guān)的命令。
它基于開放網(wǎng)絡(luò)運(yùn)算遠(yuǎn)程過程調(diào)用(ONC RPC)協(xié)議:一個(gè)開放祭玉、標(biāo)準(zhǔn)的RFC協(xié)議氧映,任何人或組織都可以依據(jù)標(biāo)準(zhǔn)實(shí)現(xiàn)它。

Port TCP UDP Description IANA status
2049 Yes, and SCTP Yes [Network File System] (NFS) Official

RPC

遠(yuǎn)程過程調(diào)用(英語:Remote Procedure Call脱货,縮寫為 RPC)是一個(gè)計(jì)算機(jī)通信協(xié)議岛都。該協(xié)議允許運(yùn)行于一臺(tái)計(jì)算機(jī)的程序調(diào)用另一個(gè)地址空間(通常為一個(gè)開放網(wǎng)絡(luò)的一臺(tái)計(jì)算機(jī))的子程序,而程序員就像調(diào)用本地程序一樣振峻,無需額外地為這個(gè)交互作用編程(無需關(guān)注細(xì)節(jié))疗绣。RPC是一種服務(wù)器-客戶端(Client/Server)模式,經(jīng)典實(shí)現(xiàn)是一個(gè)通過發(fā)送請(qǐng)求-接受回應(yīng)進(jìn)行信息交互的系統(tǒng)铺韧。

Port TCP UDP IANA status Description
111 Yes Yes Official [Open Network Computing Remote Procedure Call] (ONC RPC, sometimes referred to as Sun RPC)
NFSv4

受Andrew File System(AFS)和Server Message Block(SMB多矮,也稱為CIFS)的影響,第4版(2000年12月的RFC 3010; 2003年4月的RFC 3530和2015年3月的RFC 7530進(jìn)行了修訂)包括性能改進(jìn)塔逃,要求強(qiáng)大的安全性讯壶,并引入有狀態(tài)協(xié)議。在Sun Microsystems移交NFS協(xié)議的開發(fā)之后湾盗,第4版成為由Internet工程任務(wù)組(IETF)開發(fā)的第一個(gè)版本伏蚊。

與以前的版本相比,NFSv4的一大優(yōu)勢(shì)是僅使用一個(gè)IP端口2049來運(yùn)行該服務(wù)格粪,從而簡(jiǎn)化了跨防火墻使用協(xié)議的過程躏吊。也就意為著,NFSv4可以不再需要rpcbind(portmap)

紅帽7關(guān)于nfs的說明"8.6.7. Configuring an NFSv4-only Server"帐萎,明確可以不啟用rpcbind
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/storage_administration_guide/nfs-serverconfig#nfs4-only
By default, the NFS server supports NFSv2, NFSv3, and NFSv4 connections in Red Hat Enterprise Linux 7. However, you can also configure NFS to support only NFS version 4.0 and later. This minimizes the number of open ports and running services on the system, because NFSv4 does not require the rpcbind service to listen on the network.

紅帽8關(guān)于nfs的說明"3.14. Configuring an NFSv4-only server"比伏,也明確可以不啟用rpcbind
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/deploying_different_types_of_servers/exporting-nfs-shares_deploying-different-types-of-servers

nfs1.png

先說NFSv4以下的版本
由于NFSv2或NFSv3,使用了多個(gè)守護(hù)進(jìn)程(lockd, rpc.statd, rpc.mountd, ...)提供不同的功能疆导,每個(gè)進(jìn)程都要監(jiān)聽一個(gè)端口赁项,且端口不是固定的,這樣就要一個(gè)服務(wù)來提供知名端口(111)來響應(yīng)Client的訪問澈段,并返回給客戶端要訪問服務(wù)的當(dāng)前端口悠菜,這個(gè)服務(wù)就是rpcbind


  • 安裝

    # yum install rpcbind nfs-utils
    • rpcbind
      Rpcbind實(shí)用程序是將RPC程序號(hào)轉(zhuǎn)換為通用地址的服務(wù)器。
      接受來自本地RPC服務(wù)的端口預(yù)約注冊(cè)败富。然后使這些端口可用(或通告)悔醋,以便相應(yīng)的遠(yuǎn)程RPC服務(wù)可以訪問它們。 Rpcbind服務(wù)響應(yīng)對(duì)RPC服務(wù)的請(qǐng)求兽叮,并建立與請(qǐng)求的RPC服務(wù)的連接篙顺。
      一般安裝完成后會(huì),自動(dòng)自動(dòng)運(yùn)行充择,并加入開機(jī)啟動(dòng)中
    • nfs-utils
      NFS utils 是支持NFS服務(wù)的客戶端和服務(wù)程序

  • nfs服務(wù)器

    • a) 共享配置(有兩種方法可以在NFS服務(wù)器上配置exports)
        1. /etc/exports
          export host1(options1) host2(options2) host3(options3)
        1. /usr/sbin/exportfs
          exportfs命令允許root用戶有選擇地導(dǎo)出或取消導(dǎo)出目錄德玫,而無需重新啟動(dòng)NFS服務(wù)。提供適當(dāng)?shù)倪x項(xiàng)后椎麦,/usr/sbin/exportfs命令會(huì)將導(dǎo)出的文件系統(tǒng)寫入/var/lib/nfs/xtab宰僧。由于rpc.mountd在確定對(duì)文件系統(tǒng)的訪問特權(quán)時(shí)會(huì)引用xtab文件,因此對(duì)導(dǎo)出文件系統(tǒng)列表的更改將立即生效
    • b) 相關(guān)
        1. 分享資源的登錄記錄:/var/lib/nfs/*tab
          在 NFS 服務(wù)器的登錄文件都放置到 /var/lib/nfs/ 目錄里面观挎,在該目錄下有兩個(gè)比較重要的登錄檔琴儿, 一個(gè)是 etab ,主要記錄了 NFS 所分享出來的目錄的完整權(quán)限設(shè)定值嘁捷;另一個(gè) xtab 則記錄曾經(jīng)鏈接到此 NFS 服務(wù)器的相關(guān)客戶端數(shù)據(jù)造成。
        1. 客戶端查詢服務(wù)器分享資源的指令:/usr/sbin/showmount
          這是另一個(gè)重要的 NFS 指令。exportfs 是用在 NFS Server 端雄嚣,而 showmount 則主要用在 Client 端晒屎。這個(gè) showmount 可以用來察看 NFS 分享出來的目錄資源喔喘蟆!

exports文件 options 參數(shù)

參數(shù) 功能說明
rw 可讀寫的權(quán)限
ro 只讀的權(quán)限
sync(同步) 資料同步寫入到內(nèi)存與硬盤中(慢,不容易丟數(shù)據(jù))
async(異步) 資料會(huì)暫存于內(nèi)存當(dāng)中鼓鲁,而不是寫入硬盤(快蕴轨,容易丟數(shù)據(jù))
no_root_squash 客戶端用root用戶訪問該共享文件夾時(shí), root用戶不會(huì)映射成匿名用戶(極不安全骇吭,不建議使用)
root_squash 客戶端用root用戶訪問該共享文件夾是橙弱,將root用戶映射為匿名用戶
all_squash 不論登入NFS的使用者身份是誰,他的身份都會(huì)被壓縮成匿名用戶(nfsnobody)
anonuid=xxx 指定NFS服務(wù)器的匿名用戶UID
anongid=xxx 指定NFS服務(wù)器的匿名用戶GID
insecure NFS通過1024以上的端口發(fā)送
secure NFS通過1024以下的安全TCP/IP端口發(fā)送
hide 在NFS共享目錄中共享其子目錄
no_hide 在NFS共享目錄中共享其子目錄
wdelay 如果多個(gè)用戶寫入NFS目錄燥狰,則歸組寫入(默認(rèn))
no_wdelay 如果多個(gè)用戶寫入NFS目錄棘脐,則立即寫入,當(dāng)使用async時(shí)龙致,無需此設(shè)置
subtree_check 在共享/usr/bin之類的子目錄時(shí)蛀缝,強(qiáng)制NFS檢查父目錄的權(quán)限(默認(rèn))
no_subtree_check 和上面相對(duì),不檢查父目錄權(quán)限

exports文件 host 參數(shù)

類型 說明 示例
single host 單個(gè)主機(jī) ftp.abc.com
192.168.2.10
ipv6地址:::1
IP networks 一個(gè)網(wǎng)段 192.168.2.0/255.255.255.0
192.168.2.0/24
wildcards 機(jī)器名稱可以包含通配符*和净当?
也可以在[方括號(hào)]中包含字符類列表内斯。
*.abc.com
netgroups NIS網(wǎng)絡(luò)組可以以@group的形式給出蕴潦。
在檢查成員資格時(shí),
僅考慮組成員的主機(jī)部分像啼。
anonymous 使用一個(gè)*字符(不要與上面的通配符混淆)
將匹配任意客戶端
*

/etc/exports的配置

# vim /etc/exports
"root 保有 root 的權(quán)限"
/tmp          *(rw,no_root_squash) 
"同一目錄針對(duì)不同范圍開放不同權(quán)限, 通配符僅能用在主機(jī)名的分辨上面,IP 或網(wǎng)段就只能用 192.168.100.0/24 的狀況潭苞,
 不可以使用 192.168.100.* 喔忽冻!"
/home/public  192.168.100.0/24(rw) *(ro) 
"僅給某個(gè)單一主機(jī)使用的目錄設(shè)定, 只有這部機(jī)器才能對(duì) /home/test 這個(gè)目錄進(jìn)行存取喔!"
/home/test    192.168.100.10(rw)192.168.100.10 
 "開放匿名登錄的情況, 特別注意到那個(gè) all_squash 與 anonuid, anongid 的功能此疹!如此一來僧诚,
當(dāng) ftp.abc.com 登入這部 NFS 主機(jī),并且在 /home/linux 寫入檔案時(shí)蝗碎,該檔案的所有人與所有群組湖笨,
就會(huì)變成 /etc/passwd 里面對(duì)應(yīng)的 UID 為 45 的那個(gè)身份的使用者了!"
/home/linux   *.abc.com(rw,all_squash,anonuid=45,anongid=45)

啟動(dòng)服務(wù)

先決條件
對(duì)于支持NFSv2或NFSv3連接的服務(wù)器蹦骑,必須正在運(yùn)行rpcbind [1]服務(wù)慈省。要驗(yàn)證rpcbind是否處于活動(dòng)狀態(tài),請(qǐng)使用以下命令:


[root@localhost ~]# systemctl status rpcbind
● rpcbind.service - RPC bind service
   Loaded: loaded (/usr/lib/systemd/system/rpcbind.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2019-10-16 22:34:53 CST; 59min ago
  Process: 9399 ExecStart=/sbin/rpcbind -w $RPCBIND_ARGS (code=exited, status=0/SUCCESS)
 Main PID: 9400 (rpcbind)
   CGroup: /system.slice/rpcbind.service
           └─9400 /sbin/rpcbind -w

Oct 16 22:34:53 localhost.localdomain systemd[1]: Starting RPC bind service...
Oct 16 22:34:53 localhost.localdomain systemd[1]: Started RPC bind service.

運(yùn)行中眠菇,下面來看一下rpcbind的運(yùn)行情況

[root@localhost ~]# rpcinfo 
   program version netid     address                service    owner
    100000    4    tcp6      ::.0.111               portmapper superuser
    100000    3    tcp6      ::.0.111               portmapper superuser
    100000    4    udp6      ::.0.111               portmapper superuser
    100000    3    udp6      ::.0.111               portmapper superuser
    100000    4    tcp       0.0.0.0.0.111          portmapper superuser
    100000    3    tcp       0.0.0.0.0.111          portmapper superuser
    100000    2    tcp       0.0.0.0.0.111          portmapper superuser
    100000    4    udp       0.0.0.0.0.111          portmapper superuser
    100000    3    udp       0.0.0.0.0.111          portmapper superuser
    100000    2    udp       0.0.0.0.0.111          portmapper superuser
    100000    4    local     /var/run/rpcbind.sock  portmapper superuser
    100000    3    local     /var/run/rpcbind.sock  portmapper superuser
[root@localhost ~]# ss -tunlp |grep rpcbind
udp    UNCONN     0      0         *:946                   *:*                   users:(("rpcbind",pid=9675,fd=10))
udp    UNCONN     0      0         *:111                   *:*                   users:(("rpcbind",pid=9675,fd=5),("systemd",pid=1,fd=30))
udp    UNCONN     0      0        :::946                  :::*                   users:(("rpcbind",pid=9675,fd=11))
udp    UNCONN     0      0        :::111                  :::*                   users:(("rpcbind",pid=9675,fd=7),("systemd",pid=1,fd=33))
tcp    LISTEN     0      128       *:111                   *:*                   users:(("rpcbind",pid=9675,fd=4),("systemd",pid=1,fd=29))
tcp    LISTEN     0      128      :::111                  :::*                   users:(("rpcbind",pid=9675,fd=6),("systemd",pid=1,fd=32))
[root@localhost ~]#

這里可以看到它監(jiān)聽了111/TCP, 111/UDP
下面來啟動(dòng)nfs

[root@localhost ~]# systemctl start nfs.service 
[root@localhost ~]# netstat -tunlp |grep -E "rpc|2049"
tcp        0      0 0.0.0.0:20048           0.0.0.0:*               LISTEN      9707/rpc.mountd     
tcp        0      0 0.0.0.0:42111           0.0.0.0:*               LISTEN      9571/rpc.statd      
tcp        0      0 0.0.0.0:2049            0.0.0.0:*               LISTEN      -                   
tcp6       0      0 :::54383                :::*                    LISTEN      9571/rpc.statd      
tcp6       0      0 :::20048                :::*                    LISTEN      9707/rpc.mountd     
tcp6       0      0 :::2049                 :::*                    LISTEN      -                   
udp        0      0 0.0.0.0:946             0.0.0.0:*                           9675/rpcbind        
udp        0      0 0.0.0.0:53756           0.0.0.0:*                           9571/rpc.statd      
udp        0      0 0.0.0.0:2049            0.0.0.0:*                           -                   
udp        0      0 0.0.0.0:20048           0.0.0.0:*                           9707/rpc.mountd     
udp        0      0 127.0.0.1:843           0.0.0.0:*                           9571/rpc.statd      
udp6       0      0 :::946                  :::*                                9675/rpcbind        
udp6       0      0 :::2049                 :::*                                -                   
udp6       0      0 :::20048                :::*                                9707/rpc.mountd     
udp6       0      0 :::36187                :::*                                9571/rpc.statd      
[root@localhost ~]# rpcinfo -s localhost
   program version(s) netid(s)                         service     owner
    100000  2,3,4     local,udp,tcp,udp6,tcp6          portmapper  superuser
    100005  3,2,1     tcp6,udp6,tcp,udp                mountd      superuser
    100003  4,3       udp6,tcp6,udp,tcp                nfs         superuser
    100227  3         udp6,tcp6,udp,tcp                nfs_acl     superuser
    100021  4,3,1     tcp6,udp6,tcp,udp                nlockmgr    superuser
" 使用-s 以簡(jiǎn)潔的格式顯示边败,信息太長(zhǎng)了,本機(jī)查看localhost可省
  另外捎废,這里可以看出nfs支持的版本信息"

查看NFS的共享情況

showmount [-ae] [hostname|IP]
選項(xiàng)與參數(shù):
-a :顯示目前主機(jī)與客戶端的 NFS 聯(lián)機(jī)分享的狀態(tài)笑窜;
-e :顯示某部主機(jī)的 /etc/exports 所分享的目錄數(shù)據(jù)。

還可以查看 /var/lib/nfs/etab文件登疗,查看exports的詳細(xì)共享參數(shù)

[root@localhost ~]# cat /etc/exports
/data/pub   *(ro)
[root@localhost ~]# systemctl start nfs.service 
[root@localhost ~]# showmount -e
Export list for localhost.localdomain:
/data/pub *
[root@localhost ~]# cat /var/lib/nfs/etab 
/data/pub   *(ro,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,ro,secure,root_squash,no_all_squash)
# 上面是同一行排截,可以看出除了 rw, sync, root_squash 等等,
# 其實(shí)還有 anonuid 及 anongid 等等的設(shè)定!

共享控制

exportfs [-aruv]
選項(xiàng)與參數(shù):
-a :全部掛載(或卸除) /etc/exports 檔案內(nèi)的設(shè)定
-r :重新掛載 /etc/exports 里面的設(shè)定匾寝,
???????此外搬葬,亦同步更新 /etc/exports及 /var/lib/nfs/xtab 的內(nèi)容!
-u :卸除某一目錄
-v :在 export 的時(shí)候艳悔,將分享的目錄顯示到屏幕上急凰!

[root@localhost ~]# vim /etc/exports
[root@localhost ~]# cat /etc/exports
/data/pub   *(ro)
/data/mydata    192.168.1.10(rw,no_root_squash)
[root@localhost ~]# showmount -e
Export list for localhost.localdomain:
/data/pub *
[root@localhost ~]# exportfs -arv
exporting 192.168.1.10:/data/mydata
exporting *:/data/pub
[root@localhost ~]# showmount -e
Export list for localhost.localdomain:
/data/pub    *
/data/mydata 192.168.1.10
[root@localhost ~]# cat /var/lib/nfs/etab 
/data/mydata    192.168.1.10(rw,sync,wdelay,hide,nocrossmnt,secure,no_root_squash,no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,secure,no_root_squash,no_all_squash)
/data/pub   *(ro,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,ro,secure,root_squash,no_all_squash)
[root@localhost ~]# 

======================================

NFSv4

之前說,在V4版本中可以不使用rpcbind(portmap)猜年,測(cè)試

1. 關(guān)閉rpcbind服務(wù)

[root@localhost ~]# systemctl mask --now rpc-statd.service rpcbind.service rpcbind.socket

[root@localhost ~]# systemctl mask --now rpc-statd.service rpcbind.service rpcbind.socket
Created symlink from /etc/systemd/system/rpc-statd.service to /dev/null.
Created symlink from /etc/systemd/system/rpcbind.service to /dev/null.
Created symlink from /etc/systemd/system/rpcbind.socket to /dev/null.

2. 編輯配置文件

?2.1 方法一

??[root@localhost ~]# vim /etc/sysconfig/nfs

RPCNFSDARGS="-N 2 -N 3"
[root@localhost ~]# vim /etc/sysconfig/nfs 
[root@localhost ~]# systemctl restart nfs-server
[root@localhost ~]# netstat -tul
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:mysql           0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:mountd          0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN     
tcp        0      0 localhost:smtp          0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:nfs             0.0.0.0:*               LISTEN     
tcp6       0      0 [::]:mountd             [::]:*                  LISTEN     
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN     
tcp6       0      0 localhost:smtp          [::]:*                  LISTEN     
tcp6       0      0 [::]:nfs                [::]:*                  LISTEN     
udp        0      0 0.0.0.0:nfs             0.0.0.0:*                          
udp        0      0 0.0.0.0:mountd          0.0.0.0:*                          
udp        0      0 0.0.0.0:mountd          0.0.0.0:*                          
udp        0      0 0.0.0.0:mountd          0.0.0.0:*                          
udp6       0      0 [::]:nfs                [::]:*                             
udp6       0      0 [::]:tftp               [::]:*                             
udp6       0      0 [::]:mountd             [::]:*                             
udp6       0      0 [::]:mountd             [::]:*                             
udp6       0      0 [::]:mountd             [::]:* 
??2.2 方法二

???[root@localhost ~]# vim /etc/nfs.conf

[nfsd]

vers2=no
vers3=no
[root@localhost ~]# vim /etc/nfs.conf 
[root@localhost ~]# systemctl restart nfs-server
[root@localhost ~]# netstat -tul
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:mysql           0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN     
tcp        0      0 localhost:smtp          0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:nfs             0.0.0.0:*               LISTEN     
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN     
tcp6       0      0 localhost:smtp          [::]:*                  LISTEN     
tcp6       0      0 [::]:nfs                [::]:*                  LISTEN     
udp        0      0 0.0.0.0:nfs             0.0.0.0:*                          
udp6       0      0 [::]:nfs                [::]:*                             
udp6       0      0 [::]:tftp               [::]:* 

建議使用方法二抡锈,這種會(huì)少啟動(dòng)一個(gè)mountd的進(jìn)程

3. 重啟服務(wù)

# systemctl restart nfs-server

特別注意:使用NFSv4 only的服務(wù)后,不能再使用“showmount”命令乔外,替代命令還沒有找到

=====================================

客戶端

手動(dòng)掛載 NFS 服務(wù)器分享的資源
你要如何掛載 NFS 服務(wù)器所提供的文件系統(tǒng)呢床三?基本上,可以這樣做:
(NFSv2 v3)

  1. 確認(rèn)本地端已經(jīng)啟動(dòng)了 rpcbind 服務(wù)杨幼,nfs-utils(這個(gè)工具包包含了客戶端和服務(wù)端)撇簿。
  2. 查看 NFS 服務(wù)器分享的目錄有哪些,并了解我們是否可以使用 showmount
  3. 在本地端建立掛載點(diǎn)目錄 (mkdir)差购;
  4. 利用 mount 將遠(yuǎn)程主機(jī)直接掛載到相關(guān)目錄四瘫。

(NFSv4)

  1. 安裝nfs-utils
  2. 在本地建立掛載點(diǎn)(mkdir)
  3. 利用mount掛載

mount -t nfs 192.168.1.254:/ /mnt/pub

[root@localhost ~]# cd /mnt/pub/data/ 
mydata/ pub/            <---    "直接將服務(wù)器上的授權(quán)可掛載的目錄都掛載上來了"
[root@localhost ~]# cat /proc/fs/nfsfs/
servers  volumes
[root@localhost ~]# cat /proc/fs/nfsfs/servers 
NV SERVER   PORT USE HOSTNAME
v4 c0a8020a  801   2 192.168.1.254
[root@localhost ~]# mount |tail -1
192.168.1.254:/ on /mnt/pub type nfs4 (rw,relatime,vers=4.1,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.10,local_lock=none,addr=192.168.1.254)

這里可看到使用的是V4版本,而且可以直接掛載server:/根欲逃,Centos 7 中默認(rèn)使用的是V4版本要使用V2找蜜、V3
mount -t nfs -o vers=3 192.168.2.10:/data/pub /mnt/pub
前提是:rpcbind服務(wù)開啟,才能使用V3

[root@localhost ~]# cat /proc/fs/nfsfs/servers 
NV SERVER   PORT USE HOSTNAME
v3 c0a8020a  801   1 192.168.1.254
[root@localhost ~]# mount |tail -1
192.168.1.254:/data/pub on /mnt/pub type nfs (rw,relatime,vers=3,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.1.254,mountvers=3,mountport=20048,mountproto=udp,local_lock=none,addr=192.168.1.254)

==================================

自動(dòng)掛載 autofs 的使用

這個(gè)鳥哥 寫得很好稳析,引用

在一般 NFS 文件系統(tǒng)的使用情況中洗做,如果客戶端要使用服務(wù)器端所提供的 NFS 文件系統(tǒng)時(shí),要嘛就是得在 /etc/rc.d/rc.local 當(dāng)中設(shè)定開機(jī)時(shí)掛載彰居,要嘛就得要登入系統(tǒng)后手動(dòng)利用 mount 來掛載诚纸。 此外,客戶端得要預(yù)先手動(dòng)的建立好掛載點(diǎn)目錄陈惰,然后掛載上來畦徘。但是這樣的使用情況恐怕有點(diǎn)小問題。


NFS 文件系統(tǒng)與網(wǎng)絡(luò)聯(lián)機(jī)的困擾:
我們知道 NFS 服務(wù)器與客戶端的聯(lián)機(jī)或許不會(huì)永遠(yuǎn)存在奴潘,而 RPC 這個(gè)服務(wù)又挺討厭的旧烧,如果掛載了 NFS 服務(wù)器后,任何一方脫機(jī)都可能造成另外一方老是在等待逾時(shí)~而且画髓,掛載的 NFS 文件系統(tǒng)可能又不是常常被使用掘剪,但若不掛載的話,有時(shí)候緊急要使用時(shí)又得通知系統(tǒng)管理員奈虾, 這又很不方便...岸崴廉赔!好討厭的感覺啊~@_@

所以,讓我們換個(gè)思考的角度來討論一下使用 NFS 的情境:

  • 可不可以讓客戶端在有使用到 NFS 文件系統(tǒng)的需求時(shí)才讓系統(tǒng)自動(dòng)掛載匾鸥?
  • 當(dāng) NFS 文件系統(tǒng)使用完畢后蜡塌,可不可以讓 NFS 自動(dòng)卸除,以避免可能的 RPC 錯(cuò)誤勿负?

如果能達(dá)到上述的功能馏艾,那就太完美啦!有沒有這東西呢奴愉?有的琅摩,在現(xiàn)在的 Linux 環(huán)境下這是可以達(dá)成的理想!用的就是 autofs 這個(gè)服務(wù)啦锭硼!


autofs 的設(shè)定概念:

autofs 這個(gè)服務(wù)在客戶端計(jì)算機(jī)上面房资,會(huì)持續(xù)的偵測(cè)某個(gè)指定的目錄, 并預(yù)先設(shè)定當(dāng)使用到該目錄下的某個(gè)次目錄時(shí)檀头,將會(huì)取得來自服務(wù)器端的 NFS 文件系統(tǒng)資源轰异,并進(jìn)行自動(dòng)掛載的動(dòng)作。 講這樣或許你有點(diǎn)模糊暑始,讓我們拿底下這個(gè)圖示來看看:


autofs.gif

如上圖所示搭独,我們的 autofs 主要配置文件為 /etc/auto.master,這個(gè)檔案的內(nèi)容很簡(jiǎn)單蒋荚, 如上所示戳稽,我只要定義出最上層目錄 (/home/nfsfile) 即可馆蠕,這個(gè)目錄就是 autofs 會(huì)一直持續(xù)偵測(cè)的目錄啦期升。 至于后續(xù)的檔案則是該目錄底下各次目錄的對(duì)應(yīng)。在 /etc/auto.nfs (這個(gè)檔案的檔名可自定義) 里面則可以定義出每個(gè)次目錄所欲掛載的遠(yuǎn)程服務(wù)器的 NFS 目錄資源互躬!

舉例來說:『當(dāng)我們?cè)诳蛻舳艘褂?/home/nfsfile/public 的數(shù)據(jù)時(shí)播赁,此時(shí) autofs 才會(huì)去 192.168.100.254 服務(wù)器上掛載 /home/public !』且『當(dāng)隔了 5 分鐘沒有使用該目錄下的數(shù)據(jù)后吼渡,則客戶端系統(tǒng)將會(huì)主動(dòng)的卸除 /home/nfsfile/public 』容为。

很不錯(cuò)用的一個(gè)工具吧!因?yàn)橛杏玫椒?wù)器的數(shù)據(jù)時(shí)才自動(dòng)掛載寺酪,沒有使用了就會(huì)自動(dòng)卸除坎背! 而不是傳統(tǒng)的情況一直是掛載的!既然這么好用寄雀,那就讓我們實(shí)際來操演一下:


  • 建立主配置文件 /etc/auto.master 得滤,并指定偵測(cè)的特定目錄
    這個(gè)主要配置文件的內(nèi)容很簡(jiǎn)單,只要有要被持續(xù)偵測(cè)的目錄及『數(shù)據(jù)對(duì)應(yīng)文件』即可盒犹。 那個(gè)數(shù)據(jù)對(duì)應(yīng)文件的文件名是可以自行設(shè)定的懂更,在鳥哥這個(gè)例子當(dāng)中我使用 /etc/auto.nfs 來命名眨业。
[root@clientlinux ~]# vim /etc/auto.master
/home/nfsfile  /etc/auto.nfs

上述數(shù)據(jù)中比較需要注意的是,那個(gè) /home/nfsfile 目錄不需要存在沮协,因?yàn)?autofs 會(huì)主動(dòng)的建立該目錄龄捡! 如果你建立了,可能反而會(huì)出問題~因此慷暂,先確定一下沒有該目錄吧聘殖!


  • 建立數(shù)據(jù)對(duì)應(yīng)文件內(nèi) (/etc/auto.nfs) 的掛載信息與服務(wù)器對(duì)應(yīng)資源
    剛剛我們所指定的 /etc/auto.nfs 是自行設(shè)定的,所以這個(gè)檔案是不存在的行瑞。那么這個(gè)檔案的格式是如何呢就斤?你可以這樣看:
[本地端次目錄]  [-掛載參數(shù)]  [服務(wù)器所提供的目錄]
選項(xiàng)與參數(shù):
[本地端次目錄] :指的就是在 /etc/auto.master 內(nèi)指定的目錄之次目錄
[-掛載參數(shù)]    :就是前一小節(jié)提到的 rw,bg,soft 等等的參數(shù)啦!可有可無蘑辑;
[服務(wù)器所提供的目錄] :例如 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
# 參數(shù)部分洋机,只要最前面加個(gè) - 符號(hào)即可!
參數(shù) 參數(shù)功能 預(yù)設(shè)參數(shù)
fg
bg
當(dāng)執(zhí)行掛載時(shí)洋魂,該掛載的行為會(huì)在前景 (fg) 還是在背景 (bg) 執(zhí)行绷旗? 若在前景執(zhí)行時(shí),則 mount 會(huì)持續(xù)嘗試掛載副砍,直到成功或 time out 為止衔肢,若為背景執(zhí)行, 則 mount 會(huì)在背景持續(xù)多次進(jìn)行 mount 豁翎,而不會(huì)影響到前景的程序操作角骤。 如果你的網(wǎng)絡(luò)聯(lián)機(jī)有點(diǎn)不穩(wěn)定,或是服務(wù)器常常需要開關(guān)機(jī)心剥,那建議使用 bg 比較妥當(dāng)邦尊。 fg
soft
hard
如果是 hard 的情況,則當(dāng)兩者之間有任何一部主機(jī)脫機(jī)优烧,則 RPC 會(huì)持續(xù)的呼叫蝉揍,直到對(duì)方恢復(fù)聯(lián)機(jī)為止。如果是 soft 的話畦娄,那 RPC 會(huì)在 time out 后『重復(fù)』呼叫又沾,而非『持續(xù)』呼叫, 因此系統(tǒng)的延遲會(huì)比較不這么明顯熙卡。同上杖刷,如果你的服務(wù)器可能開開關(guān)關(guān),建議用 soft 喔驳癌! hard
intr 當(dāng)你使用上頭提到的 hard 方式掛載時(shí)滑燃,若加上 intr 這個(gè)參數(shù), 則當(dāng) RPC 持續(xù)呼叫中喂柒,該次的呼叫是可以被中斷的 (interrupted)不瓶。 沒有
rsize
wsize
讀出(rsize)與寫入(wsize)的區(qū)塊大小 (block size)禾嫉。 這個(gè)設(shè)定值可以影響客戶端與服務(wù)器端傳輸數(shù)據(jù)的緩沖記憶容量。一般來說蚊丐, 如果在局域網(wǎng)絡(luò)內(nèi) (LAN) 熙参,并且客戶端與服務(wù)器端都具有足夠的內(nèi)存,那這個(gè)值可以設(shè)定大一點(diǎn)麦备, 比如說 32768 (bytes) 等孽椰,提升緩沖記憶區(qū)塊將可提升 NFS 文件系統(tǒng)的傳輸能力! 但要注意設(shè)定的值也不要太大凛篙,最好是達(dá)到網(wǎng)絡(luò)能夠傳輸?shù)淖畲笾禐橄蕖?/td> rsize=1024
wsize=1024

這樣就可以建立對(duì)應(yīng)了黍匾!要注意的是,那些 /home/nfsfile/public 是不需要事先建立的呛梆! 咱們的 autofs 會(huì)事情況來處理喔锐涯!好了,接下來讓我們看看如何實(shí)際運(yùn)作吧填物!


  • 實(shí)際運(yùn)作與觀察
    配置文件設(shè)定妥當(dāng)后纹腌,當(dāng)然就是要啟動(dòng) autofs 啦!
[root@clientlinux ~]# /etc/init.d/autofs stop
[root@clientlinux ~]# /etc/init.d/autofs start
# 很奇怪滞磺!非常怪肠缔!CentOS 6.x 的 autofs 使用 restart 會(huì)失效变隔!所以鳥哥才進(jìn)行兩次

假設(shè)你目前并沒有掛載任何來自 192.168.100.254 這部 NFS 服務(wù)器的資源目錄肚吏。好了轿偎, 那讓我們實(shí)際來觀察看看幾個(gè)重要的數(shù)據(jù)吧!先看看 /home/nfsfile 會(huì)不會(huì)主動(dòng)的被建立阅茶? 然后蛛枚,如果我要進(jìn)入 /home/nfsfile/public 時(shí),文件系統(tǒng)會(huì)如何變化呢目派?

[root@clientlinux ~]# ll -d /home/nfsfile
drwxr-xr-x. 2 root root 0 2011-07-28 00:07 /home/nfsfile
# 仔細(xì)看坤候,妳會(huì)發(fā)現(xiàn) /home/nfsfile 容量是 0 喔胁赢!那是正常的企蹭!因?yàn)槭?autofs 建立的

[root@clientlinux ~]# cd /home/nfsfile/public
[root@clientlinux public]# mount | grep nfsfile
192.168.100.254:/home/public on /home/nfsfile/public type nfs (rw,soft,rsize=32768,
wsize=32768,sloppy,vers=4,addr=192.168.100.254,clientaddr=192.168.100.10)
# 上面的輸出是同一行!瞧智末!突然出現(xiàn)這個(gè)玩意兒谅摄!因?yàn)槭亲詣?dòng)掛載的嘛!

[root@clientlinux public]# df  /home/nfsfile/public
文件系統(tǒng)               1K-區(qū)段      已用     可用 已用% 掛載點(diǎn)
192.168.100.254:/home/public
                       7104640    143104   6607040   3% /home/nfsfile/public
# 檔案的掛載也出現(xiàn)沒錯(cuò)系馆!

呵呵送漠!真是好啊由蘑!如此一來闽寡,如果真的有需要用到該目錄時(shí)代兵,系統(tǒng)才會(huì)去相對(duì)的服務(wù)器上面掛載! 若是一陣子沒有使用爷狈,那么該目錄就會(huì)被卸除呢植影!這樣就減少了很多不必要的使用時(shí)機(jī)啦!還不錯(cuò)用吧涎永! _


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末思币,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子羡微,更是在濱河造成了極大的恐慌谷饿,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件妈倔,死亡現(xiàn)場(chǎng)離奇詭異博投,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)盯蝴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門贬堵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人结洼,你說我怎么就攤上這事黎做。” “怎么了松忍?”我有些...
    開封第一講書人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵蒸殿,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我鸣峭,道長(zhǎng)宏所,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任摊溶,我火速辦了婚禮爬骤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘莫换。我一直安慰自己霞玄,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開白布拉岁。 她就那樣靜靜地躺著坷剧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪喊暖。 梳的紋絲不亂的頭發(fā)上惫企,一...
    開封第一講書人閱讀 51,679評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音陵叽,去河邊找鬼狞尔。 笑死丛版,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的偏序。 我是一名探鬼主播硼婿,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼禽车!你這毒婦竟也來了寇漫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤殉摔,失蹤者是張志新(化名)和其女友劉穎州胳,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體逸月,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡栓撞,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了碗硬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瓤湘。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖恩尾,靈堂內(nèi)的尸體忽然破棺而出弛说,到底是詐尸還是另有隱情,我是刑警寧澤翰意,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布木人,位于F島的核電站,受9級(jí)特大地震影響冀偶,放射性物質(zhì)發(fā)生泄漏醒第。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一进鸠、第九天 我趴在偏房一處隱蔽的房頂上張望稠曼。 院中可真熱鬧,春花似錦客年、人聲如沸霞幅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蝗岖。三九已至,卻和暖如春榔至,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背欺劳。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來泰國(guó)打工唧取, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留铅鲤,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓枫弟,卻偏偏與公主長(zhǎng)得像邢享,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子淡诗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容