NFS網路檔案共享服務

2021-08-25 11:37:40 字數 3253 閱讀 6219

##簡介

網路檔案系統(network file system,縮寫作 nfs)是一種分布式檔案系統協議,最初由sun microsystems公司開發,並於2023年發布。其功能旨在允許客戶端主機可以像訪問本地儲存一樣通過網路訪問伺服器端檔案。

通過網路讓不同的機器系統之間可以彼此共享檔案和目錄。nfs伺服器可以允許nfs客戶端將遠端nfs伺服器端的共享目錄掛載到本地的nfs客戶端中。在本地的nfs客戶端的機器看來,nfs伺服器端共享的目錄就好像自己的磁碟分割槽和目錄一樣。一般客戶端掛載到本地目錄的名字可以隨便,但為方便管理,我們要和伺服器端一樣比較好。

##nfs掛載原理

nfs服務傳輸資料的時候沒有很特別固定的埠,由於沒有特定的埠,客戶端沒辦法連線服務,所以這時候就需要rpc服務(remote procedure call) 遠端呼叫協議

rpc服務最主要的功能就是記錄每個nfs功能所對應的的埠號,並且在nfs客戶端請求時將該埠和功能對應的資訊傳遞給請求資料的nfs客戶端,從而確保客戶端可以連線正確的nfs埠上去,達到實現資料傳輸互動資料的目的。

在資料傳輸過程中rpc還提供了幾個輔助的服務,保證了資料傳輸中一定的安全可靠

###資料傳輸具體過程

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

啟動nfs服務,並向rpc註冊埠資訊

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

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

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

##安裝

安裝nfs相關的工具

yum install  nfs-utils -y
實驗環境

系統:centos7

服務端ip:192.168.253.128

客戶端ip:192.168.253.129

假設我們現在有乙個目錄/data/要共享出去

服務端:先修改配置檔案/etc/exprots,新增一條記錄

/data 192.168.253.0/24(rw,all_squash)  ##表示允許192.168.253.0網段內主機掛載,可讀可寫,並且所有使用者都壓縮成nfsnobody
建立共享的目錄/data

mkdir -pv /data

啟動方式

systemctl  start nfs
可以看一下是不是啟動了111埠(rpc預設監聽埠)

客戶端:為了標準化,我們在客戶端也建立個相同的目錄來掛載

可以看出128主機共享出來了。現在我們掛載一下

mount -t nfs 192.168.253.128:/data /data
客戶端,在/data/目錄下建立乙個檔案。

這裡說許可權拒絕了,這是因為nfs裡面的許可權判定有2層,第一層是檔案系統本身的許可權,第二層是nfs允許的許可權。這裡我們在服務端建立/data的時候屬主和屬組都是root,而客戶端的使用者被壓縮成nfsbody,所以會拒絕,在檔案系統這一層就不被許可了。所以顯示許可權不夠,解決辦法,我們可以在服務端修改屬主和屬組為nfsnobody,

然後再建立試一下

chown -r nfsnobody.nfsnobody /data ##服務端執行
我們再客戶端再次建立

我們再來服務端看看是否真的有這個檔案

/etc/exports這個檔案預設是空的

編寫的格式為

《共享目錄》 客戶端1(選項) [客戶端2(選項) …]

選項:設定目錄的訪問許可權、使用者對映等,多個選項以逗號分隔

##相關的命令

####exportfs nfs服務管理命令

常用選項 例如

所有使用者均可訪問對該目錄但只有唯讀許可權,且允許匿名訪問

exportfs -o async *:/home/snail/share/gtk_1

showmount 檢視nfs服務端資訊

常見用法

showmount -e nfs_server_ip #檢視指定的nfs server上匯出的所有檔案系統; 

showmount -a #在nfs server上檢視nfs服務的所有客戶端列表;

rpcinfo 檢視rpc資訊

常用選項

####cat /var/lib/nfs/etab 檢視nfs配置檔案的完整引數設定檔案

##注意點

第一:nfs許可權認證有2層,服務端的本地檔案系統許可權是第一層,第二層是nfs服務允許你的許可權,所以如果本地檔案系統不允許你讀寫,就算nfs服務允許你讀寫也沒有用

第二:舉個例子。如果客戶端有乙個使用者ice ,uid為500,服務端uid為500 也有乙個使用者cube,這時候如果我們掛載選項沒有設定吧所有使用者都壓縮到nfsnobody,則客戶端ice使用者建立的檔案,在服務端看來,這個使用者的屬組和屬主都是cube,解決這個問題有2種方法。第一讓他們都壓縮成nfsnoby或者壓縮成某個固定使用者,第二,可以讓兩台主機使用者進行同步,標準化,這樣就可以保證都是同乙個使用者

第三:nfs掛載可以在/etc/fstab 檔案中設定開機自動掛載

#輸入showmount,顯示下面錯誤

clnt_create: rpc: unknown host

解決:

systemctl restart rpcbind

systemctl restart nfs-server

NFS網路檔案共享服務

keepalived lsyncd nfs lsyncd主 192.168.234.160 vip 192.168.234.200 lsyncd備 192.168.234.162 vip備 客戶端 192.168.234.161 要求 在lsyncd主服務上更新內容,要5分鐘之後同步到lsyncd備...

訪問網路檔案共享服務 NFS

nfs 網路檔案系統 nfs network file system 是由 linux unix 及其他類似作業系統使用的網際網路標準協議 可作為它們的本地網路檔案系統。它是一種活動擴充套件之下的開放標準 可支援本地 linux 許可權和檔案 系統功能 red hat enterprise linu...

nfs 檔案共享 服務

需要rpc服務 root xujiaxuan ftp service rpcbind start root xujiaxuan ftp chkconfig rpcbind on 設定開機自動啟動 開啟nfs服務 alt鍵 printscreen 截圖為當前視窗 修改 vi etc exports a...