当前位置: 首页 > news >正文

linux 配置NFS

1、NFS简介

NFS 是Network File System的缩写,即⽹络⽂件系统。NFS 的基本原则是“容许不同的客户 端及服务端通过⼀组RPC分享相同的⽂件系统”,它是独⽴于操作系统,容许不同硬件及操作 系统的系统共同进⾏⽂件的分享。 NFS在⽂件传送或信息传送过程中依赖于RPC协议。nfs服务也是基于C/S架构⼯作的。

NFS 在文件传送或信息传送过程中依赖于 RPC(Remote Procedure Call) 协议,即远程过程调用, NFS 的各项功能都必须要向 RPC 来注册,如此一来 RPC 才能了解 NFS 这个服务的各项功能 Port、PID、NFS 在服务器所监听的 IP 等,而客户端才能够透过 RPC 的询问找到正确对应的端口,所以,NFS 必须要有 RPC 存在时才能成功的提供服务,NFS是 一个文件存储系统,而 RPC 是负责信息的传输。

NFS分为客户端与服务器端,⼀般设置为⼀个Server端,多个客户端,也可设置为多对多,当 服务器端设置好共享⽬录/data后,客户端通过相应的访问权限,将共享⽬录挂载到本地系统 的某个⽬录下,就可以透明的看到共享⽬录⾥的⽂件了,依据服务器制定的相应权限做操作

2、NFS服务器与客户端的通信原理

客户端NFS和服务端NFS通讯过程

1.⾸先服务器端启动RPC服务,并开启111端⼝

2.启动NFS服务,并向RPC注册端⼝信息

