說明:本文是基於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)
二、啟動NFS
1.啟動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 客戶端的服務器上的所有目錄。