使用 Linux 搭建并配置一个 NFS 服务器

目录

  • 1. 安装相关软件包
  • 2. 启动并启用相关服务
  • 3. NFS 配置文件
    • 3.1 /etc/exports 文件
    • 3.2 共享目录
    • 3.3 客户端列表
    • 3.4 参数选项
      • 3.4.1 访问权限选项
      • 3.4.2 数据写入硬盘模式
      • 3.4.3 root 用户权限
      • 3.4.4 子树检查
      • 3.4.5 匿名用户
      • 3.4.6 安全性(特权端口)
      • 3.4.7 网络传输
      • 3.4.x 更多 (More)
    • 3.5 基本示例
  • 4. 导出 NFS 共享
  • 5. 配置防火墙
  • 6. 客户端挂载 NFS 共享
  • 7. 自动挂载(可选)

系统环境:

  • Rocky Linux 9.3;适用于 Red Hat / Centos 等红帽系发行版;其他发行版需要查找对应的软件包。
  • NFS 软件包版本:nfs-utils-1:2.5.4-26.el9_4.x86_64

NFS:Network File System , 网络文件系统。

1. 安装相关软件包

首先,确保系统已经更新并安装了 NFS 所需的软件包:

sudo dnf update -y# 安装 nfs 软件包
# 如果是较新的版本中,也会自动安装 rpcbind
sudo dnf install nfs-utils -y

【注】在 NFSv4 中,不再需要 rpcbind,因为它使用了更简单的通信机制,不依赖于 RPC 服务的映射。但是如果需要兼容 NFSv2 或 NFSv3,则必须安装并运行 rpcbind。因为这两个版本的 NFS 依赖 rpcbind 来协商和管理通信。

sudo dnf install rpcbind -y

2. 启动并启用相关服务

安装完成后,启动 NFS 服务并将其设置为开机自启:

# 开机自启
sudo systemctl enable nfs-server# 启动 nfs 服务
sudo systemctl start nfs-server

如果安装了 rcpbind 也需要设置进行启动以及设置为开机自启:

# 开机自启
sudo systemctl enable rpcbind# 启动服务
sudo systemctl start rpcbind

3. NFS 配置文件

3.1 /etc/exports 文件

/etc/exports 是 NFS(Network File System)的配置文件,用于定义哪些目录要共享、共享给哪些客户端以及每个客户端的访问权限。

/etc/exports 文件的语法:

# 每一行都是一个配置
<共享目录> <客户端列表>(<选项>)# 每行进行配置多个客户端列表
<共享目录> <客户端列表>(<选项>) <客户端列表>(<选项>)
  • 共享目录:要共享的本地目录的绝对路径。
  • 客户端列表:指定可以访问该目录的客户端,支持 IP 地址、主机名或通配符。
  • 选项列表:定义客户端的访问权限和其他行为,放在括号中。

简单示例:

# 将 /home/shared 目录共享给 192.168.1.0/24 网络的所有主机,并且允许读写访问:
/home/shared 192.168.1.0/24(rw,sync,no_subtree_check)# 将 /var/nfs 目录共享给多个特定的客户端,并指定不同的访问权限
/var/nfs 192.168.1.10(ro,sync) 192.168.1.11(rw,sync,no_root_squash)

3.2 共享目录

指定本地要共享的目录的绝对路径,不能使用相对路径。

共享目录的权限一般为 755777,根据实际情况设置即可。

3.3 客户端列表

客户端可以用以下几种常用的方式表示:

  • 单个 IP 地址:如 192.168.1.10,只允许指定的客户端访问。
  • IP 地址范围(子网):如 192.168.1.0/24,允许特定网络范围内的所有客户端访问。
  • 主机名:如 client.example.com,允许指定主机访问(需要配置 DNS 或 /etc/hosts)。
  • 通配符:如 *,允许所有客户端访问(不推荐用于生产环境)。

客户端列表可以指定多个客户端,使用空格分隔。

3.4 参数选项

在括号内指定的选项用来配置共享的权限和行为。

参数选项挺多的,但是可以进行一下归纳,常用的参数主要分为下面几类:

3.4.1 访问权限选项

  • 默认为: ro
  • rw:读写权限,允许客户端对共享目录进行读和写操作。
  • ro:只读权限,客户端只能读取共享目录中的文件,无法修改。

