導航:首頁 > 文件管理 > nfs伺服器配置哪些文件

nfs伺服器配置哪些文件

發布時間:2023-02-23 11:40:44

linux 環境下搭建NFS服務

NFS(Network File System),網路文件存儲系統,它最早是由 Sun 公司開發的,也是 FreeBSD 支持的文件系統中的一個,它允許網路中的計算機之間通過TCP/IP 網路共享資源。通過 NFS 協議,我們本地 NFS 的客戶端應用可以透明的讀寫位於服務端 NFS 伺服器上的文件,就像訪問本地文件一樣方便。簡單的理解,NFS 就是可以透過網路,讓不同的主機,不同的操作系統可以共享存儲的服務。
NFS 在文件傳送或信息傳送過程中依賴 RPC(Remote Procere Call)協議,即遠程過程調用,NFS的各項功能都必須向 RPC 來注冊,如此一來 RPC 才能了解 NFS 這服務的各項功能 Port,PID,NFS 在伺服器所監聽的 IP 等,而客戶端才能透過 RPC 的詢問找到正確對應的埠,所以 NFS 必須要有 RPC 存在是才能成功的提供服務,簡單的理解二者關系:NFS 是一個文件存儲系統,而 RPC 是負責信息的傳輸。

通過上面的簡介,我們知道 NFS 服務需要依賴 RPC 服務,所以這里 NFS 服務端需要安裝 rpcbind 和 nfs-utils ,客戶端只需要安裝 nfs-utils 即可,由於我們選用 CentOS 系統,所以可以使用 yum 快速的安裝。

然後安裝 NFS 服務

另:Ubuntu 16.04 安裝命令

我們在服務端創建一個共享目錄 /data/share ,作為客戶端掛載在遠端入口,然後設置許可權

然後,修改 NFS 配置文件 /etx/exports

說明一下,這里配置後邊有很多參數,每個參數有不同的含義,具體可以參考下邊。此處,我配置了將 /data/share 文件目錄設置為允許IP為 192.168.0.0/24 區間的客戶端掛載。然後,如果客戶端IP不在該區間也想要掛載的話,可以設置IP區間更大或者設置為 * 即允許所有客戶端掛載,例如: /home *(ro, sync,insecure,no_root_squash) 設置 /home 目錄允許所有客戶端只讀掛載。

接下來,我們先啟動 RPC 服務

我們發現,啟動了 NFS 服務後,RPC 注冊的埠列表明顯增多。現在服務端都啟動起來了,在服務端看下是否正確載入了設置的 /etc/exports 配置

最後,在另一台Linux虛擬機上測試一下,是否能夠正確掛載。首先,我們可以在客戶端查看下NFS服務端設置可共享的目錄信息

然後,在客戶端創建掛載目錄/share

最後,掛載遠端目錄到本地 /share 目錄

可以看到,可以正確將遠端 NFS 目錄掛載到本地。注意:掛載點 /share 目錄必須已經存在,而且目錄中沒有文件或子目錄
最後,我們在 NFS 服務端 /data/share 目錄下創建一個文件,看下客戶端能否正確讀取並修改

都可以了,這里因為上面設置了 NFS 遠端目錄許可權為 rw 擁有讀寫許可權,如果設置為 ro ,那麼客戶端只能讀取,不能寫入。根據實際應用場景合理配置。
NFS 默認使用 UDP協議進行掛載,為了提供 NFS 的穩定性,可以使用 TCP 協議掛載,那麼客戶端掛載命令如下:

最後,卸載命令

❷ linux配置nfs步驟

NFS的配置過程很簡單。在伺服器端中編輯 /etc/exports 文件,添加如下內容: /home/nfs-share 192.168.1.122 (rw,sync)
第一項是要共享的目錄,後者為共享的配置參數一般為: (rw,sync,no_root_squash,no_all_squash,no_subtree_check)
然後開啟NFS和portmap服務:
/etc/init.d/nfs start //用service nfs start也可以 /etc/init.d/portmap start //用service portmap stasrt也可以
在centos6.5中portmap已經改為rpcbind 在客戶端,用mount –t nfs 192.168.123:/home/nfs-share /home/remote_file掛載伺服器端的共享目錄到本地的/home/remote-file掛載點,然後我們就可以在客戶端上應用到遠程主機上的/home/nfs-share目錄了。想要系統在開機時自動掛載,修改/etc/fstab文件,把NFS伺服器的共享目錄添加進去就可以了,這個不用多說。

