NFS深度解析及搭建同步NFS服務


1、nfs 進程

[root@nfsserver ~]# ps -ef|egrep "nfs|rpc"
rpcuser    963     1  0 17:31 ?        00:00:00 rpc.statd    -->檢查文件一致性
root      1032     2  0 17:31 ?        00:00:00 [rpciod/0]
rpc       1694     1  0 18:05 ?        00:00:00 rpcbind    -->rpc服務
root      1775     1  0 18:06 ?        00:00:00 rpc.mountd    -->權限驗證等
root      1781     2  0 18:06 ?        00:00:00 [nfsd4]
root      1782     2  0 18:06 ?        00:00:00 [nfsd4_callbacks]
root      1783     2  0 18:06 ?        00:00:00 [nfsd]
root      1784     2  0 18:06 ?        00:00:00 [nfsd]  -->nfs主進程
root      1785     2  0 18:06 ?        00:00:00 [nfsd]
root      1786     2  0 18:06 ?        00:00:00 [nfsd]
root      1787     2  0 18:06 ?        00:00:00 [nfsd]  -->nfs主進程
root      1788     2  0 18:06 ?        00:00:00 [nfsd]
root      1789     2  0 18:06 ?        00:00:00 [nfsd]  -->nfs主進程
root      1790     2  0 18:06 ?        00:00:00 [nfsd]
root      1813     1  0 18:06 ?        00:00:00 rpc.idmapd    -->權限管理進程
root      2054  1402  0 19:14 pts/0    00:00:00 egrep nfs|rpc

 2、/etc/exports

  NFS 服務主配置文件,配置NFS具體共享服務的地點,默認內容為空,以行為單位。

3、/usr/sbin/exportfs

  NFS服務的管理命令。例如:可以加載NFS配置生效,還可以直接配置NFS共享目錄,即無需配置 /etc/exports 實現共享。

  exportfs -rv   -- 加載配置生效,等價於重啟 /etc/init.d/nfs  reload

  exportfs 不但可以加載配置生效,也可以通過命令直接共享目錄,越過 /etc/exports,但是重啟失效。

4、/usr/sbin/showmount

  常用來在客戶端,查看NFS配置及掛載結果的命令

  配置 nfsserver,分別在服務端以及客戶端查看掛載情況。

5、/var/lib/nfs/etab

  NFS配置文件的完整參數設定的文件(有很多沒有配置但是默認就有的NFS參數)

6、nfs 參數:

  (1)rw -- 讀寫

  (2)sync -- 同步,同時將數據寫入到內存與硬盤中,保證不丟失數據(發送端等待客戶端連接,例如兩個人手把手交接物品)

  (3)async -- 異步,優先將數據寫入到內存,然后再寫入到內存,這樣效率更高,但可能會丟失數據(例如:一人將物品放在某處,另一個人再去取)

  (4)同步異步的對比:

    異步(async):將東西寫到內存里,速度快,容易丟數據。隊列的概念。

    同步(sync):客戶端寫到服務端的磁盤,速度慢,但是寫到磁盤里,關機數據也不丟失。

  (5)ro -- 只讀 -- read only

  (6)all_squash:

  不管訪問NFS server共享目錄的用戶身份如何,它的權限都將被壓縮成匿名用戶,同時它的UID和GID都會變成nobody或nfsnobody賬號身份。

  (7)root_squash:當NFS客戶端以root管理員訪問時,映射為NFS服務器的匿名用戶。

  (8)no_root_squash:當NFS客戶端以root管理員訪問時,映射為NFS服務器的root管理員。

  配NFS生產重要技巧:

  ①確保所有服務器對NFS共享目錄具備相同的權限

    a、all_squash 把所有客戶端都壓縮成匿名用戶  

    b、就是anonuid,anongid指定的UID和GID的用戶

  ②所有的客戶端和服務端都需要有一個相同的UID和GID的用戶,即nfsnobody(UID必須相同)

(7)annonuid and anongid  

   指定具體的UID和GID

7、實現當對台客戶端同時掛一台NFS Server時,無論從哪個客戶端寫入數據,其他客戶端同樣也可以讀寫,即讓所有 nfs 客戶端寫入到 Nfs Server 的文件或目錄在Nfs Server 上的用戶和組都是同一個名稱 nfsusers。

  三台機器:兩台客戶端,一台服務端。

(1)由於客戶端在添加文件的時候,默認所屬的用戶和組為nfsnobody,要想客戶端在操作的時候將用戶和組屬於nfsusers,必須在每台機器上都添加該用戶和組。

useradd -u 555 nfsusers    #將每台機器都添加該用戶和組,UID和 GID 為555

 

 (2)在配置文件 /etc/exports 中將服務端的目錄 /data 進行共享,一些權限和限制可在 /var/lib/nfs/etab 中進行查看,小括號中的內容均是權限或限制。

 

 (3)共享目錄 /data 限制UID和GID為555,即用戶和用戶組為nfsusers

 

 (4)此時用戶和用戶組是555,如果客戶端沒有nfsusers這個用戶,那么客戶端看到的就是555了,所以要把555對應的用戶和組給 /data 目錄。

chown -R nfsusers.nfsusers /data  #改變/data 目錄為 nfsusers的用戶和組

 

 (5)掛載,服務端啟動rpcbind和nfs服務,在客戶端啟動rpcbind服務后,進行操作。

mount -t nfs 192.168.3.137:/data /mnt    #cilent01 --將服務器下的/data 掛載到本地/mnt
mount -t nfs 192.168.3.137:/data /mnt    #client02 --

server服務器的 /data 目錄:

  

 

 client01 添加一個 network.gz

  

 

 在client02上查看添加后的內容:

  

 

   已經同步:

在client02上將所有刪除:

  

 

 在client01上查看

  

在server上查看

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM