CentOS6 上搭建 NFS
- 2019 年 10 月 4 日
- 筆記
CentOS6.6上搭建NFS服務
原理篇:
NFS通過RPC(遠程過程調用)服務來連接。
啟動NFS SERVER前,先啟動RPC服務(portmap服務),否則NFS SERVER無法向RPC服務註冊。

更詳細的介紹請參考我在網上看到的一篇博客:http://www.cnblogs.com/brucewoo/archive/2012/05/07/2489248.html
實操篇:
CentOS6上的NFS服務依賴rpcbind、nfs-utils這兩個軟件包。
Server: 192.168.2.10/24
Client: 192.168.2.11/24
Sever端配置如下:
# 安裝rpcbind、nfs-utils軟件包
yum installrpcbind nfs-utils -y
# 創建掛載目錄
mkdir/shares
# 編輯配置文件
vi /etc/exports寫入如下內容:
/shares 192.168.2.0/24(ro,no_root_squash)
說明:配置文件的格式為:需要共享的目錄 客戶端地址(權限設置)
1.目錄必須為絕對路徑
2.客戶端地址可以是域名、網段、IP地址;支持在一個條目下寫多個客戶端地址,分別配置不同的權限
3.客戶端地址和後面的括號之間沒有空格
4.權限設置
rw 可讀寫
ro 只讀
sync 文件同時寫入硬盤和內存
async 文件暫存內存,不立刻寫入磁盤
no_root_squash NFS客戶端連接服務端時如果使用的是root的話,那麼對服務端分享的目錄來說,也擁有root權限。顯然開啟這項是不安全的。
root_squash NFS客戶端連接服務端時如果使用的是root的話,那麼對服務端分享的目錄來說,擁有匿名用戶權限,通常他將使用nobody或nfsnobody身份;
all_squash 不論NFS客戶端連接服務端時使用什麼用戶,對服務端分享的目錄來說都是擁有匿名用戶nobody權限;
no_all_squash 不論NFS客戶端連接服務端時使用什麼用戶,對服務端分享的目錄來說都是擁有root權限;
anonuid 指定NFS服務器/etc/passwd文件中匿名用戶的UID
anongid 指定NFS服務器/etc/passwd文件中匿名用戶的GID
例:
/usr/local/test/192.168.1.226(rw,no_root_squash,no_all_squash,sync)
/nfsfile 192.168.59.0/24(rw,sync,all_squash,anonuid=2000,anongid=2000) # 生產環境建議這樣寫
#注意:要想讓客戶端也能寫入數據,配置時候需要加no_all_squash權限
# 啟動NFS服務
servicerpcbind start # 注意這兩個服務的啟動的順序。必須先啟動rpcbind服務。
servicenfs start

Client端配置如下:
# 安裝rpcbind、nfs-util,,s軟件包
yum installrpcbind nfs-utils -y
# 查看能否訪問nfs服務
showmount-e 192.168.2.10

# 創建目錄並掛載NFS
mkdir/files
mount -tnfs 192.168.2.10:/home /files
ls -l /files或者mount命令查看是否掛載成功

# 配置開機自動掛載
編輯/etc/fstab寫入掛載信息即可。但是不建議這樣設置,因為如果NFS服務器連接不上會導致客戶端開機時候直接卡住。
# 附:配置過程中會涉及到的問題說明:
1.修改了/etc/exports,並不需要重啟NFS服務,只要用exportfs重新掃描一次/etc/exports,並且重新加載即可。
exportfs-a 全部掛載或卸載/etc/exports的設定
exportfs-r 重新掛載/etc/exports裏面的設定,也同步更新/etc/exports和/var/lib/nfs/xtab裏面的內容
exportfs-u 卸載某一目錄
-v 參數表示可視化顯示
常用exportfs -rv # 重新export一次
exportfs -au # 全部卸載
2. 可以給多個客戶端不同的授權,如
/home192.168.2.11(rw,sync,no_root_squash,no_all_squash)
/home192.168.2.7(ro,sync)
服務端端執行exportfs -rv 即可生效。【註:客戶端也需要重新掛載才能看到起作用】
3.文件系統無法卸載時候,用fuser-m -v /PATH/TO/FILES查看哪個用戶在訪問。
4.客戶端在掛載的時候遇到的一個問題如下,可能是網絡不太穩定,NFS默認是用UDP協議,換成TCP協議即可:
mount -tnfs 192.168.2.10:/home /files -oproto=tcp -o nolock
5.如果有客戶端通過RPC連接在服務器上,那麼主機想要關機是不可能的。因此如果確實需要關機,請先停止nfs-utils、rpcbind服務。