如何知道遠程主機上的共享目錄情況呢?使用showmount命令,這個命令需要root許可權。它有三個選項(記住這三個選項代表的含義: showmount –a IP 顯示指定NFS伺服器的客戶端以及伺服器端在客戶端的掛載點 showmount –d IP 顯示指定NFS伺服器在客戶端的掛載點 showmount –e IP 顯示指定NFS伺服器上的共享目錄列表(或者叫輸出列表) 我們輸入命令showmount –a 192.168.1.123:

圖片客戶端中出現的mount clntudp_create: RPC: Program not registered錯誤是怎麼回事?噢,我剛才重啟了一下伺服器端,重啟後NFS服務沒有開啟。 我們開啟伺服器端的NFS服務,再從客戶端上查看一下NFS伺服器的情況:

Showmount –a顯示出NFS伺服器192.168.1.123的共享目錄被客戶端192.168.122掛載到/home中;

在showmount -e IP,出現clnt_create: RPC: Port mapper failure - Timed out報錯
解決方案:
被訪問的NFS伺服器上的防火牆沒有添加規則,向iptables裡面添加以下查看的所有埠即可(目前解決的方法,當然你也可以關閉防火牆,不過這樣是比較不安全的,如果你的nfs作用不大,建議你另選別的應用來替代吧!畢竟開那麼多的埠,比較不安全呀!)

通過#rpcinfo -p 10.10.209.148
[root@rh01 /]# rpcinfo -p 10.10.209.148program vers proto port service100000 4 tcp 111 portmapper100000 3 tcp 111 portmapper100000 2 tcp 111 portmapper100000 4 udp 111 portmapper100000 3 udp 111 portmapper100000 2 udp 111 portmapper100024 1 udp 52943 status100024 1 tcp 37706 status100011 1 udp 875 rquotad100011 2 udp 875 rquotad100011 1 tcp 875 rquotad100011 2 tcp 875 rquotad100003 2 tcp 2049 nfs100003 3 tcp 2049 nfs100003 4 tcp 2049 nfs100227 2 tcp 2049 nfs_acl100227 3 tcp 2049 nfs_acl100003 2 udp 2049 nfs100003 3 udp 2049 nfs100003 4 udp 2049 nfs100227 2 udp 2049 nfs_acl100227 3 udp 2049 nfs_acl100021 1 udp 37438 nlockmgr100021 3 udp 37438 nlockmgr100021 4 udp 37438 nlockmgr100021 1 tcp 46331 nlockmgr100021 3 tcp 46331 nlockmgr100021 4 tcp 46331 nlockmgr100005 1 udp 57177 mountd100005 1 tcp 43147 mountd100005 2 udp 49154 mountd100005 2 tcp 54810 mountd100005 3 udp 55707 mountd100005 3 tcp 58309 mountd
[root@rh01 /]#

剛才在重啟NFS服務的時候,細心的話可以注意到,我們在輸入命令/etc/init.d/nfs start開啟nfs服務時,系統還自作主張地開啟了NFS quotas等其它3個服務。

怎麼回事?我們只輸入了一條啟動NFS服務的命令,它怎麼額外的啟動了3個服務?後面的啟動portmap服務又是怎麼回事? 我們首先要了解一點:NFS文件系統要提供服務單靠本身的NFS服務是不夠的,還需要調用其它服務,這個其它服務就是RPC(remote procere call,遠程過程調用)服務和portmap服務。由於NFS服務本身不提供文件傳輸功能,我們要遠程使用NFS文件系統就需要RPC服務的支持;而portmap服務用來為RPC服務進行動態埠分配和映射,所以portmap服務也是NFS服務所必須的。

我們查看一下服務的啟動情況:

所遇錯誤:
/etc/init.d/nfs-kernel-server: 沒有那個文件或目錄
解決方案:
沒有配置、安裝NFS
Linux 下配置NFS服務
1、安裝

2、配置

3、客戶端

所遇問題:centos6.5
portmap: 未被識別的服務
解決方案:
由於在6系列裡面,portmap已經改名了 ,6系列需要使用 service rpcbind start啟動[root@unix-big-bang ~]# service portmap start
portmap: 未被識別的服務
[root@unix-big-bang ~]# service rpcbind status
rpcbind (pid 1312) is running...
[root@unix-big-bang ~]#

好文共賞:
linux nfs文件共享

◆一、概念
NFS是網路文件系統(Network File System)的簡稱,是分布式計算機系統的一個組成部分,可實現在異構網路上共享和裝配遠程文件系統。
NFS由SUN公司開發,目前已成為文件服務的一種標准(RFC1904,RFC1813)。其最大的功能就是可以通過網路,讓不同 操作系統 的計算機可以共享數據,所以也可以看作是一個文件伺服器。NFS是除了SAMBA之外Windows與Linux及Unix與Linux之間通信的方法。

理想條件下的NFS 網路拓撲結構

1、設置Linux系統之間的文件共享(Linux與Windows中間文件共享採用SAMBA服務);
2、NFS只是一種文件系統,本身沒有傳輸功能,是基於RPC協議實現的,才能達到兩個Linux系統之間的文件目錄共享;
3、NFS為C/S 架構 ;
◆二、伺服器配置
1、配置文件
主要配置文件為:/etc/exports
格式為: 共享目錄 可mount主機IP(參數1,參數2,……)
如:/var/nfs 172.20. . (rw,sync,no_rootl_squash)
說明:必須注意nfs/目錄的訪問許可權,必須設置成777許可權;父目錄/var許可權無要求,普通的755即可;
2、啟動相關服務
然後依次啟動相關服務:portmap,nfslock,nfs
service portmap start
service nfslock start
service nfs start
關閉順序相反。
3、檢查共享目錄
隨後可以採用showmount –e查看一下,看看共享的目錄情況:
[root@ns var]# showmount -e
Export list for ns.osserver:
/var/nfs 172.20. .
OK,到此為止,NFS伺服器搭建完畢;
◆三、客戶端配置
1、確保portmap運行
客戶端必須確保RPC協議相應的portmap正常運行,否則mount將失敗;
2、掛載/var/nfs目錄(本地掛載點為/mnt/nfs)
mount -t nfs 172.20.65.16:/var/nfs /mnt/nfs
成功mount以後,即可同本地目錄一樣隨意操作;
◆四、其它相關命令
1、當修改了/etc/exports文件後,可以不用重新啟動nfs服務,直接採用exports –rv 即可重新導出共享目錄;
該命令格式如下:
exportfs [-aruv]
-a :全部mount或者unmount /etc/exports中的內容
-r :重新mount /etc/exports中分享出來的目錄
-u :umount 目錄
-v :在 export 的時候,將詳細的信息輸出到屏幕上。
具體例子:
[root@ns var]# showmount -e
Export list for ns.osserver:
/var/nfs 172.20. .
[root@ns var]# exportfs –au #全部卸載
[root@ns var]# showmount -e
Export list for ns.osserver:
[root@ns var]# exportfs –rv #全部重新 export 一次
exporting 172.20. . :/var/nfs
[root@ns var]#
2、showmout命令對於NFS的操作和查錯有很大的幫助,所以我們先來看一下showmount的用法
showmout
-a :這個參數是一般在NFS SERVER上使用,是用來顯示已經mount上本機nfs目錄的cline機器。
-e :顯示指定的NFS SERVER上export出來的目錄。
例如:
[root@localhost ~]# showmount -e 172.20.16.139
Export list for 172.20.16.139 :/root/share 172.20.16.137
[root@ns var]# showmount -a
All mount points on localhost.localdomain: :/root/share,172.20. . :/root/share,172.20.16. :/root/share,172.20.16.139:/nfsshare,172.20.16.139:/root/share172.20.16.137: 172.20.16.137:,172.20. . 172.20.16.137:,172.20.16. 172.20.16.137:/root/share172.20.16.139: 172.20.16.139:,172.20. . 172.20.16.139:,172.20.16. 172.20.16.139:,172.20.16.139172.20.16.139:DEFAULT
◆五、常見問題解答
1、提示:mount to NFS server 餄.20.67.203' failed: server is down.
解決方案:可能是NFS伺服器的防火牆有問題;
2、提示:mount: RPC: Timed out
解決方案:由於RPC協議沒運行;啟動portmap服務;
也有可能是防火牆問題;Server/Client均有可能。

❸ NFS架構(轉載)

1.為什麼用共享存儲
2.存儲有哪些工具
3.共享存儲應用場景有哪些
4.部署nfs共享存儲
5.客戶端嘗試連接共享存儲
什麼是NFS?
NFS 是 Network File System 的縮寫及網路文件系統。 NFS 主要功能是通過區域網絡讓不同的主機系統之間可以共享文件或目錄。
NFS 系統和 Windows 網路共享、網路驅動器類似, 只不過 windows 用於區域網, NFS 用於企業集群架構中, 如果是大型網站, 會用到更復雜的分布式文件系統 FastDFS,glusterfs,HDFS
那麼我們為什麼要使用數據存儲共享服務?
1.實現多台伺服器之間數據共享
2.實現多台伺服器之間數據一致

下面我將通過圖解給大家展示集群需要共享存儲服務的理由。
1.A 用戶上傳圖片經過負載均衡,負載均衡將上傳請求調度至 WEB1 伺服器上。
2.B 用戶訪問 A 用戶上傳的圖片,此時 B 用戶被負載均衡調度至 WEB2 上,因為 WEB2 上沒有這張圖片,所以 B用戶無法看到 A 用戶傳的圖片

如果有共享存儲的情況
1.A 用戶上傳圖片無論被負載均衡調度至 WEB1 還是 WEB2, 最終數據都被寫入至共享存儲
2.B 用戶訪問 A 用戶上傳圖片時,無論調度至 WEB1 還是 WEB2,最終都會上共享存儲訪問對應的文件,這樣就可以訪問到資源了

NFS工作原理
1.用戶進程訪問 NFS 客戶端,使用不同的函數對數據進行處理
2.NFS 客戶端通過 TCP/IP 的方式傳遞給 NFS 服務端
3.NFS 服務端接收到請求後,會先調用 portmap 進程進行埠映射。
4.nfsd 進程用於判斷 NFS 客戶端是否擁有許可權連接 NFS 服務端。
5.Rpc.mount 進程判斷客戶端是否有對應的許可權進行驗證。
6.idmap 進程實現用戶映射和壓縮
7.最後 NFS 服務端會將對應請求的函數轉換為本地能識別的命令,傳遞至內核,由內核驅動硬體。
注意: rpc 是一個遠程過程調用,那麼使用 nfs 必須有 rpc 服務

1.nfs依賴於RPC服務來傳遞消息
2.NFS服務啟動的埠號是隨機的,啟動之後會向本地的RCP注冊
3.先啟動RPC服務,再啟動NFS服務
4.NFS和RPC之間的通訊是他們自己內部完成的,對於用戶來說無感知
5.NFS客戶端和服務端不會直接溝通,必須通過RPC服務傳遞消息
6.防火牆要開放RPC服務的埠

nfs 服務程序的配置文件為/etc/exports,需要嚴格按照共享目錄的路徑 允許訪問的 NFS 客戶端(共享許可權參數)格式書寫,定義要共享的目錄與相應的許可權,具體書寫方式如下圖所示

配置文件參數解釋:
執行 man exports 命令,然後切換到文件結尾,可以快速查看如下樣例格式:
nfs共享參數 參數作用
rw 讀寫許可權
ro 只讀許可權
root_squash
當 NFS 客戶端以 root 管理員訪問時,映射為 NFS 伺服器的匿名用戶(不常用)
no_root_squash
當 NFS 客戶端以 root 管理員訪問時,映射為 NFS 伺服器的 root 管理員(不常用)
all_squash
無論 NFS 客戶端使用什麼賬戶訪問,均映射為 NFS 伺服器的匿名用戶(常用)
no_all_squash
無論 NFS 客戶端使用什麼賬戶訪問,都不進行壓縮
sync
同時將數據寫入到內存與硬碟中,保證不丟失數據
async
優先將數據保存到內存,然後再寫入硬碟;這樣效率更高,但可能會丟失數據
anonuid
配置 all_squash 使用,指定 NFS 的用戶 UID,必須存在系統

anongid
配置 all_squash 使用,指定 NFS 的用戶 UID,必須存在系統

寫入配置文件:注意!IP地址和後面的小括弧沒有空格

創建數據目錄和授權:

在使用 NFS 服務進行文件共享之前,需要使用 RPC(Remote Procere Call 遠程過程調用服務將 NFS 伺服器的IP 地址和埠號信息發送給客戶端。因此,在啟動 NFS 服務之前,需要先重啟並啟用 rpcbind 服務程序,同時都加入開機自啟動

客戶端安裝nfs服務十分簡單,只需要安裝nfs軟體包即可

安裝完成後只需要啟動rpcbind,不需要啟動nfs

使用showmount命令查看nfs共享信息查詢 NFS 伺服器的遠程共享信息,其輸出格式為「共享的目錄名稱 允許使用客戶端地址」。

掛載命令: 創建掛載目錄
在 NFS 客戶端創建一個掛載目錄, 使用 mount 命令並結合-t 參數, 指定要掛載的文件系統的類型, 並在命令後面寫上伺服器的 IP 地址, 以及伺服器上的共享目錄, 最後需要寫上要掛載到本地系統(客戶端)的目錄

查看是否掛載成功:

測試寫入數據是否正常

寫入開機自動掛載

卸載命令:注意!卸載的時候如果提示」umount.nfs: /nfsdir: device is busy」先切換到其他目錄再卸載

強制卸載命令:

服務端配置:

客戶端掛載:

測試讀取:

寫入測試:

服務端配置:

服務端創建用戶及授權:

重啟NFS服務:

更改目錄授權:

客戶端操作:

我們會發現依然可以寫入,但是為了避免這種情況發生,建議客戶端也創建相同uid gid的用戶

參考博客

啟動NFS會開啟如下埠:
1)portmapper 埠:111 udp/tcp;
2)nfs/nfs_acl 埠:2049 udp/tcp;
3)mountd 埠:"32768--65535" udp/tcp
4)nlockmgr 埠:"32768--65535" udp/tcp
系統 RPC服務在 nfs服務啟動時默認會給 mountd 和 nlockmgr 動態選取一個隨機埠來進行通訊。

