在 Ubuntu 中配置 NFS 共享服務的完整指南

前言

網絡文件系統(NFS)作為 Linux 系統間實現文件共享的標準協議,在分布式計算和容器化部署場景中具有重要作用。本文將詳細演示如何在 Ubuntu 系統上配置 NFS 服務端與客戶端,并實現可靠的持久化掛載。


一、環境準備

系統要求
  • 服務端:Ubuntu 20.04+(IP:192.168.1.93)
  • 客戶端:Ubuntu/Debian 系統(IP:192.168.1.81)
  • 網絡配置:確保雙向連通性,建議關閉防火墻或開放 2049 端口
架構示意圖
共享 /opt 目錄
NFS Server
Client 1
Client 2
Client N

二、服務端配置

1. 安裝核心組件
sudo apt update
sudo apt install nfs-kernel-server -y
2. 配置共享目錄

編輯配置文件:

sudo nano /etc/exports

添加以下內容(注意正確路徑):

/opt/ 192.168.1.81(rw,sync,no_subtree_check)
/opt/ 192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash)

參數解析:

  • rw:讀寫權限
  • sync:同步寫入
  • no_subtree_check:禁用子目錄檢查
  • no_root_squash:允許 root 用戶訪問
3. 應用配置
sudo exportfs -arv  # 動態加載配置
sudo systemctl enable --now nfs-server
systemctl status nfs-server  # 驗證服務狀態

三、客戶端配置

1. 安裝基礎工具
sudo apt install nfs-common -y
2. 配置持久化掛載

編輯 fstab 文件:

sudo nano /etc/fstab

添加掛載條目:

192.168.1.93:/opt  /opt  nfs  defaults,_netdev  0  0

關鍵參數說明:

  • _netdev:等待網絡就緒
  • 文件系統類型:nfs4 可顯式聲明使用 NFSv4
3. 安全增強措施
sudo chattr +i /etc/fstab  # 防止誤修改

四、自動化掛載保障

1. 創建 systemd 服務
sudo nano /etc/systemd/system/check-opt-mount.service

服務配置內容:

[Unit]
Description=智能掛載保障服務
After=network-online.target
Requires=network-online.target[Service]
Type=oneshot
ExecStartPre=/bin/sleep 30  # 等待網絡初始化
ExecStart=/opt/scripts/mount-validator.sh
TimeoutSec=300[Install]
WantedBy=multi-user.target
2. 驗證腳本實現
#!/bin/bash
# mount-validator.shattempt=0
max_retries=5while [[ $attempt -lt $max_retries ]]; doif mountpoint -q /opt; thenecho "掛載驗證成功"breakelseecho "嘗試掛載 ($((attempt+1))/${max_retries})"mount -a && breaksleep $((attempt++ * 2))fi
done# 后續初始化操作
ldconfig
systemctl restart app-services

五、配置驗證

服務端檢查
showmount -e localhost  # 查看共享列表
netstat -tuln | grep 2049  # 確認端口監聽
客戶端驗證
df -hT | grep nfs  # 查看掛載狀態
touch /opt/testfile  # 測試寫入權限

六、故障排查指南

常見問題處理
  1. 掛載失敗:

    • 檢查 rpcinfo -p server_ip
    • 驗證客戶端和服務端 NFS 版本兼容性
  2. 權限拒絕:

    • 檢查 /etc/exports 的 IP 白名單
    • 確認客戶端 UID/GID 與服務端匹配
  3. 服務啟動異常:

    journalctl -u nfs-server --since "1 hour ago"
    

結語

通過本文的配置,您已成功搭建了支持高可用性的 NFS 文件共享服務。建議在生產環境中配合 SSH 隧道或 VPN 增強安全性。對于 Kubernetes 等容器平臺,可結合 PV/PVC 實現動態存儲供給。

延伸學習:

  • NFS 協議規范 RFC 7530
  • 性能調優:嘗試啟用 async 模式并配合 UPS 電源
  • 安全增強:配置 Kerberos 認證

