NFS

CentOS 6.6下安裝配置NFS4服務

安裝 NFS 服務器所需的軟件包:

# yum install nfs-utils rpcbind

useradd -s /sbin/nologin -M www

cat /etc/passwd www uid 505

配置 NFS 共享

編輯/etc/exports文件vim /etc/exports

/usr/local/src 192.168.0.0/24(rw,sync)

/var/log 192.168.0.113(rw,async,all_squash,anonuid-505,anongid=505)


啟動nfs服務:

先開啟rpcbind和nfs隨機自啟動:

#chkconfig rpcbind on
# chkconfig nfs on

然後分別啟動rpcbind和nfs服務:

#service rpcbind start

#service nfs start

檢查 NFS 服務器端是否有目錄共享:

# showmount -e 192.168.0.113

使用 mount 掛載服務器端的目錄/home/exp到客戶端某個目錄下:

# mkdir /tmp/mount
# mount -f nfs -onoatime,nolock,intr,rsize=32768,wsize=32768,nfsvses=3 192.168.0.114:/var/log /tmp/mount

# df -h看一下掛上來了沒有。

exportfs -rv

共享多個目錄

使用NFSv4方式共享多個目錄時,所有的目錄都要作爲共享根目錄的子目錄。例如:有以下目錄需要共享:


/first/very/long/path1

/second/very/long/path2

同時讓客戶端看上去共享的目錄是 /dir1 和 /dir2。

服務器端 創建子目錄 # mkdir /home/nfs/dir1

# mkdir /home/nfs/dir2

使用參數掛載需要共享的目錄 

# mount --bind /first/very/long/path1  /home/nfs/dir1
# mount --bind /secend/very/long/path2 /home/nfs/dir2

修改/etc/exports文件 

/home/nfs/dir1 *(rw,nohide,sync,all_squash,anonuid-505,anongid=505)
/home/nfs/dir2 *(rw,nohide,sync,all_squash,anonuid-505,anongid=505)

注意:需要使用nohide參數 重新讀取NFS配置文件 # exportfs -rv

這時你就可以在客戶端上掛載服務器上的多個共享文件夾了:
從根目錄掛載

# mount 192.168.0.114:/ /mount/point/

單獨掛載

# mount 192.168.0.114:/dir1 /mount/point1/
# mount 192.168.0.115:/dir2 /mount/point2/

調優

在默認情況下,NFS 的配置不適合大容量磁盤。 
每個客戶機應該用 rsize=32768,wsize=32768,intr,noatime 掛裝遠程文件系統,如。

mount -o rsize=32768,wsize=32768,intr,noatime server1:/
/mount/point/

從而確保: 

使用大的讀/寫塊(數字指定最大塊大小,在這個示例中是 32KB)。

在掛起時 NFS 操作可以被中斷。

不持續更新 atime。

可以將這些設置放在 /etc/fstab 中。如果使用自動掛裝器,那麼應該將這些設置放在適當的 /etc/auto.* 文件中。
在 服務器端,一定要確保有足夠的 NFS 內核線程來處理所有客戶機。在默認情況下,只啓動一個線程,但是 Red Hat 和 Fedora 系統會啓動 8 個線程。對於繁忙的 NFS 服務器,應該提高這個數字,比如 32 或 64。可以用 nfsstat -rc 命令評估客戶機,瞭解是否有阻塞的現象,這個命令顯示客戶機遠程過程調用(RPC)統計數據。下表顯示一個 Web 服務器的客戶機統計數據。



# nfsstat -rc
Client rpc stats:
calls retrans authrefrsh
1465903813 0 0

第二列 retrans 是零,這表示從上一次重新引導以來沒有出現需要重新傳輸的情況。如果這個數字比較大,就應該考慮增加 NFS 內核線程。設置方法是將所需的線程數量傳遞給 rpc.nfsd,比如 rpc.nfsd 128 會啓動 128 個線程。任何時候都可以進行這種設置,線程會根據需要啓動或銷燬。同樣,這個設置應該放在啓動腳本中,尤其是在系統上啓用 NFS 的腳本。 

關於 NFS,最後要注意一點:如果可能的話,應該避免使用 NFSv2,因爲 NFSv2 的性能比 v3 和 v4 差得多。在現代的 Linux 發行版中這應該不是問題,但是可以在服務器上檢查 nfsstat 的輸出,瞭解是否有任何 NFSv2 調用。


nfs/exports用戶映射選項
all_squash 將遠程訪問的所有普通用戶及所屬組都映射爲匿名用戶或用戶組(nfsnobody);
no_all_squash 與all_squash取反(默認設置);
root_squash 將root用戶及所屬組都映射爲匿名用戶或用戶組(默認設置);
no_root_squash 與rootsquash取反,即不限制root;
anonuid=xxx 將遠程訪問的所有用戶都映射爲匿名用戶,並指定該用戶爲本地用戶(UID=xxx);
anongid=xxx 將遠程訪問的所有用戶組都映射爲匿名用 戶組賬戶,並指定該匿名用戶組賬戶爲本地用戶組賬戶(GID=xxx);
其它選項
secure 限制客戶端只能從小於1024的tcp/ip端口連接nfs服務器(默認設置);
insecure 允許客戶端從大於1024的tcp/ip端口連接服務器;
sync 將數據同步寫入內存緩衝區與磁盤中,效率低,但可以保證數據的一致性;
async 將數據先保存在內存緩衝區中,必要時才寫入磁盤;
wdelay 檢查是否有相關的寫操作,如果有則將這些寫操作 一起執行,這樣可以提高效率(默認設置);
no_wdelay 若有寫操作則立即執行,應與sync配合使用;
subtree 若輸出目錄是一個子目錄,則nfs服務器將檢查其父目錄的權限(默認設置);
no_subtree 即使輸出目錄是一個子目錄,nfs服務器也不檢查其父目錄的權限,這樣可以提高效率;


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章