NFS網路檔案共享服務的配置和排錯總結

科技小先鋒發表於2017-11-15

1.什麼是NFS?

NFS,全名叫Network File System,中文叫網路檔案系統,是Linux、UNIX系統的分散式檔案系統的一個組成部分,可實現在不同網路上共享遠端檔案系統。NFS由Sun公 司開發,目前已經成為檔案服務的一種標準之一。其最大的功能就是可以通過網路,讓不同作業系統的計算機可以共享資料, 所以可以把NFS看做是一個檔案伺服器。NFS缺點是其讀寫效能比本地硬碟要差一些

2.使用yum安裝nfs-utils、rpcbind

實驗環境

centos 6.6

nfs-server    10.0.0.130

lamp-client  10.0.0.137

lnmp-client  10.0.0.138

3.nfs服務端軟體安裝

[root@nfs-server ~]# yum -y install nfs-utils rpcbind   

建立共享資料夾

[root@nfs-server ~]# mkdir -p {/data/r_shared,/data/w_shared}

檢視檔案是否建立成功

[root@nfs-server data]# ll

總用量 8

drwxr-xr-x 2 nfsnobody root 4096 4月  23 15:13 r_shared

drwxr-xr-x 2 nfsnobody root 4096 4月  23 15:24 w_shared

[root@nfs-server data]# 

給檔案授權

[root@nfs-server data]# chown -R nfsnobody  r_shared w_shared

[root@nfs-server data]# ll 

總用量 8

drwxr-xr-x 2 nfsnobody root 4096 4月  23 15:13 r_shared

drwxr-xr-x 2 nfsnobody root 4096 4月  23 15:24 w_shared

[root@nfs-server data]#

4.啟動rpcbind、nfs

[root@nfs-server ~]# /etc/init.d/rpcbind start 

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

[root@nfs-server ~]# /etc/init.d/nfs status 

rpc.svcgssd 已停

rpc.mountd (pid 4759) 正在執行…

nfsd (pid 4775 4774 4773 4772 4771 4770 4769 4768) 正在執行…

rpc.rquotad (pid 4754) 正在執行…

[root@nfs-server ~]# /etc/init.d/rpcbind status 

rpcbind (pid  1656) 正在執行…

[root@nfs-server ~]# 

[root@nfs ~]# lsof -i :111

COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

rpcbind 2664  rpc    6u  IPv4  15806      0t0  UDP *:sunrpc 

rpcbind 2664  rpc    8u  IPv4  15809      0t0  TCP *:sunrpc (LISTEN)

rpcbind 2664  rpc    9u  IPv6  15811      0t0  UDP *:sunrpc 

rpcbind 2664  rpc   11u  IPv6  15814      0t0  TCP *:sunrpc (LISTEN)

[root@nfs ~]# netstat -tunpl|grep “111”

tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      2664/rpcbind        

tcp        0      0 :::111                      :::*                        LISTEN      2664/rpcbind        

udp        0      0 0.0.0.0:111                 0.0.0.0:*                               2664/rpcbind        

udp        0      0 :::111                      :::*                                    2664/rpcbind        

[root@nfs ~]# 

[root@nfs ~]#  chkconfig –list rpcbind  檢視開機是否自啟

rpcbind         0:off   1:off   2:on    3:on    4:on    5:on    6:off

[root@nfs ~]#

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

rpc.svcgssd 已停

rpc.mountd is stopped

nfsd is stopped

rpc.rquotad is stopped

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

Starting NFS services:                                     [  OK  ]

Starting NFS quotas:                                       [  OK  ]

Starting NFS mountd:                                       [  OK  ]

Starting NFS daemon:                                       [  OK  ]

正在啟動 RPC idmapd:                                      [確定]

[root@nfs ~]# netstat -tunpl |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@nfs ~]# lsof -i:2049

