Linux中NFS配置

news2025/1/21 15:33:17

文章目录

  • 一、NFS介绍
    • 1.1、NFS的工作流程
    • 1.2、NFS主要涉及的软件包
    • 1.3、NFS的主要配置文件
  • 二、安装NFS
    • 2.1、更新yum
    • 2.2、安装NFS服务
    • 2.3、配置NFS服务器
    • 2.4、启动NFS服务
    • 2.5、配置防火墙(如果启用了防火墙,需要允许NFS相关的端口通过)
    • 2.6、生效防火墙配置
  • 三、exports配置文件参数
    • 3.1、添加其他网段访问权限
    • 3.2、exportfs的用法
      • 3.2.1、显示当前共享列表
      • 3.2.2、添加共享目录
      • 3.2.3、重新挂载共享目录
      • 3.2.4、显示详细信息
  • 四、客户端配置
  • 五、showmount命令的用法
  • 六、使用autofs按需挂载共享目录
    • 6.1、安装autofs软件包
    • 6.2、编辑autofs配置文件
    • 6.3、在打开的文件中添加以下内容(假设您的共享目录位于/mnt/shared)
    • 6.4、创建一个新的autofs配置文件来定义共享目录的挂载规则
    • 6.5/在打开的文件中添加以下内容(替换为您的实际共享目录路径和服务器地址)
    • 6.6、启动autofs服务


一、NFS介绍

NFS(Network File System,网络文件系统)是一种分布式文件系统协议,允许网络中的计算机之间通过TCP/IP网络共享资源,旨在使远程文件系统对用户透明,就好像访问本地文件一样。

NFS最初由Sun Microsystems开发,并在1984年首次发布。它广泛应用于企业环境和多操作系统环境中,提高了数据共享的效率和灵活性。NFS基于客户端-服务器架构,其中服务器端提供共享的文件系统资源,客户端通过网络请求这些资源。该协议通常在应用层实现,并依赖于传输层的协议进行通信,传统上使用UDP,但后续版本也可以使用TCP以增强可靠性。

在这里插入图片描述

1.1、NFS的工作流程

  • NFS服务器配置:服务器端需要配置并启动NFS服务,这包括编辑出口表(/etc/exports),指定哪些目录可以被共享以及访问权限。
  • 客户端配置:客户端同样需要配置以访问NFS服务器,这通常涉及到创建挂载点并使用mount命令将远程NFS目录挂载到本地。
  • 网络通信:
    • 当客户端请求访问NFS共享时,它首先通过发送网络请求到NFS服务器来获取文件句柄。
    • 文件句柄是NFS服务器用于表示文件系统内部结构的一种机制,对客户端来说是透明的。
    • 一旦获得文件句柄,客户端就可以使用该句柄进行后续的文件操作,如读取、写入、打开等。
  • 数据传输:在文件句柄的基础上,客户端通过网络与NFS服务器进行数据传输,无论是读取还是写入数据。
  • 缓存与延迟写:NFS客户端通常会缓存文件数据以优化性能,这可能导致写入操作被延迟执行,以提高整体的系统性能。
  • 故障处理:在网络不稳定或NFS服务器出现故障的情况下,客户端需要能够处理这些异常情况,可能包括重新尝试请求或恢复到正常状态。

1.2、NFS主要涉及的软件包

NFS主要涉及的软件包有nfs-utils和rpcbind。

  • nfs-utils是NFS服务的主要软件包,提供了运行NFS服务所必需的程序和工具。
  • pcbind(早期称为portmap)是管理端口映射的服务,对于NFS的正常运行至关重要,因为它负责维护端口信息并帮助客户端找到正确的服务端口。

1.3、NFS的主要配置文件

  • NFS的主要配置文件是 /etc/exports。

这个文件负责定义哪些目录可以被共享,以及对这些共享目录的访问权限和选项设置。比如,“/test888 192.168.78.0/24(rw,sync,no_root_squash)”表示将/test888目录共享给192.168.78.0网段的用户,并且用户有读写权限,数据同步写入,以及当客户端以root身份访问时赋予本地root权限。修改配置后,需要使用exportfs命令重新加载配置文件,以使改动生效。

二、安装NFS

2.1、更新yum

[root@iZbp11qs3pjvo8kz8vtcvfZ ~]# dnf update -y
CentOS Stream 9 - BaseOS                                                                                                                                   35 MB/s | 8.2 MB     00:00    
CentOS Stream 9 - AppStream                                                                                                                                58 MB/s |  20 MB     00:00    
CentOS Stream 9 - Extras packages                                                                                                                         237 kB/s |  18 kB     00:00    
Dependencies resolved.

2.2、安装NFS服务

[root@iZbp11qs3pjvo8kz8vtcvfZ ~]# dnf install -y nfs-utils
Last metadata expiration check: 0:05:51 ago on Sun 04 Aug 2024 05:25:36 PM CST.
Dependencies resolved.
==========================================================================================================================================================================================
 Package                                         Architecture                            Version                                            Repository                               Size
==========================================================================================================================================================================================
Installing:
 nfs-utils                                       x86_64                                  1:2.5.4-26.el9                                     baseos                                  460 k
Installing dependencies:
 gssproxy                                        x86_64                                  0.8.4-6.el9                                        baseos                                  110 k
 libev                                           x86_64                                  4.33-5.el9                                         baseos                                   53 k
 libnfsidmap                                     x86_64                                  1:2.5.4-26.el9                                     baseos                                   62 k
 libverto-libev                                  x86_64                                  0.3.2-3.el9                                        baseos                                   14 k
 rpcbind                                         x86_64                                  1.2.6-7.el9                                        baseos                                   58 k
 sssd-nfs-idmap                                  x86_64                                  2.9.5-4.el9                                        baseos                                   42 k

Transaction Summary

2.3、配置NFS服务器

[root@iZbp11qs3pjvo8kz8vtcvfZ ~]# vi /etc/exports
[root@iZbp11qs3pjvo8kz8vtcvfZ ~]# cat /etc/exports
/shared 192.168.1.0/24(rw,sync,no_subtree_check)
  • 这表示/shared目录将被192.168.1.0/24网段的客户机以读写同步方式访问,并且不进行子树检查。

2.4、启动NFS服务

[root@iZbp11qs3pjvo8kz8vtcvfZ ~]# systemctl start nfs-server
[root@iZbp11qs3pjvo8kz8vtcvfZ ~]# systemctl status nfs-server
● nfs-server.service - NFS server and services
     Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled; preset: disabled)
     Active: active (exited) since Sun 2024-08-04 17:33:36 CST; 10s ago
       Docs: man:rpc.nfsd(8)
             man:exportfs(8)
    Process: 88200 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=1/FAILURE)
    Process: 88201 ExecStart=/usr/sbin/rpc.nfsd (code=exited, status=0/SUCCESS)
    Process: 88237 ExecStart=/bin/sh -c if systemctl -q is-active gssproxy; then systemctl reload gssproxy ; fi (code=exited, status=0/SUCCESS)
   Main PID: 88237 (code=exited, status=0/SUCCESS)
        CPU: 17ms

Aug 04 17:33:35 iZbp11qs3pjvo8kz8vtcvfZ systemd[1]: Starting NFS server and services...
Aug 04 17:33:35 iZbp11qs3pjvo8kz8vtcvfZ exportfs[88200]: exportfs: Failed to stat /shared: No such file or directory
Aug 04 17:33:36 iZbp11qs3pjvo8kz8vtcvfZ systemd[1]: Finished NFS server and services.

2.5、配置防火墙(如果启用了防火墙,需要允许NFS相关的端口通过)

[root@iZbp11qs3pjvo8kz8vtcvfZ ~]# firewall-cmd --permanent --add-service=nfs --add-service=mountd --add-service=rpc-bind --add-service=nscd --add-service=auditd --add-service=nfs-lock --add-service=nfs-idmap
FirewallD is not running
  • 返回结果为防火墙未运行
[root@iZbp11qs3pjvo8kz8vtcvfZ ~]# systemctl status firewalld
○ firewalld.service - firewalld - dynamic firewall daemon
     Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; preset: enabled)
     Active: inactive (dead)
       Docs: man:firewalld(1)

2.6、生效防火墙配置

[root@iZbp11qs3pjvo8kz8vtcvfZ ~]# firewall-cmd --reload