3.4.2 数据写入硬盘模式

  • 默认值:sync
  • sync:同步写入;确保数据在写入时立即写入磁盘,保证数据一致性。
  • async:异步写入;数据会先暂存在内存中,然后再批量写入磁盘,可能提升性能但存在数据丢失风险。

3.4.3 root 用户权限

  • 默认值:root_squash
  • no_root_squash:允许 NFS 客户端以 root 身份访问共享目录。
  • root_squash:将客户端的 root 用户映射为 nobody (旧版本为:nfsnobody ),默认设置,增加安全性以防止权限提升。

3.4.4 子树检查

  • 默认值:subtree_check
  • no_subtree_check:禁用子树检查,当客户端访问共享目录中的文件(含目录)时,NFS 服务器不会检查该文件所属的子目录是否在导出的目录树中,只会检查顶级并不是其路径,只有顶级)共享目录的权限。
  • subtree_check:启用子树检查,当客户端请求访问共享目录中的文件(含目录)时,NFS 服务器会检查该文件是否属于实际被导出的子目录,并检查其路径上的所有权限。

3.4.5 匿名用户

  • 默认值:no_all_squash
  • all_squash:将所有客户端用户(不论是 root 还是普通用户)都映射为匿名用户 nobody (旧版本为:nfsnobody )。
  • no_all_squash:访问用户先与本机用户匹配,匹配失败后再映射为匿名用户 nobody (旧版本为:nfsnobody );
  • anonuid / anongid:分别指定匿名用户的 UID 和 GID,当使用 root_squash 或 all_squash 时使用。
# 示例
/home/shared 192.168.1.0/24(rw,all_squash,anonuid=1001,anongid=1001)

3.4.6 安全性(特权端口)

  • 默认值:secure

  • secure:仅允许客户端通过特权端口(0-1023)连接。

    默认情况下,只有当客户端使用特权端口时,NFS 服务器才允许访问。特权端口只能由 root 用户绑定,因此这个选项提供了额外的安全性。

  • insecure:允许客户端通过非特权端口(1024 以上)连接。

    启用该选项会使 NFS 服务器接受来自任何端口的连接,这样可以允许不使用特权端口的客户端(例如某些非标准 NFS 实现或特定的客户端设备)访问共享目录。

# 配置示例
/home/shared 192.168.1.0/24(rw,sync,insecure)

3.4.7 网络传输

  • 默认值:wdelay
  • wdelay:延迟写入;当 NFS 服务器在接收到多个写入请求时,会稍微延迟处理,以便合并多个请求为一次写操作,从而减少磁盘 I/O 操作次数。
  • no_wdelay:禁用延迟写入;当 NFS 服务器立即处理每个写入请求,而不等待更多的写操作。

3.4.x 更多 (More)

X 表示未知,哈哈哈!😆

除了上面的参数外,还有很多其他的参数,后续如果有比较重要的将不定时整理一下。

3.5 基本示例

下面是一个常用的配置,可根据实际需求去做调整。

编辑 /etc/exports 文件,定义需要共享的目录及权限。

sudo vim /etc/exports

在文件中添加共享目录及权限,例如:

/home/shared 192.168.1.0/24(rw,sync,no_root_squash,no_subtree_check)

参数说明:

  • /home/shared:要共享的目录路径。
  • 192.168.1.0/24:允许访问的客户端 IP 地址段。
  • rw:读写权限。
  • sync:数据同步写入。
  • no_root_squash:允许客户端以 root 身份访问(根据需求配置)。
  • no_subtree_check:提高性能,禁用子目录检查。

4. 导出 NFS 共享

编辑完 exports 文件后,导出 NFS 共享:

sudo exportfs -r

参数说明:

  • -r :重新导出所有已定义的共享目录,读取 /etc/exports 文件中的更改。

5. 配置防火墙

  • 为了让客户端能够访问 NFS 共享,需要开放相应的防火墙端口
  • 如果是内网或测试环境,可以选择关闭防火墙
sudo firewall-cmd --permanent --add-service=nfs
sudo firewall-cmd --permanent --add-service=mountd
sudo firewall-cmd --permanent --add-service=rpc-bind
sudo firewall-cmd --reload

6. 客户端挂载 NFS 共享

这里的客户端挂载是最常用且简单的挂载,没有考虑太多 NFS 的稳定性;为了保障稳定性 NFS 还提供了很多配置参数,后续有时间单独出一篇文章来具体描述。


在客户端机器上,安装 nfs-utils,并使用以下命令挂载 NFS 共享:

sudo dnf install nfs-utils -y
sudo mount -t nfs <server_ip>:/home/shared /mnt/xxx

<server_ip> 替换为 NFS 服务器的 IP 地址,/mnt/xxx 为客户端的挂载目录。

7. 自动挂载(可选)

如果希望客户端在每次启动时自动挂载 NFS 共享,可以将其添加到 /etc/fstab 文件中:

<server_ip>:/home/shared  /mnt/xxx   nfs    defaults    0 0

这样,系统启动时会自动挂载 NFS 共享。

想了解更多 /etc/fstab 文件的配置,可参考文章:Linux 再入门整理:详解 /etc/fstab 文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1559777.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【新品发布】数字能源EMS管理再掀新篇章

致远电子EM系列工商业储能网关累计装机容量突破2GWh&#xff01;聚焦数字综合能源应用&#xff0c;全新一代EM-800/EM-1000G发布&#xff0c;见证光储充时代的来临&#xff01; 早在2008年&#xff0c;致远电子的工程师在为国内某新能源企业设计光伏通讯管理机方案时&#xff0…

Leetcode 50. Pow ( x , n ) 快速幂、取模 C++实现

问题&#xff1a;Leetcode 50. Pow ( x , n ) 实现 pow(x, n) &#xff0c;即计算 x 的整数 n 次幂函数。 算法&#xff1a; 具体实现流程如下&#xff1a; 代码&#xff1a; class Solution { public:double myPow(double x, int N) {double ans 1;long long n N;if (n <…

研究生异地报名,需要社保缴费记录,没有社保记录怎么办。

1、户籍在安徽省&#xff0c;在北京工作&#xff0c;想报北京科技大学&#xff1b; 招生简章中没有提社保记录&#xff0c;但是在报名的时候&#xff0c;又出来要求&#xff1a;北京连续6个月的社保记录。这里是指在北京市考试的要求。没有连续社保缴费记录&#xff0c;肯定不能…

软考《信息系统运行管理员》- 4.1信息系统软件运维概述

4.1信息系统软件运维概述 信息系统软件运维的概念 信息系统软件运维是指信息系统软件在开发完成投入使用后&#xff0c;对信息系统软件进行的改正 性维护、适应性维护、完善性维护、预防性维护等软件工程活动。 信息系统软件的可维护性及维护类型 信息系统软件维护工作直接…

dvwa:sql注入、sql盲注全难度解析

sql注入 easy 单引号闭合 id2 and if(11,sleep(3),1) and 11 ​ 联合注入&#xff1a; id2 union select database(),user() -- ​ 报错注入&#xff1a; id2 and updatexml(1,concat(0x7e,database(),0x7e),1) -- medium mysql_real_escape_string() 调用 mysql 库的函数 mys…

gbase8s的事务、并发控制、锁机制、隔离级别

一、事务概念 事务是指作为单个逻辑工作单元执行的一系列操作。事务处理可以确保除非事务性单元内的所有操作都成功完成&#xff0c;否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元&#xff0c;可以简化错误恢复并使应用程序更…

SpringBoot美发店解决方案:打造智能门店

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理美发门店管理系统的相关信息成为必然。开发…

收银系统源码营销活动-商品组合套餐

1. 功能描述 商品组合套餐&#xff1a;商家可以把不同的商品组合成套餐在收银台售卖&#xff0c;同时可以利用该套餐做一些会员拉新活动&#xff0c;如设置该活动仅限会员用户才可以购买等。还可以针对套餐的商品选择进行设置&#xff0c;如超市开业活动&#xff0c;价值19.8元…

JVM性能调优-JVM工具使用

命令行工具 jps jps -q 只看进程id jps -l 显示java进程的完整类名 jps -m 查看传递给主类main()的参数 jps -v 列出虚拟机启动时的jvm参数 以上参数可以组合使用 jstat 查看JVM统计信息 例&#xff1a;jstat -gc -t 19788 1000 10 -gc&#xff1a;打印gc统计信息 ;-t&am…

微信+AI应用平台之BotChoice 插件实现灵活调用扣子、dify

github地址&#xff1a;https://github.com/javak8/bot_choice.git 说明 BotChoice项目插件是作者原创插件, 根据提示词调用不同bot/model,可以实现多指令执行 目前bot/model只支持openai接口规范 可以多指令执行 &#xff0c;比如&#xff1a; /热点文案 /搜图片 杭州超市…