[root@nfs ~]# 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

    100005    1   udp  48501  mountd

    100005    1   tcp  36022  mountd

    100005    2   udp  43391  mountd

    100005    2   tcp  39405  mountd

    100005    3   udp  49218  mountd

    100005    3   tcp  41793  mountd

    100003    2   tcp   2049  nfs

    100003    3   tcp   2049  nfs

    100003    4   tcp   2049  nfs

    100227    2   tcp   2049  nfs_acl

    100227    3   tcp   2049  nfs_acl

    100003    2   udp   2049  nfs

    100003    3   udp   2049  nfs

    100003    4   udp   2049  nfs

    100227    2   udp   2049  nfs_acl

    100227    3   udp   2049  nfs_acl

    100021    1   udp  59606  nlockmgr

    100021    3   udp  59606  nlockmgr

    100021    4   udp  59606  nlockmgr

    100021    1   tcp  56597  nlockmgr

    100021    3   tcp  56597  nlockmgr

    100021    4   tcp  56597  nlockmgr

[root@nfs ~]# 

5.修改nfs配置檔案
[root@nfs-server ~]# vi /etc/exports 

/data/w_shared  10.0.0.0/24(rw,sync,all_squash)

/data/r_shared  10.0.0.0/24(ro)

注:下面介紹一些配置檔案中常用的引數含義,以及客戶端的IP地址的格式。

rw:可讀寫許可權。

ro:只讀許可權。

no_root_squash:當登入NFS伺服器主機使用共享目錄的使用者是root時,其許可權將被轉換成為匿名使用者,通常它的UID與GID都會變成nobody身份。

root_squash;如果登入NFS主機使用共享目錄的使用者是root,那麼對於這個共享的目錄來說,它具有root的許可權,這樣會涉及到安全性的問題。

all_squash:忽略登入NFS使用者的身份,其身份都會被轉換為匿名使用者,通常即nobody。

anonuid:通常為nobody,也可以自行設定這個UID的值,UID必須存在於/etc/passwd中。 

anongid:同anonuid,但是變為Group ID。

sync:同步寫入資料到記憶體與硬碟中。

async:資料會先暫存於記憶體中,而非直接寫入硬碟。

[root@nfs-server ~]#exportfs -r   讓其平滑生效

6.nfs客服端配置

[root@lamp01 ~]yum -y install nfs-utils rpcbind   

建立掛載點目錄
[root@lamp01 ~]mkdir -p {/data/b_r,/data/b_w}

檢視檔案是否建立成功

[root@lamp01 ~]# ll /data 

總用量 8

drwxr-xr-x 2 nfsnobody root 4096 4月  23 15:13 b_r

drwxr-xr-x 2 nfsnobody root 4096 4月  23 15:24 b_w

測試掛載

[root@lamp01 ~]# showmount -e 10.0.0.130

Export list for 10.0.0.130:

/data/r_shared 10.0.0.0/24

/data/w_shared 10.0.0.0/24

[root@lamp01 ~]#

掛載

[root@lamp01 ~]#mount.nfs 10.0.0.130:/data/r_shared  /data/b_r

[root@lamp01 ~]#mount -t nfs 10.0.0.130:/data/w_shared /data/b_w

檢視是否掛載成功

[root@lamp01 ~]# df 

Filesystem           1K-blocks    Used Available Use% Mounted on

/dev/sda3             18244476 1582428  15728624  10% /

tmpfs                   515244       0    515244   0% /dev/shm

/dev/sda1               194241   25657    158344  14% /boot
10.0.0.130:/data/r_shared

                      18244480 1582464  15728640  10% /data/b_r

10.0.0.130:/data/w_shared

                      18244480 1582464  15728640  10% /data/b_w


[root@lamp01 ~]#

同理在另個客服端使用相同的方法進行掛載即可。

一、NFS服務常見故障排查:

NFS服務出現了故障,主要從以下幾個方面檢查原因:

(1)檢查NFS客戶機和伺服器的負荷是否太高,Server和Client之間的網路是否正常;

(2)檢查/etc/exports檔案的正確性;

(3)必要時重啟NFS和portmap服務;

(4)執行下列命令重新啟動portmap和NFS:  

 
   

# /etc/init.d/portmap restart (先啟動portmap或rpcbind)   

# /etc/init.d/nfs restart   

# /etc/init.d/rpcbind restart (在RHEL/CentOS 6.x裡面)   

# chkconfig portmap on   

# chkconfig nfs on   

# chkconfig rpcbind on (在RHEL/CentOS 6.x裡面)  

二、NFS常見故障解決方法:  

1、The rpcbind failure error   

故障現象:   

