板塊三章節3——NFS 服務器

NFS 服務器

NFS 服務介紹

NFS 是Network File System的縮寫,即網絡文件系統,最早由Sun公司開發,**用來在UNIX&Linux系統間實現磁盤文件共享的一種方法。**它的主要功能是通過網絡讓不同的主機系統之間可以共享文件或目錄。NFS客戶端(一般為應用服務器,例如web)可以通過掛載(mount)的方式將NFS服務端共享的數據目錄掛載到NFS客戶端本地系統中(就是某一個掛載點下)。從NFS客戶端的機器本地看,NFS服務端共享的目錄就好像是客戶自己的磁盤分區或者目錄一樣,而實際上確是遠端的NFS服務端的目錄。

在企業集群架構的工作場景中,NFS網絡文件系統一般被用來存儲共享視頻、圖片、附件等靜態資源文件。一般是把網站用戶上傳的文件都放在NFS共享里,例如,BBS產品的圖片、附件、頭像,特別是中小網站公司應用頻率更高。

NFS 支持的功能相當的多,而不同的功能都會使用不同的程序來啟動,每啟動一個功能就會啟用一些端口來傳輸數據,因此,NFS的功能所對應的端口沒有固定住,而是隨機取用一些未被使用的小于1024的端口提供服務。但如此一來客戶端如何獲得服務器端的相關端口呢?

此時我們就得需要遠程過程調用(RPC)的服務!RPC最主要的功能是注冊每個NFS功能所對應的端口,并且匯報給客戶端,讓客戶端可以連結到正確的端口。RPC定義了一種進程間通過網絡進行交互通信的機制,它允許客戶端進程通過網絡向遠程服務進程請求服務,而不需要了解服務器底層的通信協議詳細信息。

在這里插入圖片描述

  • NFS 服務器:導出文件系統目錄及其內容。
  • NFS 客戶端:掛載服務器導出的文件系統到本地。

部署服務

NFS服務由nfs-utils軟件包提供,RHEL8默認安裝了該軟件包。

# 安裝軟件包
[whisky@server-gx ~ 10:10:08]$ yum install -y nfs-utils.x86_64 # 準備用戶
[root@server-gx whisky 10:16:05]# id whisky# 準備共享目錄
[root@server-gx whisky 10:22:25]# mkdir -p /shares/webapp
[root@server-gx whisky 10:22:59]# chown whisky /shares/webapp
[root@server-gx whisky 10:23:23]# chown 48:48 /shares/webapp# 啟用并啟動服務
[root@server-gx whisky 10:26:12]# systemctl enable nfs-server.service --now 

配置 NFS 導出

NFS服務器主要配置文件是**/etc/exports**,目錄**/etc/exports.d中任何以.exports**結尾且不以點(.)開頭的文件也會生效。 所有這些文件都使用相同的語法。

==提示:==與編輯文件/etc/exports本身相比,在/etc/exports.d中創建或刪除文件可能更容易,并且它可以減少一系列相關配置更改意外破壞現有導出的風險。

配置文件中,每一行都聲明一個導出點。 第一個字段是要導出到客戶端的目錄的名稱。 該行的其余部分列出了可以訪問共享目錄的客戶端系統以及授予它們的訪問權限。

==提示:==NFS不要使用SMB共享的目錄。 如果這樣做,則可能會導致文件損壞或其他文件完整性或一致性問題。

配置示例:

  • 可解析DNS的主機名,例如client.laoma.cloud。 在以下示例中,client.laoma.cloud系統可以掛載/shares/nfs目錄。
/shares/nfs client.laoma.cloud
  • DNS解析的主機名,帶*通配符。 以下示例允許laoma.cloud域中的所有系統訪問NFS共享。
/shares/nfs *.laoma.cloud
  • IPv4地址。 以下示例允許從10.1.8.12 IP地址訪問NFS共享。
/shares/nfs 10.1.8.11
  • IPv4網絡。 以下示例允許從10.1.8.0/24網絡訪問NFS共享。 您也可以使用10.1.8.0/255.255.255.0 表示法。
/shares/nfs 10.1.8.0/24
/shares/nfs 10.1.8.0/255.255.255.0
  • IPv6地址。 以下示例允許具有fde2:6494:1e09:2::20 IPv6地址的客戶端系統訪問NFS共享。