通過合理的配置和驗證流程,NFS 能夠為企業級應用提供穩定高效的共享存儲解決方案。

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

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

相關文章

TypeScript Symbols 深度解析:在 Vue3 中的高級應用實踐

一、Symbols 核心特性解析 1.1 什么是 Symbol? Symbol 是 ES6 引入的原始數據類型,表示唯一且不可變的值,主要解決對象屬性名沖突問題。在 TypeScript 中,我們通過 symbol 類型獲得完整的類型支持: const SERIAL_KE…

無需刷機、root,暢享原生安卓的絲滑體驗。

Apex Launcher 是一款歷史悠久的 Android 桌面啟動器,誕生于 Android 系統早期(Android 4.0 時代)。當時,Android 系統的默認界面被認為較為簡陋,無法滿足一些追求個性化和高效操作的用戶需求。因此,許多開…

Visual Studio Code安裝配置優化全攻略:打造高效開發環境

目錄 一、背景與意義 二、安裝與配置基礎 2.1 下載與安裝 2.2 核心配置目錄 三、深度優化配置指南 3.1 主題與界面優化 3.2 必裝效率插件(精選TOP10) 3.3 性能優化設置 四、實戰案例:前端開發環境配置 4.1 項目初始化 4.2 調試配置…

味覺傳送器E-Taste:開啟虛擬世界的味覺之門

味覺傳送器E-Taste:開啟虛擬世界的味覺之門 一、發明背景與動機 隨著虛擬現實(VR)和增強現實(AR)技術的飛速發展,人們在虛擬世界中的沉浸感不斷提升,視覺和聽覺體驗已經取得了顯著的突破。然而…

判斷質數與合數

判斷質數與合數的邏輯很相似,都是判斷一個屬除了1和它本身,能不能被其他數整除。 其他數包括質數與合數,合數能表示能質數的乘積,因此問題就轉化為:一個數能不能被除了1和它本身之外的其他質數整除。 質數2&#xff…

在Spring Boot項目中接入DeepSeek深度求索,感覺笨笨的呢

文章目錄 引言1. 什么是DeepSeek?2. 準備工作2.1 注冊DeepSeek賬號 3.實戰演示3.1 application增加DS配置3.2 編寫service3.3 編寫controller3.4 編寫前端界面chat.html3.5 測試 總結 引言 在當今快速發展的數據驅動時代,企業越來越重視數據的價值。為了…

Cursor在內網環境配置自定義DeepSeek API

關鍵字 Cursor、DeepSeek、API配置、內網代理、HTTP/2 背景環境 使用Cursor集成環境開發程序。但是我使用公司的內網并不能使用cursor自帶的模型,于是我就想使用DeepSeek官方的API服務。 環境:Windows 11系統 解決過程 網絡檢測 首先進行環境檢測&am…

RabbitMQ 集群降配

