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 klibev                                           x86_64                                  4.33-5.el9                                         baseos                                   53 klibnfsidmap                                     x86_64                                  1:2.5.4-26.el9                                     baseos                                   62 klibverto-libev                                  x86_64                                  0.3.2-3.el9                                        baseos                                   14 krpcbind                                         x86_64                                  1.2.6-7.el9                                        baseos                                   58 ksssd-nfs-idmap                                  x86_64                                  2.9.5-4.el9                                        baseos                                   42 kTransaction 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 servicesLoaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled; preset: disabled)Active: active (exited) since Sun 2024-08-04 17:33:36 CST; 10s agoDocs: 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: 17msAug 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 daemonLoaded: 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.rhkb.cn/news/461882.html

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

相关文章

Docker | 将本地项目发布到阿里云的实现流程

发布到阿里云 本地镜像发布到阿里云流程具体流程1. docker commit 生成新镜像文件2. 查看镜像3. 阿里云开发者平台选择控制台,进入容器镜像服务,选择个人实例创建命名空间仓库名称进入管理界面获得脚本推送到阿里云 补充: docker tag 命令基本…

Qt指定程序编译生成文件的位置

shadow build: [基础]Qt Creator 的 Shadow build(影子构建)-CSDN博客 影子构建:将源码路径和构建路径分开(生成的makefile文件和其他产物都不放到源码路径),以此来保证源码路径的清洁。 实验1: 我创建了两个项目:…

嵌入式常用功能之通讯协议1--串口

嵌入式常用功能之通讯协议1--串口(本文) 嵌入式常用功能之通讯协议1--IIC 嵌入式常用功能之通讯协议1--SPI(待定) ...... 一、串口协议简介 1,简介 UART(异步串行通信):时钟基准不是同一个&#xff08…

「Mac畅玩鸿蒙与硬件10」鸿蒙开发环境配置篇10 - 项目实战:计数器应用

本篇将通过一个简单的计数器应用,带你体验鸿蒙开发环境的实际操作流程。本项目主要练习组件的使用、事件响应和状态管理,帮助开发者熟悉基本的应用构建流程。 关键词 计数器应用组件操作事件响应状态管理HarmonyOS 应用开发一、创建计数器项目 1.1 在 DevEco Studio 中新建项…

Python | Leetcode Python题解之第513题找树左下角的值

题目: 题解: class Solution:def findBottomLeftValue(self, root: Optional[TreeNode]) -> int:q deque([root])while q:node q.popleft()if node.right:q.append(node.right)if node.left:q.append(node.left)ans node.valreturn ans

操作系统实验记录

实验零:虚拟机安装 一、安装vmware虚拟机 与vmware匹配搜索结果 - 考拉软件 (rjctx.com),下载17.5.1版本即可下载后对照教程安装 二、下载iso虚拟驱动 搜索清华大学镜像网站,点击再搜ubuntu,下载这个4.1GB的iso文件安装后打开vmware虚拟机 三、配置vmware虚拟机 右键管…

适配器模式:类适配器与对象适配器

适配器模式是一种结构性设计模式,旨在将一个接口转换成客户端所期望的另一种接口。它通常用于解决由于接口不兼容而导致的类之间的通信问题。适配器模式主要有两种实现方式:类适配器和对象适配器。下面,我们将详细探讨这两种方式的优缺点及适…

Python毕业设计选题:基于Python的无人超市管理系统-flask+vue

开发语言:Python框架:flaskPython版本:python3.7.7数据库:mysql 5.7数据库工具:Navicat11开发软件:PyCharm 系统展示 系统首页 超市商品详情 购物车 我的订单 管理员登录界面 管理员功能界面 用户界面 员…

CSS ——相关链接制作

文章目录 需求分析代码注意 需求 制作一个相关链接 分析 代码 html <div class"box"><div class"title"><span>相关链接</span></div><div class"links"><span><a href"https://www.baidu…

qt QComboBox详解

QComboBox是一个下拉选择框控件&#xff0c;用于从多个选项中选择一个。通过掌握QComboBox 的用法&#xff0c;你将能够在 Qt 项目中轻松添加和管理组合框组件&#xff0c;实现复杂的数据选择和交互功能。 重要方法 addItem(const QString &text)&#xff1a;将一个项目添…