三、exports配置文件参数

  • 访问权限
    • ro:只读访问。
    • rw:读写访问。
  • 同步与异步
    • sync:所有数据在请求时写入共享。
    • async:NFS在写入数据前可以响应请求。
  • 安全设置
    • secure:NFS通过1024以下的安全TCP/IP端口发送。
    • insecure:NFS通过1024以上的端口发送。
  • 写入设置
    • wdelay:如果多个用户要写入NFS目录,则归组写入(默认)。
    • no_wdelay:如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。
  • 子目录设置
    • hide:在NFS共享目录中不共享其子目录。
    • no_hide:共享NFS目录的子目录。
  • 检查设置
    • subtree_check:如果共享子目录时,强制NFS检查父目录的权限(默认)。
    • no_subtree_check:不检查父目录权限。
  • 映射设置
    • all_squash:共享文件的UID和GID映射匿名用户anonymous,适合公用目录。
    • no_all_squash:保留共享文件的UID和GID(默认)。
    • root_squash:root用户的所有请求映射成如anonymous用户一样的权限(默认)。
    • no_root_squash:root用户具有根目录的完全管理访问权限。

3.1、添加其他网段访问权限

[root@iZbp11qs3pjvo8kz8vtcvfZ ~]# vi /etc/exports
[root@iZbp11qs3pjvo8kz8vtcvfZ ~]# cat /etc/exports
/shared 192.168.1.0/24(rw,sync,no_subtree_check)
/etc 172.16.1.0/24(rp,root_squash,anonuid,anongid,insecure)
  • 这表示/etc目录将被172.16.1.0/24网段的客户机以只读方式访问,并且客户端使用的root用户映射为NFS服务器的匿名用户,设置匿名用户的UID和GID,允许使用1024以上的端口

3.2、exportfs的用法

3.2.1、显示当前共享列表

  • 使用exportfs -av命令可以显示所有当前已经共享的目录,以及它们的共享属性和客户端访问权限。
[root@iZbp11qs3pjvo8kz8vtcvfZ /]# exportfs -av
exporting 172.16.1.0/24:/etc
exporting 192.168.1.0/24:/shared
exportfs: Failed to stat /shared: No such file or directory

返回结果解析

  • “exporting 172.16.1.0/24:/etc”,表示正在尝试导出目录 /etc,允许 IP 地址范围为 172.16.1.0/24 的客户端访问。
  • “exporting 192.168.1.0/24:/shared”,表示正在尝试导出目录 /shared,允许 IP 地址范围为 192.168.1.0/24 的客户端访问。
  • “exportfs: Failed to stat /shared: No such file or directory”,表示无法找到名为 /shared 的文件或目录。

注:因为系统中没有shared这样的目录,所以会报错。

3.2.2、添加共享目录

  • 首先编辑/etc/exports文件,添加新的共享目录及其访问权限设置。然后运行exportfs -ar命令,使得配置文件的更改生效,无需重启NFS服务。
[root@iZbp11qs3pjvo8kz8vtcvfZ /]# exportfs -ar
[root@iZbp11qs3pjvo8kz8vtcvfZ /]# 

这里不会出现返回结果

3.2.3、重新挂载共享目录

  • 在某些情况下,如果更改了/etc/exports文件中的配置,需要重新挂载共享目录以应用更改。这时可以使用exportfs -r命令重新挂载所有目录,使之与配置文件同步。
[root@iZbp11qs3pjvo8kz8vtcvfZ /]# exportfs -r
[root@iZbp11qs3pjvo8kz8vtcvfZ /]# 

3.2.4、显示详细信息

  • 使用exportfs -v命令可以查看更详细的共享信息,包括哪些目录被共享、哪些客户端有权访问等。
[root@iZbp11qs3pjvo8kz8vtcvfZ /]# exportfs -v
/usr/sbin       192.168.1.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
/etc            172.16.1.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,ro,secure,root_squash,no_all_squash)

同时,还有一条命令可以查看

[root@iZbp11qs3pjvo8kz8vtcvfZ /]# showmount -e localhost
Export list for localhost:
/usr/sbin 192.168.1.0/24
/etc      172.16.1.0/24

四、客户端配置

要在NFS客户端上使用服务器的共享目录,需要在本地主机上启动rpcbind服务,然后使用showmount命令查看NFS服务器共享的目录有哪些,使用mkdir命令在本地建立共享目录的挂载点,最后使用mount命令挂载共享目录到本地。

五、showmount命令的用法

showmount命令是一个用于检查NFS(网络文件系统)服务器上共享目录的工具。它允许客户端查看哪些目录被NFS服务器导出(共享),并获取关于这些共享的信息。showmount通常在调试NFS服务器配置和客户端挂载问题时使用。

  • 查看NFS服务器上的共享目录:
showmount -e NFS服务器地址
  • 列出所有已知的NFS服务器:
showmount -D
  • 检查特定NFS服务器的导出列表:
showmount -d NFS服务器地址
  • 列出所有已知的NFS服务器,然后对每个服务器显示其导出列表:
showmount --all
  • 帮助和版本信息:
showmount -help
showmount -version

六、使用autofs按需挂载共享目录

在传统的NFS共享目录使用方式中,客户端要挂载共享目录一般是通过手工执行mount命令或在fstab文件中配置开机自动挂载这两种方式来完成。但是,NFS客户端与服务器之间并不是永久连接的,而NFS的一个缺点是当客户端和服务器连接后,任何一方离线都可能导致另一方在不断等待超时。同时,可能有很多用户挂载了共享目录,但实际上他们并不去使用该目录,这些用户也会导致NFS服务器资源的耗费。为了解决这些问题,一般的做法是使用autofs服务,仅在访问时才动态挂载共享目录。

6.1、安装autofs软件包

dnf install autofs

6.2、编辑autofs配置文件

vi /etc/auto.master

6.3、在打开的文件中添加以下内容(假设您的共享目录位于/mnt/shared)

/mnt /etc/auto.shared --timeout=600
  • 这将告诉autofs将挂载点/mnt/shared映射到/etc/auto.shared文件。–timeout=600表示共享目录将在600秒后自动卸载。

6.4、创建一个新的autofs配置文件来定义共享目录的挂载规则

vi /etc/auto.shared

6.5/在打开的文件中添加以下内容(替换为您的实际共享目录路径和服务器地址)

shared_directory -fstype=nfs4,rw,sync,noatime server:/path/to/shared/directory
  • shared_directory是您希望在本地系统中看到的挂载点名称,server是NFS服务器的IP地址或主机名,/path/to/shared/directory是共享目录在NFS服务器上的路径。

6.6、启动autofs服务

systemctl start autofs

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

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

相关文章

最新版Sonible Plugins Bundle v2024 winmac,简单智能,持续更新长期有效

一。Sonible Plugins Bundle v2024 win&mac Sonible Plugins Bundle是一款以创作者为中心的智能音频插件系列。这些工具的特点是易于使用,搭配高级处理和优质音质。pure:bundle的所有插件都由sonible的智能插件系列中使用的技术驱动,但在设计时考虑到…

论文解读(13)-StreetCLIP

原文: LEARNING GENERALIZED ZERO-SHOT LEARNERS FOR OPEN-DOMAIN IMAGE GEOLOCALIZATION StreetCLIP Preprint (arxiv.org) 摘要 本文的任务是Image geolocalization(图像地理定位) predicting the geographic coordinated of origin for …

【Material-UI】异步请求与Autocomplete的高效集成指南

文章目录 一、异步请求的两种用法1. 延迟加载(Load on open)实现方法 2. 动态搜索(Search as you type)实现方法 二、性能优化与注意事项1. 请求节流与去抖2. 禁用内置过滤3. 错误处理 三、实际应用案例:Google Maps P…

[数据集][目标检测]肾结石检测数据集VOC+YOLO格式1299张1类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):1299 标注数量(xml文件个数):1299 标注数量(txt文件个数):1299 标注…

目标跟踪那些事

目标跟踪那些事 跟踪与检测的区别 目标跟踪和目标检测是计算机视觉中的两个重要概念,但它们的目的和方法是不同的。 目标检测(object Detection):是指在图像或视频帧中识别并定位一个或多个感兴趣的目标对象的过程 。 目标跟踪(object Tracking)&…

Java面试八股之Spring框架中使用到了哪些设计模式

Spring框架中使用到了哪些设计模式 Spring 框架是一个广泛使用的 Java 应用程序框架,它包含了许多设计模式的实现。以下是一些 Spring 框架中使用的设计模式: 工厂模式 (Factory Pattern) 描述:Spring 使用 BeanFactory 和 ApplicationCon…

深度优先遍历图--DFS

一. 前言 图的遍历定义:从已经给出的连通图中某一顶点出发,沿着一些边访遍图中所有的顶点,使每个顶点仅被访问一次,就叫做图的遍历,它是图的基本运算。 图的遍历实质:找每个顶点的邻接点的过程。 在找顶点…

