在 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.rhkb.cn/news/35633.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

10天速通强化学习-008

TRPO 思考-TRPO-在线策略-给定信任区域防止更新不稳定 Actor-Critic网络随着网络深度的增加,步长太长,梯度更新会变差。改变方法-增加信任区域。(trust region policy optimization)-TRPO算法: 核心思想: 是在每次迭代中&…

整合百款经典街机游戏的模拟器介绍

对于80、90后而言,街机游戏承载着童年的欢乐记忆。今天要给大家介绍一款超棒的软件——「MXui街机厅经典游戏101款」,它能带你重回那段热血沸腾的街机时光。 「MXui街机厅经典游戏101款」是一款绿色免安装的街机模拟器,体积约1.39G。无需繁琐…

springboot第三站(1) web开发引入

目录 1.简介 2.SpringBoot对静态资源的映射规则 3.模版引擎 1.简介 使用SpringBoot; 1)、创建SpringBoot应用,选中我们需要的模块; 2)、SpringBoot已经默认将这些场景配置好了,只需要在配置文件中指定…

12-二叉树-二叉树高度(给定前序和中序确定二叉树)

题目 来源 23. 二叉树的高度 思路 其实跟09那篇很像,反正核心就是要通过前序和中序来建树,只不过现在多了一个返回值;因为建树的时候,其实左子树和右子树的深度就可以知道。其余详见代码。 代码 /* 前序遍历根左右,中序&…

PSI5接口

文章目录 前言PSI5接口简介操作模式命名规则异步操作模式(PSI5-A)同步操作模式(PSI5-P) 传感器->ECU物理层(位编码)数据链路层数据帧帧格式串行消息帧10bits 传感器帧定义超10bits传感器帧定义 ECU->…

垃圾处理全流程监管平台

在当前城市化进程中,垃圾处理已成为城市管理的重要课题。随着技术的发展,垃圾处理全流程监管平台的建设显得尤为重要。该平台能够实现垃圾从产生、收集、运输到最终处理的全流程监管,提高垃圾处理效率,促进资源回收利用&#xff0…

【Linux编程】IPC之消息队列从踩坑到实战:核心原理、实战案例与C++封装详解(含完整代码)

一、消息队列基础概念 消息队列是Linux系统提供的一种进程间通信(IPC)机制,具有以下特点: 消息以链表形式存放在内核中每个消息包含类型标识(mtype)支持多生产者/多消费者模式消息总长度受限于系统配置&a…

Unity 项目工程结构目录

1. Unity.VisualScripting.Core 作用: Visual Scripting 的核心模块,提供了可视化编程的基础功能(前身为 Bolt)。它允许开发者通过节点图创建游戏逻辑,而无需编写代码。 典型用途: 非程序员快速构建原型,或简化…

从pdf提取文本数据的c/cpp库(非OCR)

Aspose.PDF for C 商业付费版,无源码。 功能强大,支持多种PDF操作。 对应的官方示例代码:Aspose.PDF-for-C Spire.PDF for C 商业付费版 对应的官方示例代码:Spire.PDF-for-C- PDFTron SDK 商业付费版 PoDoFo 开源 当前版本…

【Linux操作系统——学习笔记二】Linux简单导航命令操作

一、前言 学习Linux,本质上是学习在命令行下熟练使用Linux的各类命令。 命令行:是一种通过输入命令和参数与计算机系统进行交互的方式,可以使用各种字符化命令对系统发出操作指令,打开Linux终端,进入命令行界面。 …

赛逸展2025创新模式,以科技创新奖赋能展位战略价值

CES Asia2025第七届亚洲消费电子技术贸易展(赛逸展)主办方负责人提出的创新理念,为展会的战略价值注入了新活力:“我们不是在卖展位,而是在分发政策红利入场券——企业每平方米的展位投入,都可能通过科技创…

深度革命:ResNet 如何用 “残差连接“ 颠覆深度学习

一文快速了解 ResNet创新点 在深度学习的历史长河中,2015年或许是最具突破性的一年。这一年,微软亚洲研究院的何恺明团队带着名为ResNet(残差网络)的模型横空出世,在ImageNet图像分类竞赛中以3.57%的错误率夺冠&#…

将Django连接到mysql

将Django连接到mysql 文章目录 将Django连接到mysql一.按照我的文章 在Django模型中的Mysql安装 此篇 的步骤完成mysql的基础配置二.Django配置 一.按照我的文章 ‘在Django模型中的Mysql安装’ 此篇 的步骤完成mysql的基础配置 基础配置具体内容 1.打开PowerShell 安装mysql的…

Pycatia自动化开发:智能焊点生成与数据管理一体化解决方案

引言:机械设计自动化的新范式 在汽车白车身、航空结构件等复杂装配体设计中,焊点定位精度直接影响产品性能和制造可行性。传统CAD软件操作模式存在两大痛点:1)重复性点创建操作效率低下;2)坐标数据缺乏结构…

《Python实战进阶》No26: CI/CD 流水线:GitHub Actions 与 Jenkins 集成

No26: CI/CD 流水线:GitHub Actions 与 Jenkins 集成 摘要 持续集成(CI)和持续部署(CD)是现代软件开发中不可或缺的实践,能够显著提升开发效率、减少错误并加速交付流程。本文将探讨如何利用 GitHub Actio…

【css酷炫效果】纯CSS实现3D翻转卡片动画

【css酷炫效果】纯CSS实现3D翻转卡片动画 缘创作背景html结构css样式完整代码效果图 想直接拿走的老板,链接放在这里:https://download.csdn.net/download/u011561335/90490472 缘 创作随缘,不定时更新。 创作背景 刚看到csdn出活动了&am…

大数据学习(72)-zookeeper选举机制

🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一…

Maven | 站在初学者的角度配置

目录 Maven 是什么 概述 常见错误 创建错误代码示例 正确代码示例 Maven 的下载 Maven 依赖源 Maven 环境 环境变量 CMD测试 Maven 文件配置 本地仓库 远程仓库 Maven 工程创建 IDEA配置Maven IDEA Maven插件 Maven 是什么 概述 Maven是一个项目管理和构建自…

C/C++模版初阶

文章目录 C/C模版初阶泛型编程函数模版函数模版概念函数模版格式函数模版的原理函数模版的实例化模版参数的匹配原则 类模版类模版的定义格式类模版的实例化 结语 我们今天又见面了&#xff0c;给生活加点<font colorred>impetus&#xff01;&#xff01;开启今天的编程之…

c++初阶易错题(选择)

本节有32道题&#xff0c;讲的是c初阶里边我认为重要的题目&#xff0c;有兴趣可以看看十分详细&#xff0c;欢迎互相交流学习 1~10 1 A.引用必须定义时初始化&#xff0c;指针不初始化其值为随机指向 B.指针可以改变指向&#xff0c;引用不能&#xff0c;故错误 C.空指针没有…