1. 程式人生 > >配置 NFS 網路檔案系統

配置 NFS 網路檔案系統

方法一:

1、進行 NFS 伺服器端與客戶端的安裝

[email protected]:/# sudo apt-get install nfs-kernel-server nfs-common rpcbind

提示是否需要繼續: Y

Do you want to continue [Y/n]? Y

安裝客戶端的作用是可以在本機進行 NFS 服務的測試。

2、配置 portmap

[email protected]:/# sudo dpkg-reconfigure rpcbind

執行後選擇“No”

3、建立NFS共享目錄

假設 NFS 共享目錄是/home/nfs

$ sudo mkdir /home/nfs

4、配置 NFS

$ sudo vi /etc/exports

在/etc/exports 檔案末尾加入下面一行:

/work/nfs *(rw,sync,no_subtree_check,no_root_squash)

允許所有使用者訪問 NFS 共享目錄

5、啟動 NFS 伺服器

啟動 portmap 和 nfs-kernel-server 服務:

sudo service portmap start;

sudo service nfs-kernel-server start

注:如果開發板不能掛載到宿主機可以試下以下方式:

sudo exportfs -a;

sudo /etc/init.d/portmap restart;

sudo /etc/init.d/nfs-kernel-server restart

6、本地驗證 NFS

 

方法二:

一 安裝NFS

$ sudo apt-get install nfs-kernel-server

$ sudo apt-get install nfs-common

二 配置NFS

1 $ sudo dpkg-reconfigure portmap , 對Should portmap be bound to the loopback address? 選N

2 $ sudo vi /etc/default/portmap 末行清除 "-i 127.0.0.1"

 

三 配置hosts.deny

$ sudo vi /etc/hosts.deny

文字末新增

### NFS DAEMONS

portmap: ALL

lockd: ALL

mountd: ALL

rquotad: ALL

statd: ALL

 

四 配置hosts.allow

$ sudo vi /etc/hosts.allow

文字末加入

### NFS DAEMONS

portmap: 192.168.1.

lockd: 192.168.1.

rquotad: 192.168.1.

mountd: 192.168.1.

statd: 192.168.1.

$ sudo /etc/init.d/portmap restart 重啟portmap daemon.

顯示如下

Since the script you are attempting to invoke has been converted to an

Upstart job, you may also use the restart(8) utility, e.g. restart portmap

portmap start/running, process XXXX

 

五 配置/etc/exports

$ sudo vi /etc/exports

文字末新增

/home/work *(rw,sync,no_root_squash)

chmod 777 -R /home/work

$ sudo showmount -e

顯示 clnt-create : RPC : Program not registered

 

$ sudo exportfs -r 更新

 

$ sudo showmount 192.168.2.108 -e

顯示

Export list for 192.168.2.66:

/home/work *

 

六 啟用

$ sudo /etc/init.d/nfs-kernel-server restart 重啟nfs服務

顯示如下

* Stopping NFS kernel daemon [ OK ]

* Unexporting directories for NFS kernel daemon... [ OK ]

* Exporting directories for NFS kernel daemon...

exportfs: /etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified for export "*:/home/work".

Assuming default behaviour ('no_subtree_check').

NOTE: this default has changed since nfs-utils version 1.0.x

* Starting NFS kernel daemon [ OK ]

 

掛載

mount -t nfs 192.168.2.108:/home/work /mnt

mount -t nfs 192.168.2.66:/home/work /mnt -o nolock

 

核心支援NFS分割槽(即編譯時在File system中選中[*] Root file system on NFS), 

以及支援核心IP_PNP(即編譯時在Networking中選中[*] IP: kernel level autoconfiguration)

    File systems  ---> 

        Network File Systems  ---> 

            <*> NFS file system support                        ## 必選

                [*]   Provide NFSv3 client support             ## 可選

            [*] Root file system on NFS                        ## 必選

    Networking  ---> 

        [*] Networking support 

            Networking options  ---> 

                [*]   IP: kernel level autoconfiguration       ## 必選

需要開啟IP:Kernel level autoconfiguration 以及下面所有的選項包括DHCP, BOOTP, RARP,而且NFS Client Support不能是模組,必須編譯進核心

 

錯誤一:Cannot register service: RPC

service nfs restart

Shutting down NFS mountd: [ OK ]

Shutting down NFS daemon: [ OK ]

Shutting down NFS quotas: [ OK ]

Shutting down NFS services: [ OK ]

Starting NFS services: [ OK ]

Starting NFS quotas: Cannot register service: RPC: Unable to receive; errno = Connection refused

rpc.rquotad: unable to register (RQUOTAPROG, RQUOTAVERS, udp).

[FAILED]

#解決方法:

service portmap start

#先啟動portmap才行

錯誤二:Address already in use

tail -f /var/log/message

Apr :: bogon nfsd[]: nfssvc: Setting version failed: errno (Device or resource busy)

Apr :: bogon nfsd[]: nfssvc: unable to bind UPD socket: errno (Address already in use)

Apr :: bogon nfsd[]: nfssvc: Setting version failed: errno (Device or resource busy)

Apr :: bogon nfsd[]: nfssvc: unable to bind UPD socket: errno (Address already in use)

Apr :: bogon nfsd[]: nfssvc: Setting version failed: errno (Device or resource busy)

#解決方法:

ps aux | grep nfs

#然後用kill幹掉這些程序

錯誤三:mount: …:/nfsdata failed, reason given by server: Permission denied

#解決方法:

a.把該客戶端的ip加入服務端的/etc/exports

b.服務端的和客戶端規則要統一,要麼都使用主機名(注意每臺機器的hosts檔案),要麼都使用IP

錯誤四:客戶端掛載超時

tail -f /var/log/message

Apr :: localhost kernel: portmap: server localhost not responding, timed out

Apr :: localhost kernel: RPC: failed to contact portmap (errno -).

Apr :: localhost kernel: RPC: failed to contact portmap (errno -).

Apr :: localhost kernel: lockd_up: makesock failed, error=-

Apr :: localhost kernel: RPC: failed to contact portmap (errno -).

#解決方法:

service portmap restart

service nfs restart

錯誤五:Error: RPC MTAB does not exist.

service nfs start

Starting NFS services: [ OK ]

Starting NFS quotas: [ OK ]

Starting NFS daemon: [ OK ]

Starting NFS mountd: [ OK ]

Starting RPC idmapd: Error: RPC MTAB does not exist.

#解決方法:

#手動執行

mount -t rpc_pipefs sunrpc /var/lib/nfs/rpc_pipefs/

#需要時加入開機啟動時,加入下面兩行到/etc/fstab

rpc_pipefs /var/lib/nfs/rpc_pipefs rpc_pipefs defaults

nfsd /proc/fs/nfsd nfsd defaults

 

錯誤六:Loading: *** ERROR: Cannot mount

使用NFS下載核心的時候出現該錯誤 在Linux下是可以mount的 檢視下載的目錄是否有許可權

在主機的/etc/hosts檔案中增加一行名稱解析內容:

目標板IP 根檔案系統檔名

比如:我的/etc/hosts增加後變為:

127.0.0.1 localhost

127.0.1.1 ccc

#增加下面這句:開發板IP, nfs共享資料夾 192.168.0.111 /nfsboot/