1.查看NFS啟動後的埠

2.將隨機的埠號設置固定

3.重啟nfs和rpc服務

4.再次查看埠信息,發現埠號已經固定了

5.設置iptables

6.保存配置

如果設置了開機自啟動,但是系統啟動的時候NFS並沒有提供服務,就會導致開機自檢的時候卡在掛在那一步

NFS 存儲優點
1.NFS 文件系統簡單易用、方便部署、數據可靠、服務穩定、滿足中小企業需求。
2.NFS 文件系統內存放的數據都在文件系統之上,所有數據都是能看得見
NFS 存儲局限
1.存在單點故障, 如果構建高可用維護麻煩 web->nfs()->backup
2.NFS 數據明文, 並不對數據做任何校驗。
3.客戶端掛載 NFS 服務沒有密碼驗證, 安全性一般(內網使用)
NFS 應用建議
1.生產場景應將靜態數據盡可能往前端推, 減少後端存儲壓力
2.必須將存儲里的靜態資源通過 CDN 緩存 jpg\png\mp4\avi\css\js
3.如果沒有緩存或架構本身歷史遺留問題太大, 在多存儲也無用

准備 3 台虛擬機伺服器,並且請按照要求搭建配置 NFS 服務。
NFS 服務端(A)
NFS 客戶端(B)
NFS 客戶端(C)
1.在 NFS 服務端(A)上共享/data/w(可寫)及/data/r(只讀)
2.在 NFS 客戶端(B/C)上進行掛載
環境准備

