1. 程式人生 > 其它 >|NO.Z.00035|——————————|LinuxNetwork|——|Linux&NFS服務.V01|

|NO.Z.00035|——————————|LinuxNetwork|——|Linux&NFS服務.V01|



[LinuxNetworkEnd:Linux&NFS服務.V01]                                                        [Applications.LinuxNetworkEnd] [|NFS|普通使用者建立|自動掛載|普通使用者對映|]








一、什麼是NFS?
### --- 什麼是NFS?

~~~     NFS是Network File System的縮寫,即網路檔案系統,一種使用分散式檔案系統的協定,
~~~     由Sun公司開發,於1984年向外公佈,
~~~     功能是通過#網路讓不同的機器,不同的作業系統能夠彼此分享個別的資料,
~~~     讓應用程式在客戶端通過網路訪問位於伺服器磁碟中的資料,
~~~     是在#Unix系統間實現磁碟檔案共享的一種方式。
### --- 它的主要功能是通過網路讓不同的機器系統之間可以彼此共享檔案和目錄,

~~~     NFS伺服器可以允許NFS客戶端將遠端NFS伺服器的東西那個目錄掛載到本地的NFS客戶端中,
~~~     在本地的NFS客戶端的機器看來,NFS伺服器共享的目錄就好像自己的磁碟分割槽和目錄一樣,
~~~     一般客戶端掛載到本地目錄的名字可以隨便,但為方便管理,我們要和伺服器端一樣比較好。
NFS一般用來儲存共享視訊,圖片等靜態資料
二、NFS掛載原理
### --- NFS掛載原理

~~~     NFS是通過網路來進行服務端和客戶端之間的資料傳輸,
~~~     兩者之間要傳輸資料就要有相對應的網路埠來進行傳輸,
~~~     NFS伺服器到底使用什麼網路埠來傳輸資料的,
~~~     NFS伺服器端其實是選擇埠來進行資料傳輸,
~~~     那NFS客戶端又是如何知道NFS伺服器端到底使用的是哪個埠呢?
~~~     其實NFS伺服器時通過遠端呼叫(remote procedure call簡稱RPC)協議/服務來實現的,
~~~     也就是RPC服務會統一管理NFS的埠,客戶端和服務端通過RPC來先溝通NFS使用了那些埠,
~~~     之後再利用這些埠(小於1024)來進行資料的傳輸。
~~~     也就是RPC管理服務端的NFS埠分配,客戶端要傳輸資料,
~~~     那客戶端的RPC會先跟RPC去要伺服器的埠,要到埠後再進行連線,然後傳輸資料。
### --- 那RPC和NFS之間有時如何之間相互通訊的?

~~~     首先NFS啟動後,就會隨機的使用一些埠,然後NFS就會RPC去註冊這些埠,
~~~     RPC就會記錄下這些埠,並且RPC會開啟111埠,等待客戶端RPC的請求,
~~~     如果客戶端有請求,那服務端的NFS埠資訊告知客戶端。
### --- RPC和NFS的啟動順序是怎樣的?

~~~     在啟動NFS SERVER之前,
~~~     首先啟動RPC服務(即portmap服務,下同)否則NFS SERVER就無法向RPC服務區註冊,
~~~     另外,如果RPC服務重新啟動,原來已經註冊號的NFS埠資料就會全部丟失,
~~~     因此此時RPC服務管理的NFS順序也要重新啟動以重新想RPC註冊,
~~~     特別注意:一般修改NFS配置文件後,是不需要重啟NFS的,
~~~     直接在命令執行/etc/init.d/nfs reload
### --- 總結:客戶端NFS和服務端NFS通訊過程

~~~     首先服務端啟動RPC服務,並開啟111埠
~~~     啟動NFS服務,並向RPC註冊埠資訊
~~~     客戶端啟動RPC(portmap服務)向服務端的RPC(portmap)服務請求服務端的NFS埠
~~~     服務端的RPC(portmap)服務反饋NFS埠資訊給客戶端
~~~     客戶端通過獲取的NFS埠來寄哪裡和服務端的NFS連線並進行資料的傳輸
三、NFS相關協議及軟體安裝管理
### --- NFS相關協議及軟體安裝管理

~~~     協議:RPC(Remote Procedure Call Protocol)——遠端過程呼叫協議
~~~     軟體:nfs-utils-*:包括NFS命令與監控程式
~~~          rpcbind-*:支援安全NFS RPC服務的連線
### --- 安裝nfs-utils服務
~~~     注:通常情況下:是作為系統的預設包安裝的
~~~     CentoOS6.x之前rpcbind叫portmap

[root@server21 ~]# yum install -y nfs-utils-*
[root@server21 ~]# yum install -y rpcbind-*
四、NFS系統守護程序
### --- NFS系統守護程序

~~~     nfs:它是基本的NFS守護程序,主要功能是管理客戶端是否能夠登陸伺服器
~~~     rpcbind:主要功能是進行埠對映工作,
~~~     當客戶端嘗試並使用RPC伺服器提供的服務(如NFS服務)時,
~~~     rpcbind會將所管理的服務網對應的埠提供給客戶端,
~~~     從而是客戶可以通過該埠向伺服器請求服務。
五、NFS伺服器的配置
### --- NFS伺服器的配置

~~~     NFS伺服器的配置相對比較簡單,只需要在相應的配置檔案中進行設定,
~~~     然後啟動NFS伺服器即可。
~~~     NFS服務的配置檔案為/etc/exports,這個檔案是NFS的主要配置檔案,
~~~     不過系統並沒有預設值,所以這個檔案不一定存在,可能要使用vim手動建立,
~~~     然後在檔案裡面寫入配置內容。
~~~     /etc/exports    檔案內容格式:
### --- 共享目錄    客戶端1(訪問許可權,使用者對映,其他)  
### --- 客戶端2 (訪問許可權,使用者對映,其他)

~~~     共享目錄:共享目錄是指NFS伺服器共享給客戶機使用過的目錄
~~~     客戶端:客戶端時指網路中可以訪問這個NFS共享目錄的計算機。
### --- 客戶端常用的指定方式:

~~~     指定IP地址的主機:192.168.0.200
~~~     指定子網中所有主機:192.168.88.0
~~~     指定域名的主機:www.atyanqi.com
~~~     指定域中的所有主機:*.atyanqi.com
~~~     所有主機:*
### --- 設定輸出目錄的訪問許可權,使用者對映等

~~~     訪問許可權選項:
~~~     設定輸出目錄只讀:ro
~~~     設定輸出目錄讀寫:rw
### --- 使用者對映選項:

~~~     root_squash:將root使用者的訪問對映為匿名(nfsnobody)使用者UID和GID:(預設生效)
~~~     no_root_squash:保留管理員許可權,以伺服器管理員的許可權管理
~~~     all_squash:將遠端訪問的使用者及所屬組都對映為指定UID,GID的匿名使用者。
~~~     anonuid=xxx:將遠端訪問的所有使用者都對映為指定UID的匿名使用者:
~~~     anongid=xxx:將遠端訪問的所有組都對映為指定GID匿名組賬號:
### --- 其他選項:

~~~     sync:將資料同步寫入記憶體緩衝區域磁碟中,效率低,但可以保證資料的一致性(同步)
~~~     async:將資料先儲存在記憶體緩衝區中,必要時才寫入磁碟(非同步)








===============================END===============================


Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart                                                                                                                                                    ——W.S.Landor



來自為知筆記(Wiz)