【Elasticsearch 实战与原理解析】好书推荐

Elasticsearch 实战与原理解析 在当今这个信息爆炸的时代&#xff0c;数据的存储、检索和分析变得越来越重要。Elasticsearch&#xff0c;作为一个基于 Lucene 的开源搜索引擎&#xff0c;以其强大的全文搜索能力、分布式特性和易用性&#xff0c;成为了数据检索领域的佼佼者。…

基于Java实现(APP)智能停车场管理系统

移动应用开发系统设计说明书&#xff08;智能停车场管理系统&#xff09; 服务集成流程详细设计 实现功能 序号功能点1新增用户2注册用户3修改场地信息4列出场地信息5新增认证车辆6列出认证车辆7删除认证车辆8车辆进入信息录入9停车记录列表展示10出停车场信息录入 参数说明…

SOMEIP_ETS_178: Subscribe_using_wrong_SOMEIP_MessageID

测试目的&#xff1a; 验证DUT能够拒绝一个SOME/IP头部使用错误消息ID进行服务发现的SubscribeEventgroup消息&#xff0c;并以SubscribeEventgroupNAck作为响应。 描述 本测试用例旨在确保DUT遵循SOME/IP协议&#xff0c;当接收到一个使用错误消息ID的服务发现SubscribeEve…

找不到opencl.dll怎么办,4种有效的方法教你解决

1. OpenCL.dll 概述 1.1 定义与作用 OpenCL.dll 是 Open Computing Language&#xff08;开放计算语言&#xff09;的一个关键组件&#xff0c;它是一个动态链接库&#xff08;DLL&#xff09;文件&#xff0c;对实现 OpenCL 标准至关重要。OpenCL.dll 文件通常位于 Windows …

论文阅读:OpenSTL: A Comprehensive Benchmark of Spatio-Temporal Predictive Learning

论文地址&#xff1a;arxiv 摘要 由于时空预测没有标准化的比较&#xff0c;所以为了解决这个问题&#xff0c;作者提出了 OpenSTL&#xff0c;这是一个全面的时空预测学习基准。它将流行的方法分为基于循环和非循环模型两类。OpenSTL提供了一个模块化且可扩展的框架&#xff…

【Hadoop之Yarn】Yarn的搭建流程、概念和组成部分 以及 Yarn的历史日志jobHistory配置和三种调度器

文章目录 一、Yarn的搭建1、修改mapred-site.xml2、修改yarn-site.xml3、检查hadoop-env.sh 中是否配置了权限4、分发mapred-site.xml & yarn-site.xml 到另外两台节点上5、启动和停止yarn平台&#xff1a;6、同时启动hdfs和yarn&#xff1a;7、启动后jps进程&#xff08;包…

【一文讲透(番外篇)】如何编译安装KWDB v2.0.4数据库

KaiwuDB 浪潮集团是中国领先的云计算、大数据服务商&#xff0c;拥有浪潮信息、浪潮软件、浪潮数字企业三家上市公司。主要业务涉及计算装备、软件、云计算服务、新一代通信、大数据及若干应用场景。已为全球一百二十多个国家和地区提供IT产品和服务。 KaiwuDB 是浪潮控股的数据…

【Power Compiler手册】13.UPF多电压设计实现(16)

Golden UPF流程 Golden UPF流程是维护设计中UPF多电压电源意图的可选方法。它在整个综合、物理实现和验证步骤中使用原始的“Golden”UPF文件,以及由Design Compiler和IC Compiler II工具生成的supplemental UPF文件。图122比较了传统的UPF流程与Golden UPF流程。 Golden UPF…

如何提高LabVIEW编程效率

提高LabVIEW编程效率对开发者来说非常重要&#xff0c;尤其是在处理复杂项目或紧迫的开发周期时。以下是一些可以显著提升LabVIEW编程效率的技巧&#xff0c;从代码结构、工具使用到团队协作的多个角度进行详细分析&#xff1a; 1. 模块化设计 模块化设计 是提高代码可维护性和…

KPaaS平台多系统权限统一管理的便利性

多系统权限管理的困境如同枷锁般束缚企业发展&#xff0c;导致管理效率低下、操作流程复杂且权限不一致&#xff0c;给员工和企业带来诸多不便与风险。 免费体验多系统权限管理系统 www.kpaas.net 多系统权限给企业带来的不便利 &#xff08;一&#xff09;繁琐的登录与操作流…