❹ 要配置nfs伺服器在伺服器端主要配置什麼文件

一、NFS服務簡介

NFS 是Network File System的縮寫,即網路文件系統。一種使用於分散式文件系統的協定,由Sun公司開發,於1984年向外公布。功能是通過網路讓不同的機器、不同的操作系統能夠彼此分享個別的數據,讓應用程序在客戶端通過網路訪問位於伺服器磁碟中的數據,是在類Unix系統間實現磁碟文件共享的一種方法。

NFS 的基本原則是「容許不同的客戶端及服務端通過一組RPC分享相同的文件系統」,它是獨立於操作系統,容許不同硬體及操作系統的系統共同進行文件的分享。

NFS在文件傳送或信息傳送過程中依賴於RPC協議。RPC,遠程過程調用 (Remote Procere Call) 是能使客戶端執行其他系統中程序的一種機制。NFS本身是沒有提供信息傳輸的協議和功能的,但NFS卻能讓我們通過網路進行資料的分享,這是因為NFS使用了一些其它的傳輸協議。而這些傳輸協議用到這個RPC功能的。可以說NFS本身就是使用RPC的一個程序。或者說NFS也是一個RPC SERVER。所以只要用到NFS的地方都要啟動RPC服務,不論是NFS SERVER或者NFS CLIENT。這樣SERVER和CLIENT才能通過RPC來實現PROGRAM PORT的對應。可以這么理解RPC和NFS的關系:NFS是一個文件系統,而RPC是負責負責信息的傳輸。

