皮皮蝦
一、簡介
二、作業原理
三、安裝配置
一、簡介
NFS(Network File System)即網路檔案系統,它允許網路中的計算機之間通過網路共享資源,將NFS主機分享的目錄,掛載到本地客戶端當中,本地NFS的客戶端應用可以透明地讀寫位于遠端NFS服務器上的檔案,在客戶端端看起來,就像訪問本地檔案一樣,
RPC,基于C/S模型,程式可以使用這個協議請求網路中另一臺計算機上某程式的服務而不需知道網路細節,甚至可以請求對方的系統呼叫,
對于Linux而言,檔案系統是在內核空間實作的,即檔案系統比如ext3、ext4等是在Kernel啟動時,以內核模塊的身份加載運行的,
二、原理
NFS本身的服務并沒有提供資料傳遞的協議,而是通過使用RPC(遠程程序呼叫 Remote Procedure Call)來實作,當NFS啟動后,會隨機的使用一些埠,NFS就會向RPC去注冊這些埠,RPC就會記錄下這些埠,RPC會開啟111埠,通過client端和sever端埠的連接來進行資料的傳輸,在啟動nfs之前,首先要確保rpc服務啟動,
具體程序如下:

- 本地用戶要訪問nfs服務器中檔案,先向內核發起請求,內核處理呼叫nfs模塊及rpc client
- rpc client向rpc server發起連接
- 在連接之前,NFS服務除了啟動nfsd本身監聽的埠2049/tcp和2049/udp,還會啟動其它行程(如mountd,statd,rquotad等)以完成檔案共享,這些行程的埠是不固定的;是每次NFS服務啟動時向RPC服務注冊的,RPC服務會隨機分配未使用的埠
- 完成連接,接受訪問請求
- nfs應用程式向內核發起請求
- 內核呼叫檔案系統
然后client端通過獲取的NFS埠來建立和server端的NFS連接并進行資料的傳輸,
以下為啟動各服務的作用
rpc:遠程程序呼叫協議,是實作本地呼叫遠程主機實作系統呼叫的協議,
portmapper:負責分配rpc server的埠,并在client端請求時,負責回應目的rpc server埠回傳給client端,作業在tcp與udp的111埠上,
mountd:是nfs服務的認證服務的守護行程,client在收到回傳的真正埠時,就會去連接mountd,認證取得令牌,
nfsd:nfs的守護行程,負責接收到用戶的呼叫請求后與內核發出請求并得到呼叫結果回應給用戶,作業在tcp和udp的2049埠,
idmapd:是NFS的一個程式,用來負責遠程client端創建檔案后的權限問題,
quotad:用用于實作磁盤配額,當client端掛載nfs后可以限制磁盤空間的大小,
三、NFS服務配置安裝

相關組態檔及命令的使用
/etc/exports
/path/to/somedir CLIENT_LIST
多個客戶之間使用空白字符分隔
每個客戶端后面必須跟一個小括號,里面定義了此客戶訪問特性,如訪問權限等
172.16.0.0/16(ro,async) 192.16.0.0/24(rw,sync) *(ro)
權限屬性:
ro:只讀
rw:讀寫
sync:同步,資料同步寫到記憶體與硬碟中
async:異步,資料先暫存記憶體
root_squash: 將root用戶映射為來賓賬號
no_root_squash: 有root的權限,不建議使用
all_squash: 全部映射為來賓賬號
anonuid, anongid: 指定映射的來賓賬號的UID和GID
exportfs命令:
-a:跟-r或-u選項同時使用,表示重新掛載所有檔案系統或取消匯出所有檔案系統;
-r: 重新匯出
-u: 取消匯出
-v: 顯示詳細資訊
showmount命令:
showmount -e NFS_SERVER: 查看NFS服務器"匯出"的各檔案系統
showmount -a NFS_SERVER: 查看NFS服務器所有被掛載的檔案系統及其掛載的客戶端對應關系串列
showmount -d NFS_SERVER: 顯示NFS服務器所有匯出的檔案系統中被客戶端掛載了檔案系統串列
rpcinfo
-p hostname(orIP)
-p :顯示所有的 port 與 program 的資訊!
如果要讓mountd和quotad等行程監聽在固定埠,編輯組態檔/etc/sysconfig/nfs
客戶端使用mount命令掛載
mount -t nfs NFS_SERVER:/PATH/TO/SOME_EXPORT /PATH/TO/SOMEWHRERE
安裝配置
環境準備:
server端:192.168.1.222 centos 7
client端:192.168.1.200 centos 6.5
1.在服務端安裝nfs,# yum install nfs-utils rpcbind -y


#systemctl start nfs
3.客戶端同樣安裝nfs-utils和rpcbind并啟動,必須先啟動rpcbind,否則報錯(注意防火墻等) 
# mount -t nfs 192.168.1.222:/var/nfs /mnt
#showmount –e 192.168.1.222

將所有用戶映射為來賓賬號實驗
-
在服務器端添加用戶hot,并修改組態檔并重新掛載檔案系統
添加用戶
useradd –u 520 hot
修改/etc/exports
/var/nfs 192.168.1.0/24(rw,async,all_squash,anonuid=520)
重新掛載匯出
exportfs –ra

-
在客戶端上添加用戶code,分別在code用戶和root用戶下創建檔案,查看檔案屬性


可以看到檔案屬主都為服務器端設定好的來賓賬號hot的uid
讓mountd和quotad等行程監聽在固定埠,編輯組態檔/etc/sysconfig/nfs,取消注釋

重啟nfs,查看埠

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/110671.html
標籤:Linux
下一篇:編譯部署MySQL
