nfs原理及安裝配置

2022-07-17 03:51:09 字數 3812 閱讀 1616

一、簡介

二、工作原理

三、安裝配置

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:遠端過程呼叫協議,是實現本地呼叫遠端主機實現系統呼叫的協議。

負責分配rpc server的埠,並在client端請求時,負責響應目的rpc server埠返回給client端,工作在tcp與udp的111埠上。

mountd:是nfs服務的認證服務的守護程序,client在收到返回的真正埠時,就會去連線mountd,認證取得令牌。

nfsd:nfs的守護程序,負責接收到使用者的呼叫請求後與核心發出請求並得到呼叫結果響應給使用者,工作在tcp和udp的2049埠。

idmapd:是nfs的乙個程式,用來負責遠端client端建立檔案後的許可權問題。

quotad:用用於實現磁碟配額,當client端掛載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,否則報錯(注意防火牆等)

4.掛載並檢視掛載資訊

# mount -t nfs 192.168.1.222:/var/nfs /mnt

#showmount –e 192.168.1.222

在伺服器端/var/nfs建立目錄或檔案,並在客戶端/mnt檢視即可。

將所有使用者對映為來賓賬號實驗

在伺服器端新增使用者hot,並修改配置檔案並重新掛載檔案系統

新增使用者

useradd –u 520 hot

修改/etc/exports

/var/nfs    192.168.1.0/24(rw,async,all_squash,anonuid=520)

重新掛載匯出

在客戶端上新增使用者code,分別在code使用者和root使用者下建立檔案,檢視檔案屬性

可以看到檔案屬主都為伺服器端設定好的來賓賬號hot的uid

讓mountd和quotad等程序監聽在固定埠,編輯配置檔案/etc/sysconfig/nfs,取消注釋

重啟nfs,檢視埠

nfs安裝配置

nfs安裝於配置 2.配置nfs vi etc exports home nfs rw,sync,no root squash 3.啟動nfs etc init.d nfs kernel server start 啟動nfs etc init.d nfs kernel server stop 停止n...

NFS安裝配置

環境概述 將web伺服器a和b的目錄 data wwwroot配置為 共享目錄,共享目錄所屬使用者組為www 伺服器a nfs服務端 ip 172.16.28.123 yum y install nfs utils rpcbind useradd www 檢視www的使用者的uid和gid,和客戶端...

nfs安裝配置

1.yum y install nfs yum y install mount 2.chkconfig nfs on netstat antpu grep 2049檢視埠有沒有啟動 3.ll etc exports nfs建立共享檔案 共享目錄配置在這個檔案 4.vim etc exports me...