1. 程式人生 > >NFS介紹,NFS服務端安裝配置,NFS配置選項

NFS介紹,NFS服務端安裝配置,NFS配置選項

nfs

筆記內容:

  • 14.1 NFS介紹

  • 14.2 NFS服務端安裝配置

  • 14.3 NFS配置選項

筆記日期:2017-11-01


14.1 NFS介紹

技術分享

NFS(Network File System)即網絡文件系統,是FreeBSD支持的文件系統中的一種,它允許網絡中的計算機之間通過TCP/IP網絡共享資源。在NFS的應用中,本地NFS的客戶端應用可以透明地讀寫位於遠端NFS服務器上的文件,就像訪問本地文件一樣。



技術分享

NFS可以把A、B、C機器之間的文件數據進行共享,例如用戶上傳了一個文件到A機器上,用戶同樣的可以在B或C機器上訪問到上傳的文件,不一定需要在A機器上才能訪問,這就是NFS實現的功能。而且用戶如果在A機器上對該文件更新或修改了,那麽其他的機器都會進行同步。


技術分享

從上圖可以看到服務端需要有一個NFS服務和一個RPC服務,而客戶端則只需要一個RPC服務,真正實現數據傳輸的是RPC服務,NFS服務是不監聽任何端口的,RPC服務則默認監聽111端口,所以NFS服務是需要借助RPC協議來進行通信的。


14.2 NFS服務端安裝配置

技術分享

NFS大致介紹完了,現在就是嘗試安裝NFS,首先要準備兩臺機器,一個當服務端一個當客戶端,我這裏使用的是兩臺虛擬機來做實驗:

  1. 服務端需要安裝nfs-utils和rpcbind包,安裝命令:

yum install -y nfs-utils rpcbind


2. 客戶端需要安裝nfs-utils包,安裝命令:

yum install -y nfs-utils


  1. 在服務端的/etc/exports文件中加入如下內容:

/home/nfstestdir

192.168.133.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)

技術分享

ip可以根據實際情況自定義,我這裏只是給出一個模板


4. 創建nfstestdir目錄:

mkdir /home/nfstestdir


  1. 把目錄設置為777權限:

chmod 777 /home/nfstestdir


  1. 查看兩臺機器有沒有監聽111端口:

技術分享

技術分享

一般來講安裝完包之後就會自動啟動服務並監聽端口的,如果沒有啟動的話,就手動啟動一下,命令如下:

systemctl start rpcbind


啟動之後查看一下進程是否如下:

技術分享


  1. 啟動nfs服務:

systemctl start nfs

啟動之後查看一下進程有沒有問題:

技術分享


在啟動nfs時會自動幫你啟動rpc相關的一些服務:

技術分享

以上這些都是與nfs的關聯服務,如果沒有以上這些服務是無法正常使用nfs的。


  1. 以下兩個命令可以讓rpcbind和nfs服務開機啟動:

systemctl enable rpcbind

systemctl enable nfs

14.3 NFS配置選項

技術分享

剛剛在/etc/exports文件中加入了如下內容:

192.168.133.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)

現在介紹一下這段內容的含義,這是一段nfs的配置選項,前面那段ip就不需要多解釋了,後面那一段才是具體的配置選項。


我們來看看可以進行哪些配置:

rw (read/write) 讀寫

ro (read/only) 只讀

sync 同步模式,內存數據實時寫入磁盤,但是相對的會降低磁盤的效率

async 非同步模式,不需要將內存數據實時寫入數據,雖然不會降低磁盤的效率,但是萬一斷電就會丟失一些數據。

no_root_squash 客戶端掛載NFS共享目錄後,root用戶不受約束,權限很大。

root_squash 與上面選項相對,客戶端上的root用戶使用NFS共享目錄時會受到約束,被限定成某個普通用戶

all_squash 客戶端上所有用戶都會在使用NFS共享目錄時都被限定為一個普通用戶

anonuid/anongid 和上面幾個選項搭配使用,定義被限定用戶的uid和gid




技術分享

接下來就是客戶端掛載,因為之前已經安裝過nfs-util包了,所以不需要再安裝了。

  1. 先將兩臺機器都關掉防火墻:

systemctl stop firewalld


selinux也要關掉:

getenforce


2. 查看一下可以共享服務端的哪個目錄:

showmount -e 192.168.133.130 //該ip為NFS服務端ip

技術分享


  1. 掛載共享目錄:

mount -t nfs 192.168.133.130:/home/nfstestdir /mnt

技術分享


  1. 使用df -h可以看到掛載好的共享目錄:

技術分享


  1. cd進/mnt目錄下,創建一個文件,然後看看服務端有沒有更新:

技術分享

可以看到用戶的屬主和屬組是mysql,至於為什麽會這樣,下面會提到。


服務端:

技術分享

因為在nfs的配置文件中配置了:nonuid=1000,anongid=1000

所以在服務端中共享目錄下文件的屬主就為uid為1000的用戶,同樣的屬組就為gid為1000的用戶組。

在服務端中使用id 01這個命令,就可以看到01這個用戶的uid和gid:

技術分享


客戶端也是一樣的:

技術分享

所以這是因為在nfs配置文件中已經定義了文件的屬主和屬組的id,所以在此共享目錄下創建的文件,在服務端和客戶端上的屬主和屬組就會對應上這個id。



從以上實驗可以知道掛載完目錄之後,客戶端就可以像訪問本地目錄一樣去訪問這個服務器上的目錄,客戶端在此目錄下做出的改動也會同步到服務器上,以上的實驗只是簡單的使用兩臺虛擬機模擬服務端和客戶端,在實際應用中服務端和客戶端都不止一臺。但是從這個簡單的實驗,可以了解到NFS實現了什麽樣的功能,服務端和客戶端又是怎麽樣進行數據傳輸的。









本文出自 “zero” 博客,請務必保留此出處http://zero01.blog.51cto.com/12831981/1978079

NFS介紹,NFS服務端安裝配置,NFS配置選項