NFS+Autofs服務

1.什麼是NFS(Network FileSystem)

     NFS 就是 Network FileSystem 的縮寫,最早之前是由 Sun 所發展出來的。他最大的功能就是可以透過網絡,讓不同的機器、不同的操作系統、可以彼此分享個別的檔案 ( share file ),所以,也可以簡單的將他看做是一個 file server 呢!這個 NFS Server 可以讓你的 PC 來將網絡遠程的 NFS 主機分享的目錄,掛載到本地端的機器當中,所以,在本地端的機器看起來,那個遠程主機的目錄就好象是自己的 partition 一般!

     雖然 NFS 有屬於自己的協議與使用的 port number ,但是在資料傳送或者其它相關訊息傳遞的時候, NFS 使用的則是一個稱爲遠程過程調用( Remote Procedure Call, RPC )的協議來協助 NFS 本身的運作!



2.RPC(Remote Procedure Call)

    當我們在使用某些服務來進行遠程聯機的時候,有些信息,例如主機的IP、服務的 port number、與對應到的服務之 PID 等等,都需要管理與對應!這些管理 port 的對應與服務相關性的工作,就是這個 Remote Procedure Call, RPC 的任務了

NFS 本身的服務並沒有提供資料傳遞的協議,但是 NFS 卻能讓我們進行檔案的分享,這其中的原因,就是 NFS 使用到一些其它相關的傳輸協議!而這些傳輸的協議,就是使用到這個所謂的 RPC 的功能囉!這也就是說, NFS 本身就是使用 RPC 的一個 program 就是了!說的更白話一點, NFS 也可以視作是一個 RPC server 啦!同時要注意到的是,在某些狀況中,不但跑 NFS 的 Server 需要激活 RPC 的服務,連帶的,要掛載 NFS partition 的 Client 機器,也需要同步激活 RPC 才行!這樣 Server 端與 Client 端才能藉由 RPC 的協議來進行 program port 的對應喔!NFS 主要在管理分享出來的目錄,而至於資料的傳遞,就直接將他丟給 RPC 的協議來運作就是了!



3.NFS需要有兩個套件才行,分別是:

nfs-utils

就是提供 rpc.nfsd 及 rpc.mountd 這兩個 NFS daemons 與其它相關 documents 與說明文件、執行檔等的套件!這個就是 NFS 的主要套件

portmap


NFS的安裝配置:

centos 5 :

yum -y install nfs-utils portmap

centos 6(在CentOS 6.3當中,portmap服務由rpcbind負責) :

yum -y install nfs-utils rpcbind


就如同剛剛提的到,我們的 NFS 其實可以被視爲一個 RPC server program,而要激活任何一個 RPC server program 之前,我們都需要做好 port 的對應 ( mapping ) 的工作才行,這個工作其實就是『 portmap 』這個服務所負責的



4.NFS server端的設定:

a)./etc/exports

分享的目錄 主機名稱1或IP1(參數1,參數2) 主機名稱2或IP2(參數3,參數4)

b).參數

rw: 可擦寫的權限

ro: 只讀的權限

no_root_squash: 登入 NFS 主機使用分享目錄的使用者,如果是 root 的話,那麼對於這個分享的目錄來說,他就具有 root 的權限!這個項目『極不安全』,不建議使用!

root_squash: 在登入 NFS 主機使用分享之目錄的使用者如果是 root 時,那麼這個使用者的權限將被壓縮成爲匿名使用者,通常他的 UID 與 GID 都會變成 nobody 那個身份;

all_squash: 不論登入 NFS 的使用者身份爲何,他的身份都會被壓縮成爲匿名使用者,通常也就是 nobody 啦!

anonuid: 前面關於 *_squash 提到的匿名使用者的 UID 設定值,通常爲 nobody,但是你可以自行設定這個 UID 的值!當然,這個 UID 必需要存在於你的 /etc/passwd 當中!

anongid: 同 anonuid ,但是變成 group ID 就是了

sync: 資料同步寫入到內存與硬盤當中

async: 資料會先暫存於內存當中,而非直接寫入硬盤\


5.exportfs的用法

