說明:本文是基於CentOS 6.3版本,5系列版本請另行參照其他文檔
一、安裝NFS對應的服務1.安裝NFS 套件
首先安裝NFS套件,命令如下:
yum install nfs-utils.x86_64(64位系統)
yum install nfs-utils(32位系統)
2.安裝RPC服務(注①)
yum install rpcbind(centos6)
二、啟動NFS1.啟動RPC服務
Service rpcbind start
2.啟動NFS服務
Service nfs start
三、配置NFS伺服器端1.設定共用目錄
建立共用目錄或者使用已有的目錄,本文建立/data/nfsshare作為共用目錄。
返回到根目錄 CD /
建立目錄 mkdir –p /data/nfsshare -p 的意思是父資料夾不存在就建立
2.編輯/etc/exports檔案
a) #vi /etc/exports 注②
b)按一下鍵盤 【i】 鍵進入編輯狀態
c)輸入nfs地址,具體命令格式:[目錄路徑]… [目標主機名稱或IP地址(參數…)]…
例子:
/data/nfsshare 10.10.225.*(rw,all_squash,anonuid=504,anongid=504)注③
[共用目錄] [第一台主機(許可權)]
d)儲存檔案,按【esc】鍵輸入【:w】儲存
e)退出vi,輸入【:q】退出Vi
3.重新載入exports檔案
輸入exportfs –rv命令 注④
4.查看本機發布的nfs目錄
showmount –e 注⑤
四、設定用戶端1.查看可掛載的目錄
showmount –e ip
2.掛載伺服器目錄
mount –t nfs –o nolock [主機名稱或IP]:[服務端目錄路徑] [用戶端目錄路徑]
例子:
mount –t nfs –o nolock
10.10.225.178:/data/nfsshare /data/clientshare
五、進行測試
在伺服器的共用目錄裡面建立一個檔案,查看一下用戶端是否存在
問題:1. RPC: Port mapper failure - RPC: Unable to receive
iptable沒關,把portmap的連接埠給阻擋了,禁用,service iptables stop,一切OK!
2. mount.nfs:access denied by server while mounting
查看NFS Server端的/etc/exports檔案設定是否有問題。
3.NFS用戶端不能寫檔案問題
是因為伺服器端沒有設定NFS 共用目錄的讀寫權限,使用chmod變更檔案夾的許可權即可。
註解:注① 為什麼要安裝RPC(Remote Procedure Call)
因為NFS支援的功能相當的多,而不同的功能都會使用不同的程式來啟動,每啟動一個功能就會隨機啟動一些沒有被佔用並且小於1024的連接埠來傳輸資料,因為NFS支援的功能沒有固定的連接埠。
這樣的話,就需要一個服務來獲得對應的連接埠號碼,而這個服務就是RPC服務。因為伺服器在啟動NFS時會把隨機取得的連接埠主動註冊到RPC服務中,因此RPC就可以知道每個NFS功能對應的連接埠號碼,並且RPC服務是固定連接埠號碼111。
這也就間接要求RPC服務必須先於NFS服務啟動。
詳見:【鳥哥的 Linux 私房菜------第十三章、檔案伺服器之一:NFS 伺服器】
http://linux.vbird.org/linux_server/0330nfs.php
注② Vi的簡單操作
Vi有三種模式:命令模式、插入模式、底行模式。畫面啟動的時候就是命令模式,這個時候只能輸入各種命令,而不能進行輸入,所以需要按【i】鍵進入到插入模式,進行輸入文本,然後在按【Esc】鍵退出插入模式,進入命令模式。輸入:qw進行儲存退出。
注③ 許可權參數
參數值 |
內容說明 |
rw ro |
目錄分享許可權是可讀寫(read-write)或者唯讀(read-only),但最終能否讀寫還是與檔案系統的rwx以及身份相關 |
sync async |
sync 資料會同步寫入記憶體和硬碟中, async 資料會先存入記憶體中,而不是直接寫入硬碟。 |
no_root_squash root_squash |
用戶端使用NFS的帳號若為root時,系統如何判斷這個帳號的身份? 預設情況下,用戶端root的身份由root_squash設定縮減為nfsnobody,這樣才能保證伺服器系統的安全。 但若想開放用戶端的root身份來動作伺服器檔案系統,就需要設定no_root_squash |
all_squash |
無論登入NFS的用戶端身份是什麼,都會被縮減為匿名使用者,也就是nobody(nfsnobody) |
anonuid anongid |
anon 代表anonymous (匿名使用者),前面關於*_squash提到的匿名使用者的UID設定值,通常為nobody(nfsnobody),但是你也可以自行設定這個UID的值!當然,這個UID必須存在你的/etc/passwd當中!anongid 則是群組的GID。 |
注④ Exportfs命令
Exportfs命令是使得本地目錄可以被NFS用戶端進行安裝,預設使用/etc/exports檔案進行匯出一個或者多個目錄。
參數:
–r 重新讀取etc/exports檔案中的設定,並使設定生效,而無需重啟NFS服務 -v 顯示當前共用目錄及詳細的選項設定
其它具體設定,請參照exportfs的命令詳解。
注⑤ 使用者端查詢服務器分享資源的指令:/usr/sbin/showmount
這是另一個重要的NFS指令。exportfs是用於在NFS Server端進行設定,查詢的。而showmount則主要用於Client端,用於查看NFS分享出來的目錄資源。
-e 顯示匯出伺服器上的所有檔案系統。
-a 顯示每個已安裝在伺服器上的所有網路檔案系統 (NFS) 用戶端和目錄。
-d 顯示當前裝載 NFS 用戶端的伺服器上的所有目錄。