/shares/nfs fde2:6494:1e09:2::20
  • IPv6網絡。 以下示例允許fde2:6494:1e09:2::/64 IPv6網絡訪問NFS共享。
/shares/nfs fde2:6494:1e09:2::/64
  • 要與多個客戶機系統共享目錄,請在目錄名稱后使用以空格分隔的列表:
/shares/nfs 10.1.8.0/24 client.laoma.cloud *.example.net

默認情況下,目錄以只讀模式與客戶端共享。 在每個客戶定義之后,您可以立即在括號中指定導出選項以覆蓋默認值。 客戶端定義的末尾和左括號之間必須沒有空格。

常用的選項:

  • rw,此選項允許對指定客戶端進行讀/寫訪問。 如果沒有該選項(或者如果您使用ro代替),則NFS僅授予讀取訪問權限。 在以下示例中,client.laoma.cloud具有讀/寫訪問權限,而client2.laoma.cloud具有只讀訪問權限。

    /shares/nfs client.laoma.cloud(rw) client2.laoma.cloud
    
  • no_root_squash,默認情況下,當客戶機上的root用戶訪問NFS導出時,服務器會將其視為nobody用戶(在服務器上定義)的訪問。 這意味著,如果客戶端上的root用戶在導出文件上創建了文件,則該文件將歸用戶nobody所有。 這也意味著,如果客戶機上的root用戶嘗試讀取導出文件,而該文件是沒人能讀取的用戶,則訪問將失敗。 您可以通過添加no_root_squash選項來禁用該安全保護。

    以下示例允許client.laoma.cloud系統具有對/shares/nfs導出目錄的讀/寫訪問權限和實際root用戶訪問權限。

    /shares/nfs client.laoma.cloud(rw,no_root_squash)
    

==提示:==rhel7中使用nfsnobody用戶,rhel8中使用nobody用戶。

我們使用以下記錄:

#創建/shares/nfs,后續可以通過此目錄為客戶端共享文件
[root@server-gx ~ 17:25:00]# mkdir /shares/nfs#在執行如下代碼前請確保已創建目錄“/shares/nfs”,否則無法在后續執行exportfs -r 命令
[root@server-gx ~ 17:12:12]# vim /etc/exports
/shares/nfs 10.1.8.0/24(rw)

