天天看點

nfs

1.nfs:network file systen

nfs是一種檔案系統,也可以稱為一種協定(隻能使用在類unix的系統上,windows不适用),檔案系統都是在核心級别實作的,nfs也是在核心級别實作,它的工作機制嚴重依賴與rpc(遠端過程調用).他是如何實作的呢?伺服器端有本地的磁盤檔案系統,在伺服器級别内都是ext4(ext2,ext3都可)類型的,rpc相當于一個超級守護程序幫本地磁盤監聽在一個套接字上,隻有當用戶端發起遠端調用時,才在這個套接字上表現為nfs的檔案系統類型,而用戶端的核心中有nfs子產品,當用戶端需要挂載nfs系統時,就會想伺服器發起請求,當請求回來時,就會把伺服器端的共享目錄以nfs的檔案系統類型挂載在本地,用戶端就可對該檔案系統實行增删查該的操作,但是執行的操作的結果都是儲存在伺服器端.

1-1監聽端口:2049/tcp,2049/udp

使用者認證:nis(network infromation service)

nfs本身不做使用者認證,他隻做ip認證,nis可以幫他完成使用者認證,和賬戶映射.

2.rpc(遠端過程調用)

2-1:原理

nfs在通路遠端主機的時候,會先跟rpc會話,rpc會随機挑一個未使用的端口使用(任何端口),來檢查該用戶端是否有權限通路nfs,然後去調用伺服器端被rpc管理的服務(nfs)來完成用戶端和伺服器端的連接配接

2-2.安裝nfs-utils,一般裝系統的時候就裝好了

nfs

2-3啟動nfs,有時候啟動不了,要注意啟動rpcbind(service rpcbind start)

使用指令:service nfs start

nfs

2-4.檢視rpc監聽的端口,注意:moutd的端口每次重新開機都會改變

rpcinfo –p localhost

注意幾個程序:

mounted:挂載守護程序,負責用戶端來源認證,認證通過才允許挂載

nfsd:檔案讀寫操作

idmapd:id映射程序,把用戶端id号映射成伺服器的使用者名

rquotad:磁盤配額,限制使用者使用的空間大小

nlockmgr:鎖,禁止一個檔案被多個使用者通路

nfs
nfs
nfs

3.rpc

3-1.安裝rpcbind

使用指令:yum –y install rpcbind

nfs

3-2.檢視其他主機rpcbind監聽端口的資訊

rpc監聽端口:111/tcp,111/udp

rpcinfo –p host

nfs

4.配置

4-1.配置nfs配置檔案

nfs很簡單,隻要配置好這檔案就可以了(最好導出整個分區,不要導出單個目錄),挂載的用戶端可以使用網域;示例:/share 912.168.1.1(rw,no_root_squash)

/etc/exports

nfs

4-2.重新開機服務

實際生産中不要重新開機,這裡隻是為了示範,還有其他指令可以重新加載

使用指令:service nfs restart

nfs

4-3.在用戶端檢視伺服器端是否有共享檔案

之前有個用戶端沒有showmount指令,經測試是nfs-utils未安裝,安裝後可以解決

使用指令:showmount –e ip

nfs

4-4.在用戶端挂載檔案系統

使用指令:mount –t nfs 192.168.1.4:/share /nfs

nfs

注意:這時候用戶端的root使用者是沒有寫入權限的,因為在配置檔案中有個root_squash,這是預設設定,意思是讓用戶端的root使用者在伺服器端的權限最小(如果不想這樣可以使用no_root_squash),用戶端的root就可以執行寫操作了,建議使用預設.all_squash,減少所有來訪使用者的權限.注:檔案系統的檔案權限最終決定檔案系統的權限和網絡檔案系統的權限的交集.适用所有檔案系統

4-5.在用戶端建立一個uid為500,使用者名為nfs的賬戶,在伺服器端建立一個uid為500,使用者名為ldf的賬戶

使用指令:useradd –u 500 [nfs|ldf],這裡就不示範了

在用戶端的nfs目錄下建立一個aa的檔案

nfs
nfs

這是為什麼呢?因為nfs的特殊管理機制,在用戶端建立的檔案,會在一個中間伺服器(使用者認證和映射伺服器),檢查賬戶,如果用戶端和伺服器端的使用者id相同,使用者名不同,則建立的目錄為nobady.是以最好在每個伺服器或用戶端建立相同的id号和使用者名

4-6.重新導出不重新開機的方式,在伺服器上

使用指令:exportfs -rav:重新導出所有檔案系統

exportfs -uav:取消導出所有檔案系統

4-7:開機自動挂載檔案系統

編輯:/etc/fstab

nfs

補:需要讓用戶端通路伺服器端的檔案并且有讀寫權限,需設定伺服器端的檔案夾權限

如:伺服器端的檔案夾為root:root,要讓uid号為1000的使用者可以讀寫,sefacl -m u:1000:rwx /file.

  然後在用戶端建立一個uid号為1000的使用者,用這個使用者通路即可

就說到這裡吧.................

繼續閱讀