二、系統環境

系統平台:CentOS release 5.6 (Final)

NFS Server IP:192.168.1.108

防火牆已關閉/iptables: Firewall is not running.

SELINUX=disabled

三、安裝NFS服務

NFS的安裝是非常簡單的,只需要兩個軟體包即可,而且在通常情況下,是作為系統的默認包安裝的。

nfs-utils-* :包括基本的NFS命令與監控程序
portmap-* :支持安全NFS RPC服務的連接
1、查看系統是否已安裝NFS

系統默認已安裝了nfs-utils portmap 兩個軟體包。

2、如果當前系統中沒有安裝NFS所需的軟體包,需要手工進行安裝。nfs-utils 和portmap 兩個包的安裝文件在系統光碟中都會有。

復制代碼
# mount /dev/cdrom /mnt/cdrom/
# cd /mnt/cdrom/CentOS/
# rpm -ivh portmap-4.0-65.2.2.1.i386.rpm
# rpm -ivh nfs-utils-1.0.9-50.el5.i386.rpm
# rpm -q nfs-utils portmap
復制代碼

四、NFS系統守護進程

nfsd:它是基本的NFS守護進程,主要功能是管理客戶端是否能夠登錄伺服器;
mountd:它是RPC安裝守護進程,主要功能是管理NFS的文件系統。當客戶端順利通過nfsd登錄NFS伺服器後,在使用NFS服務所提供的文件前,還必須通過文件使用許可權的驗證。它會讀取NFS的配置文件/etc/exports來對比客戶端許可權。
portmap:主要功能是進行埠映射工作。當客戶端嘗試連接並使用RPC伺服器提供的服務(如NFS服務)時,portmap會將所管理的與服務對應的埠提供給客戶端,從而使客戶可以通過該埠向伺服器請求服務。
五、NFS伺服器的配置

NFS伺服器的配置相對比較簡單,只需要在相應的配置文件中進行設置,然後啟動NFS伺服器即可。

NFS的常用目錄

/etc/exports NFS服務的主要配置文件
/usr/sbin/exportfs NFS服務的管理命令
/usr/sbin/showmount 客戶端的查看命令
/var/lib/nfs/etab 記錄NFS分享出來的目錄的完整許可權設定值
/var/lib/nfs/xtab 記錄曾經登錄過的客戶端信息
NFS服務的配置文件為 /etc/exports,這個文件是NFS的主要配置文件,不過系統並沒有默認值,所以這個文件不一定會存在,可能要使用vim手動建立,然後在文件裡面寫入配置內容。

/etc/exports文件內容格式:

<輸出目錄> [客戶端1 選項(訪問許可權,用戶映射,其他)] [客戶端2 選項(訪問許可權,用戶映射,其他)]
a. 輸出目錄:

輸出目錄是指NFS系統中需要共享給客戶機使用的目錄;

b. 客戶端:

客戶端是指網路中可以訪問這個NFS輸出目錄的計算機

客戶端常用的指定方式

指定ip地址的主機:192.168.0.200
指定子網中的所有主機:192.168.0.0/24 192.168.0.0/255.255.255.0
指定域名的主機:david.bsmart.cn
指定域中的所有主機:*.bsmart.cn
所有主機:*
c. 選項:

選項用來設置輸出目錄的訪問許可權、用戶映射等。

NFS主要有3類選項:

訪問許可權選項

設置輸出目錄只讀:ro
設置輸出目錄讀寫:rw
用戶映射選項

all_squash:將遠程訪問的所有普通用戶及所屬組都映射為匿名用戶或用戶組(nfsnobody);
no_all_squash:與all_squash取反(默認設置);
root_squash:將root用戶及所屬組都映射為匿名用戶或用戶組(默認設置);
no_root_squash:與rootsquash取反;
anonuid=xxx:將遠程訪問的所有用戶都映射為匿名用戶,並指定該用戶為本地用戶(UID=xxx);
anongid=xxx:將遠程訪問的所有用戶組都映射為匿名用戶組賬戶,並指定該匿名用戶組賬戶為本地用戶組賬戶(GID=xxx);
其它選項

