Linux中NFS配置

文章目录

  • 一、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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MATLAB发票识别系统

课题介绍 该课题为基于MATLAB的发票识别系统。主要识别发票的编号。可定做发票的日期,金额等字段的识别。通过输入图片,校正,定位目标区域,分割,字符分割,模板匹配识别,得出结果。整个设计包含…

前端拖拽库方案之react-beautiful-dnd

近期,知名 React 拖拽库 react-beautiful-dnd 宣布了项目弃用的决定,未来将不再维护。这一决定源于其存在的缺陷与局限性,促使作者转向开发一个更加现代化的拖拽解决方案——Pragmatic drag and drop(下面会介绍)&…

Rust 力扣 - 643. 子数组最大平均数 I

文章目录 题目描述题解思路题解代码题解链接 题目描述 题解思路 我们遍历长度为k的窗口&#xff0c;我们只需要记录窗口内的最大和即可&#xff0c;遍历过程中刷新最大值 结果为窗口长度为k的最大和 除以 k 题解代码 impl Solution {pub fn find_max_average(nums: Vec<…

Linux——五种IO模型

目录 一IO基本理解 二五种IO模型 1五种IO模型示意图 2同步IO和异步IO 二非阻塞IO 1fcntl 2实现非阻塞IO 三多路复用 1select 1.1定位和作用 1.2介绍参数 1.3编写多路复用代码 1.4优缺点 2poll 2.1作用和定位 2.2介绍参数 2.3修改select代码 3epoll 3.1介绍…

php解密,sg11解密-sg15解密 如何由sourceGuardian11-sourceGuardian15加密(sg11加密~sg15加密)的源码

sg11加密~sg11加密的PHP文件运行需安装SG11加密-SG15加密组件使用、支持WINDOW及LINUX各版本 sg11解密(SourceGuardian)-sg15解密(SourceGuardian)&#xff0c;号称目前最安全的组件加密已可以解密&#xff0c;解密率99.9%&#xff0c;基本可以直接使用&#xff0c;代码特征是…

Jetson OrinNX平台CSI相机导致cpu load average升高问题调试

1. 前言 硬件: Orin NX JP: 5.1.2, R35.4.1 用v4l2-ctl --stream-mmap -d0 命令去获取相机数据时, 用top查看cpu使用情况, CPU占用率很低,但load average在1左右, 无任何程序运行时,load average 为0 用ps -aux 查看当前进程情况,发现有两个系统进程vi-output, …

qt QIcon详解

1、概述 QIcon是Qt框架中的一个类&#xff0c;专门用于处理和显示图标。它提供了灵活的接口&#xff0c;支持从多种来源加载图标&#xff0c;如文件、资源或系统主题&#xff0c;并且支持多种图像格式&#xff0c;如PNG、JPEG、SVG等。QIcon类能够与Qt中的各种控件&#xff08…

【操作系统实验课】Linux操作基础

1. 打开Ubuntu Ubuntu-22.04 虚拟机安装-CSDN博客 打开虚拟机软件 启动其中的Ubuntu22.04 打开Ubuntu系统终端 2. 创建目录和文件 创建test3目录&#xff1a; 在终端中输入命令&#xff1a;mkdir /test3。此命令用于在根目录下创建test3目录。&#xff08;注意在命令中&…

【Linux-进程间通信】匿名管道的应用-进程池实现+命名管道的应用ClientServer通信

匿名管道的应用--进程池/C实现 当系统中需要处理众多任务时&#xff0c;可以将这些任务分配给多个子进程来分担工作。然而&#xff0c;频繁地创建和销毁进程会导致较高的时间成本。为减少这种开销&#xff0c;可以采取预先创建一组子进程的策略&#xff08;以避免在任务分配时…

java设计模式之创建者模式(5种)

设计模式 软件设计模式&#xff0c;又称为设计模式&#xff0c;是一套被反复利用&#xff0c;代码设计经验的总结&#xff0c;他是在软件设计过程中的一些不断发生的问题&#xff0c;以及该问题的解决方案。 **创建者模式又分为以下五个模式&#xff1a;**用来描述怎么“将对象…

数据库->数据库约束

