nfs服務server client端配置

2021-09-13 02:00:23 字數 3051 閱讀 3957

nfs部署流程

nfs(network file system)即網路檔案系統,是freebsd支援的檔案系統中的一種,它允許網路中的計算機之間通過tcp/ip網路共享資源。在nfs的應用中,本地nfs的客戶端應用可以透明地讀寫位於遠端nfs伺服器上的檔案,就像訪問本地檔案一樣。

當我們在nfs伺服器設定好乙個共享目錄/home/public後,其他的有權訪問nfs伺服器的nfs客戶端就可以將這個目錄掛載到自己檔案系統的某個掛載點,這個掛載點可以自己定義,如上圖客戶端a與客戶端b掛載的目錄就不相同。並且掛載好後我們在本地能夠看到服務端/home/public的所有資料。如果伺服器端配置的客戶端唯讀,那麼客戶端就只能夠唯讀。如果配置讀寫,客戶端就能夠進行讀寫。掛載後,nfs客戶端檢視磁碟資訊命令:#df –h。

既然nfs是通過網路來進行伺服器端和客戶端之間的資料傳輸,那麼兩者之間要傳輸資料就要有想對應的網路埠,nfs伺服器到底使用哪個埠來進行資料傳輸呢?基本上nfs這個伺服器的埠開在2049,但由於檔案系統非常複雜。因此nfs還有其他的程式去啟動額外的埠,這些額外的用來傳輸資料的埠是隨機選擇的,是小於1024的埠;既然是隨機的那麼客戶端又是如何知道nfs伺服器端到底使用的是哪個埠呢?這時就需要通過遠端過程呼叫(remote procedure call,rpc)協議來實現了!

因為nfs支援的功能相當多,而不同的功能都會使用不同的程式來啟動,每啟動乙個功能就會啟用一些埠來傳輸資料,因此nfs的功能對應的埠並不固定,客戶端要知道nfs伺服器端的相關埠才能建立連線進行資料傳輸,而rpc就是用來統一管理nfs埠的服務,並且統一對外的埠是111,rpc會記錄nfs埠的資訊,如此我們就能夠通過rpc實現服務端和客戶端溝通埠資訊。prc最主要的功能就是指定每個nfs功能所對應的port number,並且通知客戶端,記客戶端可以連線到正常埠上去。

那麼rpc又是如何知道每個nfs功能的埠呢?

首先當nfs啟動後,就會隨機的使用一些埠,然後nfs就會向rpc去註冊這些埠,rpc就會記錄下這些埠,並且rpc會開啟111埠,等待客戶端rpc的請求,如果客戶端有請求,那麼伺服器端的rpc就會將之前記錄的nfs埠資訊告知客戶端。如此客戶端就會獲取nfs伺服器端的埠資訊,就會以實際埠進行資料的傳輸了。

1)首先伺服器端啟動rpc服務,並開啟111埠

2)伺服器端啟動nfs服務,並向rpc註冊埠資訊

3)客戶端啟動rpc(portmap服務),向服務端的rpc(portmap)服務請求服務端的nfs埠

4)服務端的rpc(portmap)服務反饋nfs埠資訊給客戶端。

5)客戶端通過獲取的nfs埠來建立和服務端的nfs連線並進行資料的傳輸。

1、檢查nfs相關軟體是否存在

rpm -qa | egrep -i 「nfs|rpcbind」

2、server端設定

vim /etc/exports

/opt/dockers/docker_recommend_server/logs    112.20.2.0/24(rw,insecure,no_root_squash,no_all_squash)

/opt/dockers/docker_sales_server/logs 112.20.2.0/24(rw,insecure,no_root_squash,no_all_squash)

/opt/dockers/docker_vip_server/logs 112.20.2.0/24(rw,insecure,no_root_squash,no_all_squash)

3、檢視rpc埠占用情況

lsof -i:111

command pid user fd type device size/off node name

systemd 1 root 34u ipv4 164257005 0t0 tcp *:sunrpc (listen)

systemd 1 root 35u ipv4 164257006 0t0 udp *:sunrpc

systemd 1 root 39u ipv6 164257007 0t0 tcp *:sunrpc (listen)

systemd 1 root 40u ipv6 164257008 0t0 udp *:sunrpc

rpcbind 112028 rpc 4u ipv4 164257005 0t0 tcp *:sunrpc (listen)

rpcbind 112028 rpc 5u ipv4 164257006 0t0 udp *:sunrpc

rpcbind 112028 rpc 6u ipv6 164257007 0t0 tcp *:sunrpc (listen)

rpcbind 112028 rpc 7u ipv6 164257008 0t0 udp *:sunrpc

4、nfs服務向rpc服務註冊埠資訊

5、啟動nfs服務

systemctl status nfs

systemctl start nfs #啟動

systemctl enable nfs #設定開機自啟

6、再次檢視nfs服務向rpc服務註冊埠資訊

7、查詢nfs、rpc程序是否存在

ps -ef |egrep "rpc|nfs「

1、檢視服務端的共享資訊

showmount -e 123.123.123.123

2、掛載至本地目錄

mount 123.123.123.123:/opt/dockers/docker_search_server/logs /opt/dockers/docker_log_eye/20190101/nginx/html/data-service/docker_recommend_logs

3、檢視掛載資訊

df -ha|grep dockers

參考blog列表:

1、2、

nfs 服務安裝

還是和之前一樣,網上找的nfs安裝過程,照著做,哎,太多東西不知道了。只能照著做。nfs伺服器在嵌入式開發中非常常用,可以實現主機和開發板共享檔案。1 安裝軟體包 sudo apt get install nfs common nfs kernel server portmap 2 配置 sudo ...

搭建nfs服務

記錄一下,留著以後用。這裡是以龍芯3210為例,其他開發板可以參考。工作環境 ubuntu 10.04 虛擬機器7.13 目標平台 龍芯3210開發板 開發包核心原始碼目錄 home linux 3210 開發包核心版本 2.6.18.1 交叉編譯工具 gcc 3.4.6 目的 在嵌入式的交叉編譯環...

NFS服務搭建

nfs服務用於任意兩台linux系統之間通訊,但這兩台機器得得用網線連線。安裝本機的nfs服務 以下操作在你的ubuntu中完成 1 sudo apt get install nfs kernel server 2 vim etc exports 新增 mnt nfswork rw,sync,no ...