【C语言】Top K问题【建小堆】

前言 TopK问题:从n个数中,找出最大(或最小)的前k个数。 在我们生活中,经常会遇到TopK问题 比如外卖的必吃榜;成单的前K名;各种数据的最值筛选 问题分析 显然想开出40G的空间是不现实的&#…

【目标检测实验系列】YOLOv5高效涨点:基于NAMAttention规范化注意力模块,调整权重因子关注有效特征(文内附源码)

1. 文章主要内容 本篇博客主要涉及规范化注意力机制,融合到YOLOv5(v6.1版本,去掉了Focus模块)模型中,通过惩罚机制,调整特征权重因子,使模型更加关注有效特征,助力模型涨点。 2. 简要概括 论文地址&#x…

2024-08-04 C# 中 string 实用技巧级新手常见错误

文章目录 1 方法重载1.1 string.Split()1.2 string.Indexof() 2 方法对比2.1 Contains2.2 Equals2.3 字符串差值 3 StringBuilder4 换行符4.1 推荐做法4.2 换行符混合问题 5 文件路径分隔5.1 推荐做法 6 测试代码6.1 "OnlySplit()" vs "SplitWithTrim()"6.…

三十种未授权访问漏洞复现 合集( 二 )

未授权访问漏洞介绍 未授权访问可以理解为需要安全配置或权限认证的地址、授权页面存在缺陷,导致其他用户可以直接访问,从而引发重要权限可被操作、数据库、网站目录等敏感信息泄露。---->目录遍历 目前主要存在未授权访问漏洞的有:NFS服务&a…

杂粮饼:健康与美味的完美融合

在美食的世界里,杂粮饼以其独特的魅力吸引着众多食客。这种看似平凡的美食,却蕴含着丰富的营养和令人陶醉的口感。杂粮饼, 顾名思义,是由多种杂粮混合制作而成。常见的杂粮如玉米、小米、高粱、燕麦等,它们各自带着独特…

Ability框架介绍

Ability Ability是应用所具备能力的抽象,也是应用程序的基本组成部分,主要包括组件生命周期回调、系统环境变化通知、应用跳转、卡片开发等能力。 Ability框架模型两种形态 FA模型Stage模型 Stage模型 Stage模型中的应用组件是由Ability这个基础概念…

LLM动手实践(一): 微调google的bert和vit模型完成文本和图片的分类任务

1. 写在前面 最近大模型比较火热,也正好在公司开始接触这块相关的业务,大模型是未来的趋势,对于研发工程师来讲,是powerful的效能工具,所以想沉淀一些大模型实践相关的笔记来记录自己在使用大模型产品,部署…

基于的X86+FPGA轨道交通模块化计算机,标准3U无风扇,支持国产化定制

支持Intel Socket G2 Mobile Sandy/Ivy Bridge i7/i5/i3处理器,Intel QM67/QM77,2*LAN,2*USB2.0,2*USB3.0,3*COM,3U ◆ 支持Intel Socket G2 Mobile Sandy/Ivy Bridge i7/i5/i3处理器,Intel QM67/QM77 ◆ 1*DDR3 SO-DIMM内存 ◆ 1*VGA,1*HDMI ◆ 2*LAN,2*USB2.0,2*USB3.0,3*…

Opencv学习-图像连接(vconcat函数和hconcat函数)

1. vconcat函数介绍(竖向连接) void cv::vconcat(const Mat * src, size_t nsrc, OutputArray dst ) src:Mat矩阵类型的数组。 nsrc:数组中 Mat 类型数据的个数。 dst:连接后的 Mat类矩阵。 该函数对存放在数组矩阵中…

gpt-4.o mini

https://share.xuzhugpt.cloud/ gpt-4.o mini 目前免费使用 把上面[chatgpt4o-mini-xuzhu]复制到UserToken的文本框中 点击[个人账户] 测试一下哈,看看:

2435. 矩阵中和能被 K 整除的路径(leetcode)

文章目录 写在前面题目来源思路code 写在前面 看题解看了半天都看不懂,看了视频也看了好久,最后还是自己手动模拟才懂的,大佬们写的代码非常好,自己根本想不到该如何用代码实现出来,还是得多刷题,多见一些…

【5G NAS】全球唯一临时标识符GUTI介绍

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G技术研究。 博客内容主要围绕…

计算机毕业设计选题推荐-体育商城-Java/Python项目实战

✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…