目录 一、数据库约束 1.定义 2.约束类型 3.NOT NULL 非空约束 4. UNIQUE 唯一约束 5.PRIMARY KEY 主键约束 1.主键的使用 2.把表中的主键交给数据库自己维护 2.1主键列设置为null 则使用自增 2.2插入除了主键以外的所有非空列&#xff08;推荐方法&#xff09; 2.3自…

ValueError: Object arrays cannot be loaded when allow_pickle=False

文章目录 问题解决方法1&#xff1a;allow_pickleTrue解决方法2&#xff1a;降低numpy版本错误原因&#xff1a;python和numpy版本不兼容 问题 Traceback (most recent call last): File “D:\project\test_st\retrieval\read_npy.py”, line 4, in data np.load(‘mosi0__le…

HTML CSS

目录 1. 什么是HTML 2. 什么是CSS ? 3. 基础标签 & 样式 3.1 新浪新闻-标题实现 3.1.1 标题排版 3.1.1.1 分析 3.1.1.2 标签 3.1.1.3 实现 3.1.2 标题样式 3.1.2.1 CSS引入方式 3.1.2.2 颜色表示 3.1.2.3 标题字体颜色 3.1.2.4 CSS选择器 3.1.2.5 发布时间字…

Prometheus和Grafana的安装部署

初识Prometheus和Grafana 通常来说&#xff0c;对于一个运行时的复杂系统&#xff0c;如果系统出了问题是很难排查的。因为你是不太可能在运行时一边检查代码一边调试的。因此&#xff0c;你需要在各种关键点加上监控&#xff0c;通过监控获取的数据&#xff0c;指导我们进一步…

ubuntu20.04 加固方案-设置用户缺省UMASK

一、编辑/etc/profile配置文件 打开终端。 查看当前umask 使用文本编辑器&#xff08;如vim&#xff09;编辑/etc/profile文件。 sudo vim /etc/profile 二、添加配置参数 在打开的配置文件的末尾中&#xff0c;添加或修改以下参数&#xff1a; umask 027 三、保存并退出…

liunx网络套接字 | 实现基于tcp协议的echo服务

前言&#xff1a;本节讲述linux网络下的tcp协议套接字相关内容。博主以实现tcp服务为主线&#xff0c;穿插一些小知识点。以先粗略实现&#xff0c;后精雕细琢为思路讲述实现服务的过程。下面开始我们的学习吧。 ps&#xff1a;本节内容建议了解网络端口号的友友们观看哦。 目录…

【果蔬识别】Python+卷积神经网络算法+深度学习+人工智能+机器学习+TensorFlow+计算机课设项目+算法模型

一、介绍 果蔬识别系统&#xff0c;本系统使用Python作为主要开发语言&#xff0c;通过收集了12种常见的水果和蔬菜&#xff08;‘土豆’, ‘圣女果’, ‘大白菜’, ‘大葱’, ‘梨’, ‘胡萝卜’, ‘芒果’, ‘苹果’, ‘西红柿’, ‘韭菜’, ‘香蕉’, ‘黄瓜’&#xff09;…

isp框架代码理解

一、整体框架如下&#xff1a; 1 外层的src中 1.1 从camera.c->task.c&#xff1a;封装了3层&#xff0c;透传到某个功能的本级。 1.2 core.c和capability.c中实现&#xff1a;开机初始化加载参数。2. plat/src中 2.1 fun.c中继task.c又透传了一层&#xff1b;以及最后功能…

VuePress文档初始化请求过多问题探讨

1. 背景 公司有部门使用VuePress 1.0搭建平台的帮助文档&#xff0c;前期文档不是很多&#xff0c;所以没有暴露出特别明显的问题。但随着文档的逐步迭代和内容的增多&#xff0c;出现了大量的并发请求&#xff0c;总共有218个请求&#xff0c;导致服务器带宽耗尽、响应速度下降…

Paimon x StarRocks 助力喜马拉雅构建实时湖仓

作者&#xff1a;王琛 喜马拉雅数仓专家 小编导读&#xff1a; 本文将介绍喜马拉雅直播的业务现状及数据仓库架构的迭代升级&#xff0c;重点分享基于 Flink Paimon StarRocks 实现实时湖仓的架构及其成效。我们通过分钟级别的收入监控、实时榜单生成、流量监测和盈亏预警&am…