NFS (network file system) 網絡檔案系統
可以快速進行檔案共享,友善集中管理
NFS 并不是監聽在固定端口,而是随機采用一些未被使用并且小于 1024 的端口,中間通過 RPC 協調實作互聯. 而 RPC 工作在 tcp udp 的 111 端口.
可以通過 # rpcinfo –p localhost 檢視 //rpcbind 的守護程序 //NFS 的守護程序 //NFS mountd 守護程序
AUTOFS
當用戶端和伺服器端連接配接後,任何一方離線都可能導緻另一方在不斷等待,消耗 NFS 伺服器的資源
使用 autofs 就可以避免這類問題,讓使用者僅在通路時能夠動态挂載目錄
試驗環境 CentOS版本為 6.7
兩台虛拟主機即可,關閉防火牆\SElinx,互相能ping通
本人使用的是 vmvare workstation11 . 之前一直沒用克隆選項,沒想到在11中關閉虛拟機完成克隆後不需要做任何更改.
假如原來的主機網卡為eth0. 那麼克隆後的主機網卡則為eth1. 兩台主機的 MAC 位址也不一樣. 真是友善 (木哈哈哈哈)
1) NFS SERVER : 192.168.0.28
2) NFS CLIENT : 192.168.0.30
首先配置 NFS SERVER
[root@beiyong2 ~]# rpm -qa nfs-utils rpcbind
nfs-utils-1.2.3-26.el6.x86_64 # NFS 服務主程式
rpcbind-0.2.0-9.el6.x86_64 # Centos6.X 下為 RPC 主程式 ( Centos5.X下為 portmap )
↑ # 在 CentOS 6x 桌面版中,預設已經安裝了 NFS 服務
[root@beiyong2 ~]# mkdir /shared
[root@beiyong2 ~]# cp /etc/fstab /shared
↑ # 在 / 目錄下建立 shared 目錄,作為将要共享出去的目錄,複制一個檔案,友善後面測試是否能夠成功
[root@beiyong2 ~]# /etc/init.d/rpcbind start
[root@beiyong2 ~]# /etc/init.d/nfs start
↑ # 要想啟動 NFS 服務需要啟動 rpcbind 服務和 NFS 服務.由于 NFS 在啟動時需要進行端口注冊,是以需要注意啟動程式 先啟動 rpcbind 在啟動 nfs
接下來開始配置 /etc/exports 配置檔案. 該檔案為 NFS 的主要配置檔案,但是需要自行建立,手工進行編輯
exports 檔案的編輯格式如下
共享目錄 [用戶端1](選項1,選項2,......) [用戶端2](選項1,選項2,.....)
/shared 192.168.0.0/24(ro)
↑ # 實驗中我的 /etc/exports 内容. 表示共享目錄的名稱為 /shared 192.168.0.0 中的所有主機可以通路,權限為 隻讀
該實驗中可以通路我的用戶端為 192.168.0.0 中所有主機,但也支援主機名與通配符 "*" "?"
用戶端位址設定
example 表示主機名為 example 的主機可以通路
host?.example.com ?表示為任意一個字元
*.example.com 表示為 example.com 域中的所有主機均可以通路
* 表示為所有主機均可以通路
選項設定
ro 用戶端隻能以隻讀的方式共享目錄中的檔案
rw 用戶端對目錄可讀寫
sync 資料同步寫記憶體與磁盤.效率低
async 異步 IO 方式,資料先存入記憶體,需要時寫入磁盤.效率高,風險大
在将 /etc/exports 檔案儲存退出後可以重新開機 nfs 服務 (service nfs restart)
[root@beiyong2 ~]# exportfs –rv (也可以使用 /etc/init.d/nfs reload)
↑ # 平滑加載 , 不影響客戶也不用重新開機
[root@beiyong2 ~]# showmount -e 192.168.0.28
Export list for 192.168.0.28:
/shared 192.168.0.0/24
到此為止 , NFS 伺服器端的配置已經完畢 , 通過 showmount 指令得知該伺服器共享的目錄
以下是幾個常用指令總結 :
[root@beiyong2 ~]# /etc/init.d/rpcbind status #檢查 rpcbind 服務是否在運作
rpcbind (pid 5798) is running...
exportfs 指令 -rv : 重新輸出 , 不用重新開機 -au : 取消全部輸出
-a : 全部輸出或取消全部輸出所有的共享目錄
-i : 忽略 /etc/exports 配置檔案 , 而使用預設或指令行中指定的選項
-r : 重新讀取 /etc/exports 中的配置
-u : 取消一個或多個共享目錄的輸出
-v : 單獨使用時顯示共享目錄以及現象設定,組合使用時為顯示了進行哪些操作
showmount 指令
格式 : showmount [選項] [主機或 IP 或名稱]
-a : 顯示已經挂載了伺服器共享目錄的用戶端及他們所使用的共享目錄
-e : 顯示指定 NFS 伺服器輸出的共享目錄清單. (用戶端伺服器端均可以使用)
-d : 與 –a 類似 , 但是隻顯示目錄 , 不顯示用戶端
常用指令總結完畢,接下來配置用戶端
---------------來個分割線--------------NFS伺服器端配置-------------------------------------
[root@beiyong ~]# rpm -qa rpcbind
rpcbind-0.2.0-11.el6.x86_64
↑ # 伺服器端同樣需要安裝 rpcbind 包
[root@beiyong ~]# showmount -e 192.168.0.28
↑ # 192.168.0.28 為 NFS 伺服器的位址 , 檢視有哪些可以挂載的目錄
[root@beiyong ~]# mount -t nfs -o nfsvers=3 192.168.0.28:/shared /mnt/nfs
↑ # 開始挂載 –o nfsvers=3 為指定 nfs 的版本 , 在CentOS6中預設版本為4,若不加此選項,在伺服器端執行 showmount –a –d 指令無法成功.當然 /mnt/nfs 的目錄是提前建立好的,為挂載點
[root@beiyong nfs]# ls
fstab
↑ # 此時進入 /mnt/nfs 目錄可以看到 fstab 檔案,測試成功
設定開機自動挂載
若需要開機自動挂載可以通過 chkconfig nfs on 指令 , 也可以寫入 /etc/fstab 檔案中. 格式如下
192.168.0.28:/shared /mnt/nfs nfs defaults 0 0
---------------------再來一個分割線-------------配置autofs---------------------------------
[root@beiyong ~]# rpm -qa autofs
autofs-5.0.5-113.el6.x86_64
↑ # 用戶端需要安裝 autofs , 版本中已經預設安裝
autofs 服務的主要配置檔案為 /etc/auto.master . 需要編輯該檔案,添加挂載目錄
<a href="http://s3.51cto.com/wyfs02/M01/84/90/wKiom1eU277CN98xAAAeWT24OvI583.png" target="_blank"></a>
↑ # /mnt/nfs 為本機的挂載點 /etc/auto.nfs 該檔案本來并不存在,需要一會兒手工建立 --timeout=10 動态連結你懂的
[root@beiyong ~]# cat /etc/auto.nfs
server -ro 192.168.0.28:/shared
↑ # 在 /etc 中建立檔案 auto.nfs 内容如上 . server目錄是不存在,autofs會自動建立
[root@beiyong ~]# service autofs reload
↑ # 重新載入 maps
[root@beiyong ~]# cd /mnt/nfs
[root@beiyong nfs]# cd server
[root@beiyong server]# ls
fstab
[root@beiyong server]# pwd
/mnt/nfs/server
↑ # cd 進 /mnt/nfs 目錄後 , cd server 通路挂載成功.
[root@beiyong ~]# chkconfig autofs on
↑ # 實作 autofs 開機自啟動
最後自己在總結一下權限的問題
挂載後對共享目錄的權限有兩層,一個是在伺服器端挂載時設定的權限,還有一個是共享檔案自身的權限,二者取最小的權限
寫的不對不好的地方,還希望各位大蝦指教,小弟虛心接受.
本文轉自 mlwzby 51CTO部落格,原文連結:http://blog.51cto.com/aby028/1829481