nfs mount: server1:: RPC: Rpcbind failure   

RPC: Timed Out   

nfs mount: retrying: /mntpoint   

原因:   

第一,可能因為客戶機的hosts檔案中存在錯誤的ip地址、主機名或節點名組合;   

第二,伺服器因為過載而暫時停止服務。

2、The server not responding error   

現象:   

NFS server server2 not responding, still trying   

原因:   

第一,網路不通,用ping命令檢測一下。   

第二,伺服器關機。

3、The NFS client fails a reboot error   

現象:   

啟動客戶機後停住了,不斷顯示如下提示資訊:   

Setting default interface for multicast: add net 224.0.0.0: gateway:   

client_node_name.   

原因:   

在etc/vfstab的mount選項中使用了fg而又無法成功mount伺服器上的資源,改成bg或將該行註釋掉,直到伺服器可用為止。

4、The service not responding error   

現象:   

nfs mount: dbserver: NFS: Service not responding   

nfs mount: retrying: /mntpoint   

原因:   

第一,當前級別不是級別3,用who -r檢視,用init 3切換。   

第二,NFS Server守護程式不存在,用ps -ef | grep nfs檢查,用/etc/init.d/nfs start啟動。

5、The program not registered error   

現象:   

nfs mount: dbserver: RPC: Program not registered   

nfs mount: retrying: /mntpoint   

原因:   

第一,當前級別不是級別3。   

第二,mountd守護程式沒有啟動,用/etc/init.d/nfs指令碼啟動NFS守護程式。   

第三,看/etc/dfs/dfstab中的條目是否正常。

6、The stale file handle error   

現象:   

stale NFS file handle   

原因:   

伺服器上的共享資源移動位置了,在客戶端使用umount和mount重新掛接就可以了。

7、The unknown host error   

現象:   

nfs mount: sserver1:: RPC: Unknown host   

原因:   

hosts檔案中的內容不正確。

8、The mount point error   

現象:   

mount: mount-point /DS9 does not exist.   

原因:   

該掛接點在客戶機上不存在,注意檢查命令列或/etc/vfstab檔案中相關條目的拼寫。

9、The no such file error   

現象:   

No such file or directory.   

原因:   

該掛接點在伺服器上不存在,注意檢查命令列或/etc/vfstab檔案中相關條目的拼寫。

10、No route to host   

錯誤現象:   

# mount 10.10.11.211:/opt/data/xmldb /c2c-web1/data/xmldb -t nfs -o rw   

mount: mount to NFS server ’10.10.11.211′ failed: System Error: No route to host.

原因:   

防火牆被開啟,關閉防火牆。   

這個原因很多人都忽視了,如果開啟了防火牆(包括iptables和硬體防火牆),NFS預設使用111埠,我們先要檢測是否開啟了這個埠,還要檢查TCP_Wrappers的設定。

11、Not owner   

現象:   

# mount -F nfs -o rw 10.10.2.3:/mnt/c2c/data/resinfo2 /data/data/resinfo2   

nfs mount: mount: /data/data/resinfo2: Not owner

原因:   

這是Solaris 10版本掛載較低版本nfs時報的錯誤。

解決:   

需要用-o vers=3引數

示例:   

# mount -F nfs -o vers=3 10.10.2.3:/mnt/c2c/data/resinfo2 /data/data/resinfo2

12、RPC: Program not registered & retrying   

現象:   

nfs mount: 10.10.2.3: : RPC: Program not registered   

nfs mount: retrying: /data/data/resinfo2

原因:   

沒有啟動NFS共享端服務。

解決:需要重新啟動share端的NFS服務,   

Linux:   

mount: RPC: Program not registered   

# /etc/init.d/nfs restart

Solaris:   

mount: RPC: Program not registered   

# /etc/rc.d/init.d/nfs restart

13、can’t contact portmapper: RPC: Remote system error – Connection refused   

現象:   

# exportfs -a   

can’t contact portmapper: RPC: Remote system error – Connection refused

原因:   

出現這個錯誤資訊是由於server端的portmap沒有啟動。

解決:   

# /etc/init.d/portmap start


本文轉自chengong1013 51CTO部落格,原文連結:http://blog.51cto.com/purify/1767039,如需轉載請自行聯絡原作者


相關文章