這里寫自定義目錄標題 摘要檢查狀態1. 檢查 RabbitMQ 服務狀態2. 檢查 RabbitMQ 端口監聽3. 檢查 RabbitMQ 管理插件是否啟用4. 檢查開機自啟狀態5. 確認集群高可用性6. 檢查使用該集群的服務是否做了斷開重連 實操1. 負載均衡配置2. 逐個節點降配(滾動操作&#xf…

設計模式之外觀模式:原理、實現與應用

引言 外觀模式(Facade Pattern)是一種結構型設計模式,它通過提供一個統一的接口來簡化復雜系統的使用。外觀模式隱藏了系統的復雜性,使得客戶端可以通過一個簡單的接口與系統交互。本文將深入探討外觀模式的原理、實現方式以及實…

進行交通流預測,使用KAN+Transformer模型

理論基礎 KAN(Knowledge Augmented Network) KAN 是一種知識增強網絡,其核心思想是將先驗知識融入到神經網絡中,以此提升模型的性能與泛化能力。在交通流預測領域,先驗知識可以是交通規則、歷史交通模式等。通過把這…

TF中 Arg 節點

TF中 Arg 節點 在 TensorFlow 的計算圖中,_Arg 節點(Argument Node)表示函數的輸入參數,是計算圖中負責接收外部輸入數據的節點。它的名字來源于“Argument”(參數),直接對應函數調用時傳入的張…

Educational Codeforces Round 176 (Rated for Div. 2)

A.To Zero 簽到題 void solve() { int n,k;cin>>n>>k;int k2k/2*2;int k1(k2<k)?k:k-1;int cnt0;if(n%21){n-k1;cnt;cnt(n/k2)(n%k2!0);}else {cnt(n/k2)(n%k2!0);}cout<<cnt<<endl;}B.Array Recoloring 手推一下可以發現&#xff0c;答案其實就…

Kubernetes的Service詳解

一、Service介紹 在 kubernetes 中&#xff0c; pod 是應用程序的載體&#xff0c;我們可以通過 pod 的 ip 來訪問應用程序&#xff0c;但是 pod 的 ip 地址不是固定的&#xff0c;這也就意味著不方便直接采用pod 的 ip 對服務進行訪問。 為了解決這個問題&#xff0c;kuberne…

基于Nvidia Jetson Nano邊緣計算設備使用TensorRT部署YOLOv8模型實現目標檢測推理

0、背景 最近拿到一臺邊緣計算設備&#xff0c;在部署YOLO模型的過程中遇到一些問題&#xff0c;特此記錄。 設備介紹信息&#xff1a;NVIDIA Jetson Orin Nano T201Developer Kit 開發套件 開發者套件&#xff1a;Jetson Orin Nano T201 8GB開發套件 使用指南文檔&#x…

讓人感到疑惑的const

const 關鍵字在不同的編程語言中有著不同的含義和限制&#xff0c;但通常它被用來聲明一個常量或只讀變量。然而&#xff0c;在 JavaScript 中&#xff0c;const 的行為有時可能會讓人感到困惑&#xff0c;因為它并不總是意味著“不可變”&#xff08;immutable&#xff09;。讓…

Python 列表全面解析

關于Python列表的詳細教程&#xff0c;涵蓋增刪改查、切片、列表推導式及核心方法 一、 列表基礎 1.1 創建列表 列表是Python中最常用的數據結構之一&#xff0c;支持動態存儲多種類型的元素。 # 空列表 empty_list []# 初始化列表 numbers [1, 2, 3, 4] fruits ["a…

【Ratis】ReferenceCountedObject接口的作用及參考意義

Apache Ratis的項目源碼里,大量用到了自定義的ReferenceCountedObject接口。 本文就來學習一下這個接口的作用,并借鑒一下它解決的問題和實現原理。 功能與作用 ReferenceCountedObject 是一個接口,用于管理對象的引用計數。它的主要功能和作用包括: 引用計數管理: 提供…

leetcode-50.Pow(x,n)

快速計算次方的方法。 首先&#xff0c;先保證n是正數。 如果n<0&#xff0c;就讓x取反&#xff0c;n取絕對值。 然后考慮怎么快速乘法。 考慮 x 7 x 1 2 4 x ? x 2 ? x 4 x^7x^{124}x*x^2*x^4 x7x124x?x2?x4&#xff0c;可以發現&#xff0c;本來乘6次x&#xff0…

基于javaweb的SpringBoot公司日常考勤系統設計與實現(源碼+文檔+部署講解)

技術范圍&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、小程序、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容&#xff1a;免費功能設計、開題報告、任務書、中期檢查PPT、系統功能實現、代碼編寫、論文編寫和輔導、論…

游戲引擎學習第167天

回顧和今天的計劃 我們不使用引擎&#xff0c;也不依賴庫&#xff0c;只有我們自己和我們的小手指在敲擊代碼。 今天我們會繼續進行一些工作。首先&#xff0c;我們會清理昨天留下的一些問題&#xff0c;這些問題我們當時沒有深入探討。除了這些&#xff0c;我覺得我們在資產…