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服務。