secure:限制客戶端只能從小於1024的tcp/ip埠連接nfs伺服器(默認設置);
insecure:允許客戶端從大於1024的tcp/ip埠連接伺服器;
sync:將數據同步寫入內存緩沖區與磁碟中,效率低,但可以保證數據的一致性;
async:將數據先保存在內存緩沖區中,必要時才寫入磁碟;
wdelay:檢查是否有相關的寫操作,如果有則將這些寫操作一起執行,這樣可以提高效率(默認設置);
no_wdelay:若有寫操作則立即執行,應與sync配合使用;
subtree:若輸出目錄是一個子目錄,則nfs伺服器將檢查其父目錄的許可權(默認設置);
no_subtree:即使輸出目錄是一個子目錄,nfs伺服器也不檢查其父目錄的許可權,這樣可以提高效率;
六、NFS伺服器的啟動與停止

在對exports文件進行了正確的配置後,就可以啟動NFS伺服器了。

1、啟動NFS伺服器

為了使NFS伺服器能正常工作,需要啟動portmap和nfs兩個服務,並且portmap一定要先於nfs啟動。

# service portmap start
# service nfs start

2、查詢NFS伺服器狀態

# service portmap status
# service nfs status

3、停止NFS伺服器

要停止NFS運行時,需要先停止nfs服務再停止portmap服務,對於系統中有其他服務(如NIS)需要使用時,不需要停止portmap服務

# service nfs stop
# service portmap stop
4、設置NFS伺服器的自動啟動狀態

對於實際的應用系統,每次啟動LINUX系統後都手工啟動nfs伺服器是不現實的,需要設置系統在指定的運行級別自動啟動portmap和nfs服務。

# chkconfig --list portmap
# chkconfig --list nfs

設置portmap和nfs服務在系統運行級別3和5自動啟動。

# chkconfig --level 35 portmap on
# chkconfig --level 35 nfs on

七、實例

1、將NFS Server 的/home/david/ 共享給192.168.1.0/24網段,許可權讀寫。

伺服器端文件詳細如下:

# vi /etc/exports

/home/david 192.168.1.0/24(rw)
2、重啟portmap 和nfs 服務

# service portmap restart
# service nfs restart
# exportfs

3、伺服器端使用showmount命令查詢NFS的共享狀態

# showmount -e//默認查看自己共享的服務,前提是要DNS能解析自己,不然容易報錯

# showmount -a//顯示已經與客戶端連接上的目錄信息

4、客戶端使用showmount命令查詢NFS的共享狀態

# showmount -e NFS伺服器IP

5、客戶端掛載NFS伺服器中的共享目錄

命令格式

# mount NFS伺服器IP:共享目錄 本地掛載點目錄
# mount 192.168.1.108:/home/david/ /tmp/david/

# mount |grep nfs

掛載成功。

查看文件是否和伺服器端一致。

6、NFS的共享許可權和訪問控制

現在我們在/tmp/david/ 裡面建立一個文件,看看許可權是什麼

# touch 20130103

這里出現Permission denied,是因為NFS 伺服器端共享的目錄本身的寫許可權沒有開放給其他用戶,在伺服器端打開該許可權。

# chmod 777 -R /home/david/

再次在客戶端/tmp/david/ 裡面建立一個文件

我用root 用戶建立的文件,變成了nfsnobody 用戶。

NFS有很多默認的參數,打開/var/lib/nfs/etab 查看分享出來的/home/david/ 完整許可權設定值。

# cat /var/lib/nfs/etab

默認就有sync,wdelay,hide 等等,no_root_squash 是讓root保持許可權,root_squash 是把root映射成nobody,no_all_squash 不讓所有用戶保持在掛載目錄中的許可權。所以,root建立的文件所有者是nfsnobody。

下面我們使用普通用戶掛載、寫入文件測試。

# su - david

$ cd /tmp/david/

$ touch 2013david

普通用戶寫入文件時就是自己的名字,這也就保證了伺服器的安全性。
關於許可權的分析

1. 客戶端連接時候,對普通用戶的檢查

a. 如果明確設定了普通用戶被壓縮的身份,那麼此時客戶端用戶的身份轉換為指定用戶;

b. 如果NFS server上面有同名用戶,那麼此時客戶端登錄賬戶的身份轉換為NFS server上面的同名用戶;

c. 如果沒有明確指定,也沒有同名用戶,那麼此時 用戶身份被壓縮成nfsnobody;

2. 客戶端連接的時候,對root的檢查

a. 如果設置no_root_squash,那麼此時root用戶的身份被壓縮為NFS server上面的root;

b. 如果設置了all_squash、anonuid、anongid,此時root 身份被壓縮為指定用戶;

c. 如果沒有明確指定,此時root用戶被壓縮為nfsnobody;

d. 如果同時指定no_root_squash與all_squash 用戶將被壓縮為 nfsnobody,如果設置了anonuid、anongid將被壓縮到所指定的用戶與組;

7、卸載已掛載的NFS共享目錄

# umount /tmp/david/

八、啟動自動掛載nfs文件系統

格式:

<server>:</remote/export> </local/directory> nfs < options> 0 0
# vi /etc/fstab

保存退出,重啟系統。

查看/home/david 有沒有自動掛載。

自動掛載成功。

九、相關命令

1、exportfs