3.客户端启动RPC(portmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端 ⼝

4.服务端的RPC(portmap)服务反馈NFS端⼝信息给客户端。

5.客户端通过获取的NFS端⼝来建⽴和服务端的NFS连接并进⾏数据的传输。

3、nfs服务特点

优点:

nfs服务配置简单,部署⽅便,数据可靠,服务稳定,满⾜中⼩企业需求。

nfs客户端可以透明地读写位于远端nfs服务器上的⽂件,就像访问本地⽂件⼀样。

nfs不仅适⽤于Linux与Unix之间实现⽂件共享,也能实现Linux与Windows间的⽂件共享 功能

缺点:

nfs是运⾏在应⽤层的协议,其监听端⼝较多,⽽且这些端⼝不固定。

nfs数据明⽂,并不对数据做任何校验。 nfs存在单点故障,如果构建⾼可⽤维护较复杂。

客户端认证是基于IP地址(没有⽤户名和密码的说法),安全性不⾼(内⽹)。

环境

Redhat 9

192.168.200.133 服务端

192.168.200.129 客户端

步骤:

更名

[root@admin ~]# hostname server
[root@admin ~]# bash
[root@server ~]# 
[root@AI ~]# hostname client
[root@AI ~]# bash
[root@client ~]# 

安装nfs服务软件包

[root@server ~]# yum -y install  nfs-utils
正在更新 Subscription Management 软件仓库。
无法读取客户身份本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。上次元数据过期检查:1 day, 0:44:54 前,执行于 2024年03月30日 星期六 13时50分28秒。
依赖关系解决。
=====================================================================================================================================================================================软件包                                         架构                                   版本                                             仓库                                    大小
=====================================================================================================================================================================================
安装:nfs-utils                                      x86_64                                 1:2.5.4-18.el9                                   BaseOS                                 459 k
安装依赖关系:gssproxy                                       x86_64                                 0.8.4-4.el9                                      BaseOS                                 114 kkeyutils                                       x86_64                                 1.6.3-1.el9                                      BaseOS                                  78 klibev                                          x86_64                                 4.33-5.el9                                       BaseOS                                  56 klibnfsidmap                                    x86_64                                 1:2.5.4-18.el9                                   BaseOS                                  66 klibverto-libev                                 x86_64                                 0.3.2-3.el9                                      BaseOS                                  15 krpcbind                                        x86_64                                 1.2.6-5.el9                                      BaseOS                                  62 ksssd-nfs-idmap                                 x86_64                                 2.8.2-2.el9                                      BaseOS                                  44 k事务概要
=====================================================================================================================================================================================
安装  8 软件包总计:893 k
安装大小:2.1 M
下载软件包:
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务准备中  :                                                                                                                                                                    省略。。。。。 已更新安装的产品。已安装:gssproxy-0.8.4-4.el9.x86_64        keyutils-1.6.3-1.el9.x86_64    libev-4.33-5.el9.x86_64              libnfsidmap-1:2.5.4-18.el9.x86_64    libverto-libev-0.3.2-3.el9.x86_64   nfs-utils-1:2.5.4-18.el9.x86_64    rpcbind-1.2.6-5.el9.x86_64     sssd-nfs-idmap-2.8.2-2.el9.x86_64   完毕!
[root@server ~]# 

重启nfs服务 并设置开机自启

[root@server ~]# systemctl  restart  nfs-server.service 
[root@server ~]# 
[root@server ~]# systemctl  enable  nfs-server.service 
Created symlink /etc/systemd/system/multi-user.target.wants/nfs-server.service → /usr/lib/systemd/system/nfs-server.service.
[root@server ~]# ss -anltp | grep 2049
LISTEN 0      64           0.0.0.0:2049       0.0.0.0:*                                                              
LISTEN 0      64              [::]:2049          [::]:*                                                              
[root@server ~]# 

查看RPC服务端口信息

[root@server ~]# ss -anltp | grep rpcbind
LISTEN 0      4096         0.0.0.0:111        0.0.0.0:*    users:(("rpcbind",pid=3270,fd=4),("systemd",pid=1,fd=227))
LISTEN 0      4096            [::]:111           [::]:*    users:(("rpcbind",pid=3270,fd=6),("systemd",pid=1,fd=229))
[root@server ~]# 

 创建共享目录

[root@server ~]# mkdir  /nfs-upload
[root@server ~]# 

 配置共享文件目录

[root@server ~]# cat /etc/exports
/nfs-upload  192.168.200.129(rw)
//共享文件夹路径  客户机地址(权限)
[root@server ~]# 
[root@server ~]# exportfs  -r

exportfs 命令主要⽤于管理当前NFS服务器的⽂件系统。exportfs 是在服务端上使⽤的命 令,主要⽤来操作挂载的⽬录,⽐如我们修改了NFS配置⽂件,需要重启NFS服务,如果客户 端正在读写,那么重启NFS服务对客户端是有影响的,因此 exportfs 命令的其中⼀个功能就 是不重启就能重新加载NFS配置⽂件。

exportfs [选项] [参数]-r //重新读取/etc/exports⽂件中的设置,并使其⽴即⽣效,⽆需
重启服务-u //取消⼀个或者多个NFS共享⽂件系统的共享-a //exports配置⽂件中所有的共享⽬录-v //显示执⾏过程
exportfs -r 或 systemctl reload nfs-server 可以实现不重启服务,重
新加载服务配置

 重启nfs服务关闭防火墙和selinux

[root@server ~]# systemctl  restart  nfs-server.service 
[root@server ~]# systemctl  stop  firewalld
[root@server ~]# setenforce  0
[root@server ~]# 

客户端下载NFS-utils包

[root@client ~]# yum -y install  nfs-utils
正在更新 Subscription Management 软件仓库。
无法读取客户身份本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。上次元数据过期检查:1 day, 0:29:17 前,执行于 2024年03月30日 星期六 14时25分54秒。
依赖关系解决。
=====================================================================================================================================================================================软件包                                         架构                                   版本                                             仓库                                    大小
=====================================================================================================================================================================================
安装:nfs-utils                                      x86_64                                 1:2.5.4-18.el9                                   BaseOS                                 459 k
安装依赖关系:gssproxy                                       x86_64                                 0.8.4-4.el9                                      BaseOS                                 114 kkeyutils                                       x86_64                                 1.6.3-1.el9                                      BaseOS                                  78 klibev                                          x86_64                                 4.33-5.el9                                       BaseOS                                  56 klibverto-libev                                 x86_64                                 0.3.2-3.el9                                      BaseOS                                  15 krpcbind                                        x86_64                                 1.2.6-5.el9                                      BaseOS                                  62 k事务概要
=====================================================================================================================================================================================
安装  6 软件包总计:783 k
安装大小:1.8 M
下载软件包:
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务准备中  :                                                                                                                                                                    省略 。。。。。。。已安装:gssproxy-0.8.4-4.el9.x86_64  keyutils-1.6.3-1.el9.x86_64  libev-4.33-5.el9.x86_64  libverto-libev-0.3.2-3.el9.x86_64  nfs-utils-1:2.5.4-18.el9.x86_64  rpcbind-1.2.6-5.el9.x86_64 完毕!

列出有哪些NFS共享资源:showmount -e 服务器地址

[root@client ~]# showmount -e 192.168.200.133
Export list for 192.168.200.133:
/nfs-upload 192.168.200.129
[root@client ~]# 

 创建挂载点 手动挂载NFS共享

[root@client ~]# mkdir /nfs-mount
[root@client ~]# mount 192.168.200.133:/nfs-upload /nfs-mount
[root@client ~]# df -Th
文件系统                    类型      容量  已用  可用 已用% 挂载点
devtmpfs                    devtmpfs  4.0M     0  4.0M    0% /dev
tmpfs                       tmpfs     3.8G     0  3.8G    0% /dev/shm
tmpfs                       tmpfs     1.5G  9.8M  1.5G    1% /run
/dev/mapper/rhel-root       xfs        66G   22G   44G   34% /
/dev/nvme0n1p1              xfs      1014M  292M  723M   29% /boot
/dev/sr0                    iso9660   9.0G  9.0G     0  100% /mmt
/dev/mapper/rhel-home       xfs        32G  260M   32G    1% /home
tmpfs                       tmpfs     767M   92K  767M    1% /run/user/0
192.168.200.133:/nfs-upload nfs4       66G   18G   48G   28% /nfs-mount
[root@client ~]# 

客户端验证

[root@client ~]# cd /nfs-mount/
[root@client nfs-mount]# ls
[root@client nfs-mount]# touch abc
touch: 无法创建 'abc': 权限不够
[root@client nfs-mount]# 
#解释:默认客户端是以nfs⽤户身份访问远端的nfs服务器,如果nfs服务端共享
的⽬录属主为root⽤户,那客户端默认是没有写权限

 修改服务端配置 重新加载配置

[root@server ~]# vim /etc/exports
[root@server ~]# cat /etc/exports
/nfs-upload  192.168.200.129(no_root_squash,rw)
[root@server ~]# exportfs  -r
[root@server ~]# 

常用共享目录访问权限:
只读:ro
读写:rw
sync:同步,数据同时写入内存与磁盘中,效率低,但可以保证数据的一致性(1.0.0版本后为默认);
async:异步,数据先保存在内存中,必要时写入磁盘,可提高性能但服务器意外停止会丢失数据;
all_squash:不论登陆者以什么身份,都会被映射为匿名用户(nfsnobody);
no_all_squash:以登陆者的身份,不做映射,包括文件所属用户和组(默认);
root_squash:将root用户及所属组都映射为匿名用户或用户组(默认);
no_root_squash:开放客户端使用root的身份来操作服务器文件系统;

回到客户端进行测试

[root@client nfs-mount]# touch abc.txt
[root@client nfs-mount]# ls
abc.txt
[root@client nfs-mount]# 

 设置开机自动挂载

[root@client ~]# df -Th
文件系统                    类型      容量  已用  可用 已用% 挂载点
devtmpfs                    devtmpfs  4.0M     0  4.0M    0% /dev
tmpfs                       tmpfs     3.8G     0  3.8G    0% /dev/shm
tmpfs                       tmpfs     1.5G  9.8M  1.5G    1% /run
/dev/mapper/rhel-root       xfs        66G   22G   44G   34% /
/dev/nvme0n1p1              xfs      1014M  292M  723M   29% /boot
/dev/sr0                    iso9660   9.0G  9.0G     0  100% /mmt
/dev/mapper/rhel-home       xfs        32G  260M   32G    1% /home
tmpfs                       tmpfs     767M   92K  767M    1% /run/user/0
192.168.200.133:/nfs-upload nfs4       66G   18G   48G   28% /nfs-mount
[root@client ~]# vim /etc/fstab 
[root@client ~]# cat /etc/fstab 
省略。。。。。。
/dev/mapper/rhel-root   /                       xfs     defaults        0 0
UUID=4257c2e0-c8da-45a5-aada-14c0041af5d5 /boot                   xfs     defaults        0 0
/dev/mapper/rhel-home   /home                   xfs     defaults        0 0
/dev/mapper/rhel-swap   none                    swap    defaults        0 0
192.168.200.133/nfs-upload  /nfs-mount   nfs4     defaults,_netdev 0 0
服务器地址:路径               挂载点路径    文件类型     格式默认 _netdev指网络设备
[root@client ~]# 

相关文章:

linux 配置NFS

1、NFS简介 NFS 是Network File System的缩写,即⽹络⽂件系统。NFS 的基本原则是“容许不同的客户 端及服务端通过⼀组RPC分享相同的⽂件系统”,它是独⽴于操作系统,容许不同硬件及操作 系统的系统共同进⾏⽂件的分享。 NFS在⽂件传送或信息…...

大疆御Pro(一代)更换晓spark摄像头评测

御Pro是17年的老机器,除了摄像头有点拉跨,续航、抗风、操作性在大疆民用系列里面算是数得上的。 机缘巧合,手头有几个御的空镜头(里面的芯片已经去掉了),还有几个晓的摄像头(只有芯片&#xff0…...

【小技巧】gitlab怎么在每次git push的时候不用输入账号密码?使用 SSH 密钥 的原理是什么?

1. gitlab怎么在每次git push的时候不用输入账号密码? 要在每次执行 git push 时避免输入 GitLab 的账号和密码,你可以通过以下几种方法实现: 使用 SSH 密钥:这是最常用的方法,通过生成 SSH 密钥并将其添加到 GitLab …...

笔记: JavaSE day15 笔记

第十五天课堂笔记 数组 可变长参数★★★ 方法 : 返回值类型 方法名(参数类型 参数名 , 参数类型 … 可变长参数名){}方法体 : 变长参数 相当于一个数组一个数组最多只能有一个可变长参数, 并放到列表的最后parameter : 方法参数 数组相关算法★★ 冒泡排序 由小到大: 从前…...

【Golang星辰图】数据处理的航海家:征服数据海洋的航行工具

数据处理的建筑师:用Go语言中构建稳固的数据分析建筑物 前言 数据处理和分析是现代计算机科学中的关键任务之一,而Go语言作为一门现代化的编程语言,也需要强大的数据处理和分析库来支持其在这一领域的应用。本文将介绍几款优秀的数据处理和…...

容器网络测试关键问题

资料问题 主要影响客户体验, 低级问题. 类似于单词拼写错误, 用词有歧义,等。 另一点是,我们的用户文档,主要偏向于技术向的描述,各种参数功能罗列。友商有比较好的最佳实践操作说明。我们后面也会都增加这样的最佳实践。golang o…...

6、Cocos Creator 2D 渲染组件:​Sprite 组件​

Sprite 组件 Sprite(精灵)是 2D/3D 游戏最常见的显示图像的方式,在节点上添加 Sprite 组件,就可以在场景中显示项目资源中的图片。 属性功能说明Type渲染模式,包括普通(Simple)、九宫格&#x…...

算法沉淀——动态规划篇(子数组系列问题(上))

算法沉淀——动态规划篇(子数组系列问题(上)) 前言一、最大子数组和二、环形子数组的最大和三、乘积最大子数组四、乘积为正数的最长子数组长度 前言 几乎所有的动态规划问题大致可分为以下5个步骤,后续所有问题分析都…...

通知中心架构:打造高效沟通平台,提升信息传递效率

随着信息技术的快速发展,通知中心架构作为一种关键的沟通工具,正逐渐成为各类应用和系统中必不可少的组成部分。本文将深入探讨通知中心架构的意义、设计原则以及在实际场景中的应用。 ### 什么是通知中心架构? 通知中心架构是指通过集中管…...

【Arduino使用SNR9816TTS模块教程】

【Arduino使用SNR9816TTS模块教程】 1.前言2. 硬件连接3. Arduino代码3.1 环境配置3.2 Arduino源码 4. 调试步骤5. 总结 1.前言 在今天的教程中,我们将详细介绍如何使用Arduino IDE开发ESP32C3与汕头新纳捷科技有限公司生产的SNR9816TTS中文人声语音合成模块进行交…...

牛客练习赛123(A,B,C,D)

牛客挑战赛,练习赛和小白月赛周赛不是一种东西。这玩意跟CF的div12差不多难度。而且找不到题解。所以决定不等题解补题了,直接写题解了。 比赛链接 光速签到下班,rk。感觉E可能能补掉,看情况补吧。 B题感觉之前考了两次&#x…...

docker部署-RabbitMq

1. 参考 RabbitMq官网 docker官网 2. 拉取镜像 这里改为自己需要的版本即可,下面容器也需要同理修改 docker pull rabbitmq:3.12-management3. 运行容器 docker run \ --namemy-rabbitmq-01 \ -p 5672:5672 \ -p 15672:15672 \ -d \ --restart always \ -…...

【智能算法】蜜獾算法(HBA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2021年,FA Hashim等人受到自然界中蜜獾狩猎行为启发,提出了蜜獾算法((Honey Badger Algorithm,HBA)。 2.算法原理 2.1算法思想 蜜獾以其…...

9、鸿蒙学习-开发及引用静态共享包(API 9)

HAR(Harmony Archive)是静态共享包,可以包含代码、C库、资源和配置文件。通过HAR可以实现多个模块或多个工程共享ArkUI组件、资源等相关代码。HAR不同于HAP,不能独立安装运行在设备上,只能作为应用模块的依赖项被引用。…...

[Pytorch]:PyTorch中张量乘法大全

在 PyTorch 中,有多种方法可以执行张量之间的乘法。这里列出了一些常见的乘法操作: 总结: 逐元素乘法:*ortorch.mul()矩阵乘法:ortorch.mm()ortorch.matmul()点积:torch.Tensor.dot()批量矩阵乘法&#xff…...

【软考】防火墙技术

目录 1. 概念2. 包过滤防火墙3. 应用代理网关防火墙4. 状态检测技术防火墙 1. 概念 1.防火墙(Firewall)是建立在内外网络边界上的过滤封锁机制,它认为内部网络是安全和可信赖的,而外部网络是不安全和不可信赖的。2.防火墙的作用是防止不希望的、未经授权…...

OpenHarmony实战:Makefile方式组织编译的库移植

以yxml库为例,其移植过程如下文所示。 源码获取 从仓库获取yxml源码,其目录结构如下表: 表1 源码目录结构 名称描述yxml/bench/benchmark相关代码yxml/test/测试输入输出文件,及测试脚本yxml/Makefile编译组织文件yxml/.gitat…...

嵌入式C语言--GPT通用定时器

嵌入式C语言–GPT通用定时器 嵌入式C语言--GPT通用定时器 嵌入式C语言--GPT通用定时器一. GPT基本概念二. GPT的作用三. GPT通道的四个状态四. Continuous/One-Shot模式3.1)Continuous模式3.2)One-Shot模式 一. GPT基本概念 GPT即General Purpose Timer…...

『Apisix系列』破局传统架构:探索新一代微服务体系下的API管理新范式与最佳实践

一、『Apisix安装部署』 🚀 1.1 手把手教你从零部署APISIX高性能API网关 二、『Apisix入门篇』 🚀 2.1 从零到一掌握Apache APISIX:架构解析与实战指南 三、『Apisix进阶篇』 🚀 3.1 动态负载均衡:APISIX的实战演练…...

如何在极狐GitLab 自定义 Pages 域名、SSL/TLS 证书

本文作者:徐晓伟 GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。 本文主要讲述了在极狐GitLab 用户…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵&#xff0c;其中每行&#xff0c;每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid&#xff0c;其中有多少个 3 3 的 “幻方” 子矩阵&am…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...