每當您在/etc/exports或/etc/exports.d/*.exports中更改導出點時,請對NFS服務運行exportfs -r命令確保更改生效,或者運行systemctl reload nfs-server

[root@server-gx ~ 17:28:33]# exportfs -r
# 或者
[root@server ~]# systemctl reload nfs-server
# 或者
[root@server ~]# exportfs -av

監視 NFS 導出

使用exportfs命令列出NFS服務器當前導出的目錄。

[root@server-gx ~ 17:28:42]# exportfs 
/shares/nfs   	10.1.8.0/24

默認情況下,該命令不顯示導出選項。 使用-v選項列出這些選項,包括缺省選項。

[root@server-gx ~ 19:12:30]# exportfs -v
/shares/nfs   	10.1.8.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)

客戶端掛載

# 安裝軟件包
[root@client-gx ~ 19:14:35]# yum install -y nfs-utils
# 準備用戶
[root@client-gx ~ 19:16:12]# id whisky
uid=1000(whisky) gid=1000(whisky)=1000(whisky),10(wheel)
[root@client-gx ~ 19:18:45]# id apache
uid=48(apache) gid=48(apache)=48(apache)# 查看服務端提供的共享
[root@client-gx ~ 19:18:56]# showmount -e server
Export list for server:
/shares/nfs 10.1.8.0/24# 掛載
[root@client-gx ~ 19:30:24]# mkdir /mnt/nfs
[root@client-gx ~ 19:31:02]# mount -t nfs server:/shares/nfs /mnt/nfs         # root用戶不能創建
[root@client-gx ~ 19:31:56]# touch /mnt/nfs/root-test1
touch: 無法創建"/mnt/nfs/root-test1": 權限不夠# apache用戶能創建(注:之前創建apache用戶時uid為48,無法使用交互式界面登錄,此處使用臨時切換用戶的方式執行)
[root@client-gx ~ 21:20:57]# su - apache -s /bin/bash
上一次登錄:四 87 21:19:15 CST 2025pts/0 上
-bash-4.2$ echo apache website > /mnt/nfs/test.html
#此時server端也可以查看
[root@server-gx ~ 20:01:15]# cat /shares/nfs/test.html
apache website

持久化掛載

修改 /etc/fstab,最后添加如下記錄:

server:/shares/nfs /mnt/nfs nfs defaults 0 0

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/92769.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/92769.shtml
英文地址,請注明出處:http://en.pswp.cn/web/92769.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數學建模——最大最小化模型

1.概念最大最小化模型(Maximin Model)是一種優化方法,旨在最大化最壞情況下的收益或最小化最壞情況下的損失。常見的現實問題有:求最大值的最小化問題最大風險的最低限度最小化最壞情況下的損失等2.一般數學模型 (找最大值里面最小…

【JAVA】使用系統音頻設置播放音頻

代碼直接可以運行 import javax.sound.sampled.*; import java.io.File; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.nio.charset.StandardCharsets;public class SystemDefaultAudioPlayer {// 強制使用的通用音頻格式private st…

[CSP-J 2021] 小熊的果籃

題目 12代碼 #include <bits/stdc.h> using namespace std; const int N2e55; struct node{int pre,//上一個水果塊(對于水果就是上個水果)l,//塊開始的序號&#xff0c;左邊界 d,//塊類型&#xff0c;0/1id,//水果序號 r,//塊結束的序號&#xff0c;右邊界 next;//下一塊…

【C++】STL二叉搜索樹——map與set容器的基礎結構

目錄 前言 1.二叉搜索樹的概念 1.1基本結構 1.2性能分析 2.二叉搜索樹的實現 2.1創建 2.2插入 2.3查找與遍歷 2.4刪除 3.二叉搜索樹類代碼 前言 C中STL的map與set容器廣泛應用于實踐過程中&#xff0c;本文將詳細分析容器最基礎的二叉搜索樹結構&#xff0c;為后續map…

基于Spring Boot和SSE的實時消息推送系統

一、SSE技術深度解析 1.1 協議工作原理 #mermaid-svg-u7ZBlEsXcn68R5a8 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-u7ZBlEsXcn68R5a8 .error-icon{fill:#552222;}#mermaid-svg-u7ZBlEsXcn68R5a8 .error-text{fi…

Day 40 訓練和測試的規范寫法

知識點回顧&#xff1a; 彩色和灰度圖片測試和訓練的規范寫法&#xff1a;封裝在函數中展平操作&#xff1a;除第一個維度batchsize外全部展平dropout操作&#xff1a;訓練階段隨機丟棄神經元&#xff0c;測試階段eval模式關閉dropout 作業&#xff1a;仔細學習下測試和訓練代…

分析代碼并回答問題

代碼 <template><div>Counter: {{ counter }}</div><div>Double Counter: {{ doubleCounter }}</div> </template><script setup lang"ts"> import { ref, computed } from "vue";const counter ref(0);const …

在macOS上掃描192.168.1.0/24子網的所有IP地址

在macOS上掃描192.168.1.0/24子網的所有IP地址&#xff0c;可以通過終端命令實現。以下是幾種常用方法&#xff1a; 使用ping命令循環掃描 打開終端執行以下腳本&#xff0c;會逐個ping測試192.168.1.1到192.168.1.254的地址&#xff0c;并過濾出有響應的IP&#xff1a; for i …

Java基礎05——類型轉換(本文為個人學習筆記,內容整理自嗶哩嗶哩UP主【遇見狂神說】的公開課程。 > 所有知識點歸屬原作者,僅作非商業用途分享)

Java基礎05——類型轉換 類型轉換 由于Java是強類型語言&#xff0c;所以要進行有些運算的時候&#xff0c;需要用到類型轉換。 如&#xff1a;byte(占1個字節)&#xff0c;short(占2個字節)&#xff0c;char(占2個字節)→int(4個字節)→long(占8個字節)→float(占4個字節)→do…

mysql基礎(二)五分鐘掌握全量與增量備份

全量備份 Linux環境 數據備份 數據庫的備份與恢復有多中方法&#xff0c;通過mysql自帶的mysqldump工具可對數據庫進行備份。語法&#xff1a; mysqldump -u username -p password --databases db_name > file_name .sql說明&#xff1a; -u參數指定用戶名&#xff0c;usern…

使用Windbg分析多線程死鎖項目實戰問題分享

目錄 1、問題描述 2、使用.effmach x86命令切換到32位上下文 3、切換到UI線程&#xff0c;發現UI線程死鎖了 4、使用!locks命令查看臨界區鎖的詳細信息&#xff0c;遇到了問題 5、使用dt命令查看臨界區對象信息&#xff0c;找到發生死鎖的多個線程 6、用戶態鎖與內核態鎖…

防火墻組網方式總結

一、部署模式&#xff1a;靈活適配多樣網絡環境下一代防火墻&#xff08;NGAF&#xff09;具備極強的網絡適應能力&#xff0c;支持五種核心部署模式&#xff0c;可根據不同網絡需求靈活選擇。路由模式&#xff1a;防火墻相當于路由器&#xff0c;位于內外網之間負責路由尋址&a…

AI大模型:(二)5.1 文生視頻(Text-to-Video)模型發展史

目錄 1.介紹 2.發展歷史 2.1.早期探索階段(2015-2019) 2.1.1.技術萌芽期 2.1.2.RNN/LSTM時代 2.2.技術突破期(2020-2021) 2.2.1 Transformer引入視頻生成 2.2.2 擴散模型的興起 2.3.商業化突破期(2022-2023) 2.3.1 產品化里程碑 2.3.2 競爭格局形成 2.4.革命…

14mm尋北儀能否塞進液壓支架生死縫隙?

在煤礦井下世界的方寸之間&#xff0c;液壓支架的每個關鍵節點都承載著千鈞重壓。頂梁鉸接點、立柱頂端、掩護梁角落&#xff0c;恰恰是空間最為局促的“禁區”。ER-MNS-10A MEMS尋北儀應運而生&#xff01;它采用了先進的MEMS陀螺技術&#xff0c;以14mm至薄高度、40g極致輕盈…

python之淺拷貝深拷貝

文章目錄潛拷貝(shallow copy)深拷貝(deep copy)總結一下python的淺拷貝和深拷貝.潛拷貝(shallow copy) python中潛拷貝指的是:構造一個新的復合對象&#xff0c;然后將原對象中的對象引用插入其中 平常開發過程中潛拷貝是比深拷貝更常見的場景. 比如編程中使用到的一些基本的…

普通大學本科生如何入門強化學習?

問題:你平時是如何緊跟大型語言模型和智能體技術前沿的&#xff1f;有哪些具體的學習和跟蹤方式&#xff1f;回答:我會通過“輸入-內化-實踐”結合的方式跟蹤前沿。首先&#xff0c;學術動態方面&#xff0c;每天花10分鐘瀏覽arXiv的http://cs.CL和http://cs.AI板塊&#xff0c…

新手向:Python實現數據可視化圖表生成

Python數據可視化入門&#xff1a;從零開始生成圖表數據可視化是數據分析過程中不可或缺的關鍵環節&#xff0c;它通過將抽象的數字信息轉化為直觀的圖形展示&#xff0c;幫助分析師和決策者更快速、更準確地發現數據中隱藏的模式、規律和發展趨勢。在當今大數據時代&#xff0…

VBA即用型代碼手冊:計算選擇的單詞數Count Words in Selection

我給VBA下的定義&#xff1a;VBA是個人小型自動化處理的有效工具。可以大大提高自己的勞動效率&#xff0c;而且可以提高數據的準確性。我這里專注VBA,將我多年的經驗匯集在VBA系列九套教程中。作為我的學員要利用我的積木編程思想&#xff0c;積木編程最重要的是積木如何搭建及…

DNS(域名系統)

分層結構根域名&#xff08;ipv4&#xff0c;13臺&#xff09;&#xff0c;二級域名&#xff0c;三級域名……相關記錄A將域名解析為ipv4地址AAAA將域名解析為ipv6地址MX指名該區域為郵件服務區PTR反向查詢將主機名解析為域名NS記錄服務器的名字CNAME別名查詢方式遞歸查詢迭代查…

【大模型】強化學習算法總結

角色和術語定義 State&#xff1a;狀態Action&#xff1a;動作Policy/actor model&#xff1a;策略模型&#xff0c;用于決策行動的主要模型Critic/value model&#xff1a;價值模型&#xff0c;用于評判某個行動的價值大小Reward model&#xff1a;獎勵模型&#xff0c;用于給…