如果我們在啟動了NFS之後又修改了/etc/exports,是不是還要重新啟動nfs呢?這個時候我們就可以用exportfs 命令來使改動立刻生效,該命令格式如下:

# exportfs [-aruv]

-a 全部掛載或卸載 /etc/exports中的內容
-r 重新讀取/etc/exports 中的信息 ,並同步更新/etc/exports、/var/lib/nfs/xtab
-u 卸載單一目錄(和-a一起使用為卸載所有/etc/exports文件中的目錄)
-v 在export的時候,將詳細的信息輸出到屏幕上。

具體例子:
# exportfs -au 卸載所有共享目錄
# exportfs -rv 重新共享所有目錄並輸出詳細信息

2、nfsstat

查看NFS的運行狀態,對於調整NFS的運行有很大幫助。

3、rpcinfo
查看rpc執行信息,可以用於檢測rpc運行情況的工具,利用rpcinfo -p 可以查看出RPC開啟的埠所提供的程序有哪些。

4、showmount

-a 顯示已經於客戶端連接上的目錄信息
-e IP或者hostname 顯示此IP地址分享出來的目錄

5、netstat

可以查看出nfs服務開啟的埠,其中nfs 開啟的是2049,portmap 開啟的是111,其餘則是rpc開啟的。

最後注意兩點,雖然通過許可權設置可以讓普通用戶訪問,但是掛載的時候默認情況下只有root可以去掛載,普通用戶可以執行sudo。

NFS server 關機的時候一點要確保NFS服務關閉,沒有客戶端處於連接狀態!通過showmount -a 可以查看,如果有的話用kill killall pkill 來結束,(-9 強制結束)

❺ NFS 深入配置

1.1 NFS配置參數許可權

參數名稱
參數用途

rw
read-write,表示可讀寫許可權

ro
read-only,表示只讀許可權

sync
請求或寫入數據時,數據同步寫入到硬碟才完成

async
非同步寫到遠程緩沖區

all_squash
不管客戶端什麼用戶,到服務端都會被壓縮成匿名用戶

anonuid
匿名用戶的UID

anongid
匿名用戶的GID

在配置文件內設置共享目錄時所給予的許可權:
[root@nfs01 ~]$ cat /etc/exports
/data 172.16.1.0/24(rw,sync) 10.0.0.0/24(ro)

配置好NFS服務後,/var/lib/nfs/etab文件中可以看到的配置參數以及默認自帶的參數:
[root@nfs01 ~]$ cat /var/lib/nfs/etab
/data
172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,
no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,
anongid=65534,sec=sys,rw,secure,root_squash,no_all_squash

1.1.1 更改NFS默認用戶
1.1.1.1 nfs01服務端NFS、以及所有客戶端:
[root@nfs01 ~] id www
uid=1111(www) gid=1111(www) 組=1111(www)

1.1.1.2 服務端NFS特殊配置
配置文件增加如下內容:
[root@nfs01 ~]$ tail -2 /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=1111,anongid=1111)
/data1 10.0.0.0/24(ro)

共享目錄更改用戶和用戶組:
[root@nfs01 ~] ls -ld /data
drwxr-xr-x 2 www www 70 4月 18 10:05 /data

1.1.1.3 服務端NFS重啟
[root@nfs01 ~]$ systemctl reload nfs

1.1.1.4 每個客戶端掛載
[root@web01 ~] df -h
文件系統 容量 已用 可用 已用% 掛載點
172.16.1.31:/data 19G 1.8G 18G 10% /data

新創建文件驗證用戶名:
[root@web01 /data]# touch new_web01.txt
[root@web01 /data]# ls -l
總用量 0
-rw-r--r-- 1 www www 0 4月 18 11:01 new_web01.txt
-rw-r--r-- 1 www www 0 4月 17 11:59 oldboy.txt
-rw-r--r-- 1 www www 0 4月 17 12:30 oldgirl.txt

1.2 NFS服務重點知識梳理
  當多個NFS客戶端訪問伺服器端讀寫文件時,需要具有以下幾個許可權:

NFS伺服器/etc/exports設置需要開放許可寫入的許可權,即伺服器端的共享許可權
NFS伺服器實際要共享的NFS目錄許可權具有可寫入w的許可權,即伺服器端本地目錄的安全許可權
每台機器都對應存在和NFS默認配置UID的相同UID的用戶

下表列出了常用的重點NFS服務文件或命令。

NFS常用路徑
說明

/etc/exports
NFS服務主配置文件,配置NFS具體共享服務的地點,默認內容為空

/var/lib/nfs/etab
NFS配置文件的完整參數設定的文件

/proc/mounts
客戶端的掛載參數

1.3 NFS客戶端掛載深入
1.3.1 mount -o 參數選項及系統默認設置

參數
參數意義
系統默認值

suid/nosuid
當掛載的文件系統上有任何SUID的程序時,只要使用nosuid就能夠取消設置SUID的功能
suid

rw/ro
可以指定文件系統是只讀(ro)或可讀寫(rw)
rw

dev/nodev
是否可以保留裝置文件的特殊功能
dev

exec/noexec
是否具有執行文件的許可權
exec

user/nouser
是否允許用戶擁有文件的掛載與卸載功能
nouser