哈希思想及其应用

目录 1.unordered系列容器 1.1简介 1.2接口 (只对效果进行描述&#xff0c;具体可以自行参考文档) 1.2.1构造 1.2.2容量 1.2.3迭代器 1.2.4访问 1.2.5查询 1.2.6修改 1.2.7桶操作 2.哈希 2.1概念 2.2哈希冲突 2.2.1闭散列 2.2.2开散列 2.2.2.1哈希文件 2.2.2…

C++STL详解(九)map和set的使用

一.关联式容器的介绍 CSTL包含了序列式容器和关联式容器&#xff1a; 序列式容器里面存储的是元素本身&#xff0c;其底层是线性的数据结构&#xff0c;就譬如我们之前学习的vector&#xff0c;list&#xff0c;deque等等。关联式容器里面存储的是<key,value>的键值对&…

WPF+MVVM案例实战(九)- 霓虹灯字效果控件封装实现

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1、运行效果2、主菜单与界面实现1、主菜单2、霓虹灯字界面实现3、字体资源获取3、控件封装1.创建自定义控件2、依赖属性实现3、封装控件使用4、运行效果4、源代码获取1、运行效果 2、主菜单与界面实…

凸极式发电机的相量图分析和计算,内功率因数角和外功率因数角和功角的定义。

图1&#xff1a;同步发电机稳态相量图 若发电机为凸极式&#xff0c;由于凸极机正、交轴同步电抗不等&#xff0c;即xd≠xq&#xff0c;因此必须先借助虚构电动势 E ˙ Q E ˙ q − ( x d − x q ) I ˙ d \dot{E}_Q\dot{E}_q-(x_d-x_q)\dot{I}_d E˙Q​E˙q​−(xd​−xq​)…

基于Spring Boot的员工与部门信息管理系统:增删改查全攻略

介绍项目的搭建过程&#xff0c;包括依赖管理、数据库设计、实体类的创建、控制器的编写以及前端的简单实现。希望通过本项目的学习&#xff0c;能够加深大家对Spring Boot及相关技术的理解&#xff0c;为后续的开发奠定基础。 文章目录 前言 环境搭建 开发规范 查询部门 删除部…

Java Executor ScheduledExecutorService 源码

前言 相关系列 《Java & Executor & 目录》《Java & Executor & ScheduledExecutorService & 源码》《Java & Executor & ScheduledExecutorService & 总结》《Java & Executor & ScheduledExecutorService & 问题》 涉及内容 …

SmartX 在新能源:支撑多家头部企业 MES 等核心系统稳定运行与 VMware 替换

在过去几年中&#xff0c;中国新能源企业经历了迅猛的增长。随着电池技术、光伏发电和风电等领域的不断进步&#xff0c;新能源企业不仅面临生产能力的提升需求&#xff0c;还需要优化运营效率和管理复杂度&#xff0c;其基础设施建设则需要不断升级以适应这种快速扩展的需求&a…

最新出炉!ffmpeg视频滤镜:提取灰度图像-extractplanes

滤镜的描述 extractplanes 滤镜的官网 》 FFmpeg Filters Documentation 这个滤镜可以将视频的像素格式的各个分类分别提取出来&#xff0c;比如你的像素格式是yuv420, 通过这个滤镜可以分别将y/u/v提取出来并进行存储&#xff0c;此时存储y分量的图片&#xff0c;就是灰色…

Webserver(1.6)Linux系统IO函数

目录 open函数打开已有文件创建新文件 read和write函数lseek函数stat和lstat函数 open函数 man 2 open 打开已有文件 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdio.h> #include <unistd.h>int main(){i…

【02基础】- RabbitMQ基础

目录 2- RabbitMQ2-1 介绍和安装安装 2-2 RabbitMQ 快速入门2-3 RabbitMQ 数据隔离 3- Java客户端3-1 快速入门AMQP快速入门&#x1f4d1;小结&#xff1a;SpringAMQP如何收发消息&#xff1f; 3-2 WorkQueues 任务模型案例-使用 WorkQueue 单队列绑定多消费者&#x1f4d1;小结…