如果我們修改了/etc/exports後,並不需要重啓nfs服務,只要用exportfs重新掃描一次/etc/exports,並且重新加載即可

語法: exportfs [-aruv]

-a: 全部掛載(或卸載) /etc/exports檔案內的設定

-r: 重新掛載/etc/exports裏面的設定,也同步的更新/etc/exports和/var/lib/nfs/xtab裏面的內容

-u:卸載某一目錄

-v:在export的時候,將分享的目錄顯示到熒屏上.


例子:

編寫/etc/exports 文件,將特定的目錄共享出去,在server段寫入,定義某臺機器可以訪問,某臺機器不可以訪問,不準寫入文件,


[root@aaa nfs]# cat /etc/exports

/ext4/aa *(rw)

/ext4/bb *(rw,,no_root_squash)

/nfs/tmp 10.0.0.123(rw,sync)

/nfs/opt *(ro)



exportfs -r 來實現重讀文件,不需要重啓服務

然後,可以通過另一臺服務器來掛載目錄,通過mount命令來掛載共享目錄。

mount x.x.x.x:/ext4/aa /mnt

掛載之後,進入/mnt操作,會發現無法進行新增,刪除等操作,即使使用root用戶也無法操作該目錄,以爲redhat 6中,默認會添加上root-squash選項,會把root用戶映射成nfsnobody賬號,所以掛載後的目錄權限需要根據nfsnobody的權限來做操作,可以設置成/ext4/aa爲777的權限,進入該目錄可以做操作,通過ls -lh去查看創建的目錄爲nfsnobody的所有者


mount x.x.x.x:/ext4/bb /mnt

掛載之後,用root用戶進入操作之後,創建目錄都爲root所屬

/nfs/tmp 10.0.0.123(rw,sync)

指定只有10.0.0.123這臺機器可以掛載,並且掛載後數據寫入會同步寫入到硬盤上面,也就是內存與硬盤同步。



Autofs搭建:

修改/etc/auto.master 這個文件,

客戶端本地目錄    /etc/auto.nfs 隨便指定的一個文件(可以去拷貝/etc/auto.misc)

/test   /etc/auto.nfs    指定服務器端掛載過來的目錄,是要掛到客戶端/test目錄下,


修改/etc/auto.nfs文件

opt -rw 10.0.0.23:/nfs


將 0.23服務器上面的nfs目錄自動掛載過來,掛載的目錄是/test/opt,/test是掛載點,具體掛載到哪一個目錄下面,是在auto.nfs設定。


其中,在auto.nfs掛載中,可加參數爲:

(1)-a:把/etc/fstab中列出的路徑全部掛載。

(2)-t:需要mount的類型,如nfs等。

(3)-r:將mount的路徑定爲read only。

(4)-v mount:過程的每一個操作都有message傳回到屏幕上。

(5)rsize=n:在NFS服務器讀取文件時NFS使用的字節數,默認值是1 024個字節。

(6)wsize=n:向NFS服務器寫文件時NFS使用的字節數,默認值是1 024個字節。

(7)timeo=n:從超時後到第1次重新傳送佔用的1/7秒的數目,默認值是7/7秒。

(8)retry=n:在放棄後臺mount操作之前可以嘗試的次數,默認值是7 000次。

(9)soft:使用軟掛載的方式掛載系統,若Client的請求得不到迴應,則重新請求並傳回錯誤信息。

(10)hard:使用硬掛載的方式掛載系統,該值是默認值,重複請求直到NFS服務器迴應。

(11)intr:允許NFS中斷文件操作和向調用它的程序返回值,默認不允許文件操作被中斷。

(12)fg:一直在提示符下執行重複掛載。

(13)bg:如果第1次掛載文件系統失敗,繼續在後臺嘗試執行掛載,默認值是失敗後不在後臺處理。

(14)tcp:對文件系統的掛載使用TCP,而不是默認的UDP。

說明:mount NFS服務器的另一個重要參數是hard(硬)mount或soft(軟)mount。


對於NFS掛載的時間默認是在/etc/sysconfig/autofs裏面可以查看。









發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章