auto/noauto
auto指的是「mount -a」時會不會被掛載的項目,如果不需要這個分區隨時被掛載,可以設置為noauto
auto

1.3.2 mount -o 參數詳細說明

參數選項
說明

async
涉及文件系統I/O的操作都是非同步處理,即不會同步寫到磁碟,能提高性能,但會降低數據安全。

sync
有I/O操作時,都會同步處理I/O,會降低性能,但數據比較安全。

atime
在每一次數據訪問時,會更新訪問文件的時間戳,是默認選項,在高並發的情況下,可以通過添加noatime來取消默認項。

ro
以只讀的方式掛載一個文件系統

rw
以可讀寫的方式掛載一個文件系統

auto
能夠被自動掛載通過-a選項

noauto
不會自動掛載文件系統

defaults
這是fstab里的默認值,包括rw、suid、dev、exec、auto、nouser、async

exec
允許文件系統執行二進制文件,取消這個參數,可以提升系統安全性。

noexec
在掛載的文件系統中不允許執行任何二進製程序,進僅對二進製程序有效。

noatime
訪問文件時不更新文件的時間戳,高並發情況下,一般使用該參數

nodiratime
不更新文件系統上的directory inode時間戳,高並發環境,推薦顯式應用該選項,可以提高系統I/O性能。

nosuid
不允許set-user-identifier or set-group-identifier位生效。

suid
允許set-user-identifier or set-group-identifier位生效。

nouser
禁止一個普通用戶掛載該文件系統,這是默認掛載時的默認選項。

remount
嘗試重新掛載一個已經掛載了的文件系統,這通常被用來改變一個文件系統的掛載標志,從而使得一個只讀文件系統變的可寫,這個動作不會改變設備或者掛載點。當系統故障時進人single或rescue模式修復系統時,會發現根文件系統經常會變成只讀文件系統,不允許修改,此時該命令就派上用場了。具體命令為:mount -o remount,rw /,表示將根文件系統重新掛載使得可寫。single或rescue模式修復系統時這個命令十分重要。

dirsync
目錄更新時同步寫人磁碟。

1.3.3 企業生產場景NFS共享存儲優化

硬體:使用ssd/sas磁碟,可以買多塊,製作成raid10。
NFS伺服器端配置:

/data 10.0.0.0/24(rw,sync,all_squash,anonuid=65534,anongid=65534)

NFS客戶端掛載優化配置命令:

mount -t nfs -o nosuid,noexec,nodev,noatime,nodiratime,rsize=131072,
wsize=131072 172.16.1.31:/data /mnt <===兼顧安全性能

對NFS服務的所有伺服器內核進行優化,執行命令如下:

cat >>/etc/sysctl.conf <<EOF
net.core.wmen_default = 8388608
net.core.rmen_default = 8388608
net.core.wmen_max = 16777216
net.core.rmen_max = 16777216
EOF

執行sysctl -p 生效

大型網站NFS網路文件系統的替代軟體為分布式文件系統,如:Moosefs(mfs)、GlusterFS、FastDFS。

1.4 NFS系統應用的優缺點
1.4.1 優點

簡單,容易上手,容易掌握。
NFS文件系統內數據是在文件系統之上的,即數據是能看得見的。
部署快速維護簡單方便,且可控,滿足需求就是最好的。
可靠,從軟體層面上看,數據可靠性高,經久耐用。
服務非常穩定。

1.4.2 缺點(局限)

存在單點故障,如果NFS服務端宕機了,所有客戶端都不能訪問共享目錄。
大數據高並發的場合,NFS效率、性能有限。
客戶端認證是基於IP和主機名的,許可權要根據ID識別,安全性一般。
NFS數據是明文的,NFS本身不對數據完整性進行驗證。
多台客戶機掛載一個NFS伺服器時,連接管理維護麻煩。

1.4.3 解決性能問題的方法

使用CDN加速以及自己搭建文件緩存服務(squid、nginx、varnish)。
把多個目錄分配到不同的NFS伺服器上。
棄用NFS(即讀寫分離)。

使用分布式文件系統。

閱讀全文

與nfs伺服器配置哪些文件相關的資料

熱點內容
誅仙62坐騎怎麼升級到63 瀏覽:926
linux以日期查看日誌記錄 瀏覽:446
工業大數據是什麼東西 瀏覽:881
魅族note3怎麼重置網路 瀏覽:510
c語言程序設計模 瀏覽:92
兒童怎麼做可編程機 瀏覽:603
數據計算屬於什麼統計學 瀏覽:921
07word怎麼去掉標記 瀏覽:979
qq緩存的數據是什麼 瀏覽:348
LED主Kv文件多少兆 瀏覽:856
蘋果edge怎麼刪除下載文件 瀏覽:471
sas邏輯回歸代碼 瀏覽:572
用於keil下的stc器件資料庫 瀏覽:400
新聞網站後台如何操作前台 瀏覽:539
在剪映app中怎麼查看視頻尺寸 瀏覽:9
linux文件成分包括 瀏覽:886
文件轉換免費的軟體 瀏覽:644
linuxwpsxlsx 瀏覽:482
小米手機怎麼上移動網路連接失敗怎麼辦 瀏覽:598
win10系統打開java 瀏覽:479

友情鏈接