Linux —— nfs文件系统
简介
NFS 是Network File System的缩写,即网络文件系统。一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布。功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix系统间实现磁盘文件共享的一种方法。
NFS 的基本原则是“容许不同的客户端及服务端通过一组RPC分享相同的文件系统”,它是独立于操作系统,容许不同硬件及操作系统的系统共同进行文件的分享。
NFS在文件传送或信息传送过程中依赖于RPC协议。RPC,远程过程调用 (Remote Procedure Call) 是能使客户端执行其他系统中程序的一种机制。NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,这是因为NFS使用了一些其它的传输协议。而这些传输协议用到这个RPC功能的。可以说NFS本身就是使用RPC的一个程序。或者说NFS也是一个RPC SERVER。所以只要用到NFS的地方都要启动RPC服务,不论是NFS SERVER或者NFS CLIENT。这样SERVER和CLIENT才能通过RPC来实现PROGRAM PORT的对应。可以这么理解RPC和NFS的关系:NFS是一个文件系统,而RPC是负责负责信息的传输。
参考:https://www.cnblogs.com/mchina/archive/2013/01/03/2840040.html
网站数据的一致性--》NFS服务器
压力测试--》ab
监控 --》zabbix
为什么需要nfs服务器?
保障网站数据的一致性--》不管负载均衡器将请求分配到那台后端的服务器,客户机看到的内容是一样。
nfs服务器是否是最佳的解决方法?
答案: 不是的
nfs是比较廉价的解决方法,一般的公司不会采用,性能不是特别棒,建议使用专用的存储服务器。
存储服务器
SAN
优点:读写性能好,有灾备
SAN:区域存储网络
存储区域网络(Storage Area Network,简称SAN)采用网状通道(Fibre Channel ,简称FC,区别与Fiber Channel光纤通道)技术,通过FC交换机连接存储阵列和服务器主机,建立专用于数据存储的区域网络。
缺点: 需要一笔费用
NAS
NAS(Network Attached Storage)网络存储基于标准网络协议实现数据传输,为网络中的Windows / Linux / Mac OS 等各种不同操作系统的计算机提供文件共享和数据备份。
比较便宜使用tcp/ip网络协议,在日常的生活和工作里使用,例如:可以将所有手机,电脑里的图片集中存储。
小型带系统的存储设备
nfs是什么?
网络文件系统,英文Network File System(NFS),是由SUN公司研制的UNIX表示层协议(presentation layer protocol),能使使用者访问网络上别处的文件就像在使用自己的计算机一样。
nfs解决了什么问题?
数据同源: 到同一个地方去拿数据,保障数据的一致性
nfs的优点和缺点
优点: 随便一台linux服务器都可以搭建,成本非常低,构建非常容易
缺点: 读取速度有限,跟网络质量,磁盘IO,cpu,内存等因素有关,在传统的tcp/ip网络上传输的
原理
权限的选项
[root@nfs-server ~]# vim /etc/exports/web 192.168.0.0/24(rw,all_squash,sync)
/web 是我们共享的文件夹的路径--》使用绝对路径
192.168.0.0/24 允许过来访问的客户机的ip地址网段
(rw,all_squash,sync) 表示权限的限制 rw 表示可读可写 read and writero 表示只能读 read-onlyall_squash :任何客户机上的用户过来访问的时候,都把它认为是普通的用户root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器匿名用户no_root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员sync 同时将数据写入到内存与硬盘中,保证不丢失数据async 优先将数据保存到内存,然后再写入硬盘,效率更高,但可能丢失数据
搭建过程
1.安装nfs的相关软件
[root@nfs-server ~]# yum install nfs-utils -y
2.启动nfs-server服务
[root@nfs-server ~]# service nfs-server stop
Redirecting to /bin/systemctl stop nfs-server.service
[root@nfs-server ~]# service nfs-server start
Redirecting to /bin/systemctl start nfs-server.service
[root@nfs-server ~]# service nfs-server restart
Redirecting to /bin/systemctl restart nfs-server.service
[root@nfs-server ~]#[root@nfs-server ~]# ps aux|grep nfs
root 431 0.0 0.0 0 0 ? I 8月01 0:01 [kworker/u128:4-nfsd4]
root 833 0.0 0.3 50304 2932 ? Ss 8月01 0:00 /usr/sbin/nfsdcld
root 5311 0.0 0.0 0 0 ? S 11:02 0:00 [nfsd]
root 5312 0.0 0.0 0 0 ? S 11:02 0:00 [nfsd]
root 5313 0.0 0.0 0 0 ? S 11:02 0:00 [nfsd]
root 5314 0.0 0.0 0 0 ? S 11:02 0:00 [nfsd]
root 5315 0.0 0.0 0 0 ? S 11:02 0:00 [nfsd]
root 5316 0.0 0.0 0 0 ? S 11:02 0:00 [nfsd]
root 5317 0.0 0.0 0 0 ? S 11:02 0:00 [nfsd]
root 5318 0.0 0.0 0 0 ? S 11:02 0:00 [nfsd]
root 5326 0.0 0.1 12320 992 pts/0 S+ 11:03 0:00 grep --color=auto nfs
[root@nfs-server ~]#3.原理部分:
nfs服务和rpc到底是如何实现的呢?工作原理ssh-->22
nginx -->80
mysql -->3306时我们就得需要远程过程调用 (RPC) 的服务啦!RPC 最主要的功能就是在指定每个 NFS 功能所对应的 port number ,并且回报给客户端,让客户端可以连结到正确的端口上去。 那 RPC 又是如何知道每个 NFS 的端口呢?这是因为当服务器在启动 NFS 时会随机取用数个端口,并主动的向 RPC 注册,因此 RPC 可以知道每个端口对应的 NFS 功能。nfs自己并没有去对外监听某个端口号,而是外包给了rpc服务,rpc帮助nfs去监听端口,然后告诉客户机和本机的那个进程对应的端口连续[root@nfs-server ~]# netstat -anplut|grep nfs
[root@nfs-server ~]# netstat -anplut|grep rpc 查看rpc服务相关的端口
tcp 0 0 0.0.0.0:35503 0.0.0.0:* LISTEN 960/rpc.statd
tcp 0 0 0.0.0.0:20048 0.0.0.0:* LISTEN 5304/rpc.mountd
tcp6 0 0 :::20048 :::* LISTEN 5304/rpc.mountd
tcp6 0 0 :::42099 :::* LISTEN 960/rpc.statd
udp 0 0 0.0.0.0:20048 0.0.0.0:* 5304/rpc.mountd
udp 0 0 127.0.0.1:717 0.0.0.0:* 960/rpc.statd
udp 0 0 0.0.0.0:42974 0.0.0.0:* 960/rpc.statd
udp6 0 0 :::20048 :::* 5304/rpc.mountd
udp6 0 0 :::43399 :::* 960/rpc.statd
[root@nfs-server ~]# 4.共享文件,编辑/etc/exports文件,写好具体的共享的目录和权限
/etc/exports
[root@nfs-server ~]# vim /etc/exports/web 192.168.0.0/24(rw,all_squash,sync)
/web 是我们共享的文件夹的路径--》使用绝对路径 --》需要自己新建
192.168.0.0/24 允许过来访问的客户机的ip地址网段
(rw,all_squash,sync) 表示权限的限制 rw 表示可读可写 read and writero 表示只能读 read-onlyall_squash :任何客户机上的用户过来访问的时候,都把它认为是普通的用户root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器匿名用户no_root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员sync 同时将数据写入到内存与硬盘中,保证不丢失数据async 优先将数据保存到内存,然后再写入硬盘,效率更高,但可能丢失数据
[root@nfs-server ~]# mkdir /web
[root@nfs-server ~]# cd /web
[root@nfs-server web]#vim index.html 创建首页文件
index.html [root@nfs-server web]# cat index.html
sanchuang
fengdeyong xuzizhen zhangrenjie
[root@nfs-server web]#
5.刷新输出文件的列表
[root@nfs-server web]# exportfs -rv
exporting 192.168.0.0/24:/web
[root@nfs-server web]# [root@nfs-server web]# cat /etc/exports
/web 192.168.0.0/24(rw,all_squash,sync)
/download 192.168.0.0/24(rw,all_squash,sync)
/download 192.168.0.190(rw,all_squash,sync)
/download 192.168.0.192(rw,all_squash,sync)
/download 192.168.0.180(rw,all_squash,sync)
[root@nfs-server web]#
[root@nfs-server web]# mkdir /download 新建/download
[root@nfs-server web]# exportfs -rv
exporting 192.168.0.190:/download
exporting 192.168.0.192:/download
exporting 192.168.0.180:/download
exporting 192.168.0.0/24:/download
exporting 192.168.0.0/24:/web
[root@nfs-server web]#
复制一点点数据到/download目录下
[root@nfs-server download]# cp /etc/hosts .
[root@nfs-server download]# tar czf boot.tar.gz /boot
tar: 从成员名中删除开头的“/”[root@nfs-server download]#
[root@nfs-server download]# ls
boot.tar.gz hosts
[root@nfs-server download]#5.建议关闭防火墙和selinux[root@nfs-server download]# service firewalld stop
Redirecting to /bin/systemctl stop firewalld.service
[root@nfs-server download]# systemctl disable firewalld
[root@nfs-server download]# getenforce
Disabled
[root@nfs-server download]# 在客户机上挂载nfs服务器上共享的/web和/download目录
[root@web-server2 ~]# yum install nfs-utils -y 安装nfs-utils软件,方便客户机上进行挂载,具有了相关命令了,例如:showmount
[root@web-server2 ~]# showmount -e 192.168.0.139 查看nfs服务器上共享输出了哪些文件夹
Export list for 192.168.0.139:
/web 192.168.0.0/24
/download 192.168.0.0/24
[root@web-server2 ~]# 挂载nfs服务器上的目录到本机上
[root@web-server2 ~]# mkdir /web 在客户机的本地新建一个目录/web
[root@web-server2 ~]# mount 192.168.0.139:/web /web 将nfs服务器上的/web目录挂载到本地的/web目录,今后访问本地的/web目录,就是访问到nfs服务器上的/web目录
mount 是挂载的命令,可以理解为一种映射语法: mount nfs服务器的目录 本地的目录[root@web-server2 ~]# cd /web
[root@web-server2 web]# ls
index.html
[root@web-server2 web]# ls
index.html sc.txt
[root@web-server2 web]#[root@web-server2 web]# mkdir /download
[root@web-server2 web]# mount 192.168.0.139:/download /download
[root@web-server2 web]# cd /download/
[root@web-server2 download]# ls
boot.tar.gz hosts
[root@web-server2 download]# 客户机上能否有写的权限要看2种权限:1.共享权限 --》/etc/exports文件里的权限,例如ro,rw2.文件系统里的权限 --》/web 在linux里的权限[root@nfs-server web]# ll -d /web
drwxrwxrwx. 3 root root 56 8月 2 11:55 /web
[root@nfs-server web]# ll -d /download
drwxr-xr-x 2 root root 38 8月 2 11:44 /download ---》nfs客户机挂载后,没有写的权限,因为其他人没有w权限
[root@nfs-server web]# 在nfs服务器上授权
[root@nfs-server web]# chmod a+w /download/
[root@nfs-server web]# ll -d /download
drwxrwxrwx 2 root root 38 8月 2 11:44 /download
[root@nfs-server web]# 在客户机上验证
[root@web-server2 web]# cd /download/
[root@web-server2 download]# mkdir fengdeyong
[root@web-server2 download]# ls
boot.tar.gz fengdeyong hosts
[root@web-server2 download]# 后端的real-server到底要把nfs服务器共享的目录挂载到哪里?用户才能看到一样的数据nginx安装目录下的html --》编译安装的[root@web-server2 sczhengbo99]# mount 192.168.0.139:/web /usr/local/sczhengbo99/html/
[root@web-server2 sczhengbo99]# cd /usr/local/sczhengbo99/html/
[root@web-server2 html]# ls
fengdeyong index.html sc.txt
[root@web-server2 html]#
相关命令和文件
mount 挂载
exportfs -rv 相当于重启nfs服务,让修改的/etc/exports文件生效
/etc/exports 共享目录的配置文件
umount 卸载
开机自动挂载nfs文件系统
1. /etc/rc.local
mount 192.168.0.139:/web /usr/local/sczhengbo/html
chmod +x /etc/rc.d/rc.local
2.修改/etc/fstab文件,也可以自动挂载
/etc/fstab 是linux系统开机会自动根据这个文件里的内容挂载磁盘分区
fstab -->file system table
192.168.0.139:/web /usr/local/sczhengbo99/html nfs defaults 0 0
192.168.0.139:/web 挂载的分区--》nfs的文件系统
/usr/local/sczhengbo/html 在本地的挂载点
nfs 文件系统的类型
defaults 挂载的选项,使用默认
0 是否支持dump命令进行备份
0 是否开机的时候进行分区的文件系统的检查,分区的文件系统是否有问题
相关文章:

Linux —— nfs文件系统
简介 NFS 是Network File System的缩写,即网络文件系统。一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布。功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位…...

数据降维 | MATLAB实现T-SNE降维特征可视化
数据降维 | MATLAB实现T-SNE降维特征可视化 目录 数据降维 | MATLAB实现T-SNE降维特征可视化降维效果基本描述程序设计参考资料 降维效果 基本描述 T-SNE降维特征可视化,MATLAB程序。 T-分布随机邻域嵌入,主要用途是对高维数据进行降维并进行可视化&…...
蓝桥杯上岸每日N题 (交换瓶子)
大家好 我是寸铁 希望这篇题解对你有用,麻烦动动手指点个赞或关注,感谢您的关注 题目描述 有 N 个瓶子,编号 1∼N,放在架子上。 比如有 5 个瓶子: 2 1 3 5 4 要求每次拿起 2 个瓶子,交换它们的位置。 …...

GMS基本模块TIN、Solids、Modflow2000/2005、MT3DMS、MODPATH。及其在地下水流动、溶质运移、粒子追踪方面的应用
解决地下水数值模拟技术实施过程中遇到的困难,从而提出切实可行的环境保护措施,达到有效保护环境、防治地下水污染,推动经济社会可持续发展的目的。 (1)水文地质学,地下水数值模拟基础理论;&am…...

MySQL数据库中间件Mycat介绍及下载安装(教程)
一,介绍 MyCat是开源的、活跃的、基于Java语言编写的MySQL数据库中间件。可以像使用MySQL一样来使用MyCat,对于开发人员来说根本感觉不到MyCat的存在。 开发人员只需要连接MyCat即可,而具体底层用到几台数据库,每一台数据库服务器…...

【VMware】CentOS 设置静态IP(Windows 宿主机)
文章目录 1. 更改网络适配器设置2. 配置虚拟网络编辑器3. 修改 CentOS 网络配置文件4. ping 测试结果 宿主机:Win11 22H2 虚拟机:CentOS-Stream-9-20230612.0 (Minimal) 1. 更改网络适配器设置 Win R:control 打开控制面板 依次点击&#x…...

机器学习十大算法之七——随机森林
0 引言 集成学习(ensemble learning)是时下非常流行的机器学习算法,它本身不是一个单独的机器学习算法,而是通过在数据上构建多个横型,集成所有模型的建模结果,基本上所有的机器学习领域都可以看到集成学习…...

spring boot 3使用 elasticsearch 提供搜索建议
业务场景 用户输入内容,快速返回建议,示例效果如下 技术选型 spring boot 3elasticsearch server 7.17.4spring data elasticsearch 5.0.1elasticsearch-java-api 8.5.3 pom.xml <dependency><groupId>org.springframework.boot</gr…...

住宅IP:解锁更快速、稳定的互联网,你准备好了吗?
随着互联网的广泛普及,我们对网络的需求也越来越高。无论是工作、学习还是娱乐,我们都希望能够享受到更快速、稳定的互联网连接。而在实现这一目标的过程中,住宅IP正逐渐崭露头角,成为了一种备受关注的解决方案。那么,…...
支持dolby vision的盒子接支持dolby vision的电视,在adaptive hdr时,播放非dv的hdr视频,输出sdr
支持dolby vision的盒子接支持dolby vision的电视,setting选择adaptive hdr,按照这个配置在播放非dv的hdr视频时,会输出sdr。 看起来是很不合理的,高级的产品播放高级的片源,却输出低级的画质。 想要搞清楚这个问题&am…...

使用ffmpeg将WebM文件转换为MP4文件的简单应用程序
tiktok网上下载的short视频是webm格式的,有些程序无法处理该程序,比如roop程序,本文介绍了如何使用wxPython库创建一个简单的GUI应用程序,用于将WebM文件转换为MP4文件。这个应用程序使用Python编写,通过调用FFmpeg命令…...

Prompt-“设计提示模板:用更少数据实现预训练模型的卓越表现,助力Few-Shot和Zero-Shot任务”
Prompt任务(Prompt Tasks) 通过设计提示(prompt)模板,实现使用更少量的数据在预训练模型(Pretrained Model)上得到更好的效果,多用于:Few-Shot,Zero-Shot 等…...
玩转Mysql系列 - 第6篇:select查询基础篇
这是Mysql系列第6篇。 环境:mysql5.7.25,cmd命令中进行演示。 DQL(Data QueryLanguage):数据查询语言,通俗点讲就是从数据库获取数据的,按照DQL的语法给数据库发送一条指令,数据库将按需求返回数据。 DQ…...

【SpringCloud技术专题】「Gateway网关系列」(1)微服务网关服务的Gateway组件的原理介绍分析
为什么要有服务网关? 我们都知道在微服务架构中,系统会被拆分为很多个微服务。那么作为客户端要如何去调用这么多的微服务呢?难道要一个个的去调用吗?很显然这是不太实际的,我们需要有一个统一的接口与这些微服务打交道…...
【面试刷题】————STL中的vector是如何实现的?
STL(Standard Template Library)是C标准库中的一部分,它提供了许多常用的数据结构和算法,其中包括了动态数组 vector。 vector std::vector 是一个动态数组,它能够自动调整自己的大小,以适应存储元素的需…...
使用钉钉的扫码会出现多个回调(DTFrameLogin)
官方:地址 标题 出现的问题解决后效果正常使用(按照官网的流程进行使用)自己的理解(路人可忽略该内容!) 出现的问题 1692861955468 解决后效果 1692861665687 正常使用(按照官网的流程进行使用) fn.js 该文件就是钉钉官网的js文件,我下载到了…...

Android | 关于 OOM 的那些事儿
作者:345丶 前言 Android 系统对每个app都会有一个最大的内存限制,如果超出这个限制,就会抛出 OOM,也就是Out Of Memory 。本质上是抛出的一个异常,一般是在内存超出限制之后抛出的。最为常见的 OOM 就是内存泄露(大量…...
珠玑妙算游戏
珠玑妙算游戏,OJ练习 一、描述二、方法一三、方法二 一、描述 珠玑妙算游戏(the game of master mind)的玩法如下: 计算机有4个槽,每个槽放一个球,颜色可能是红色(R)、黄色…...
【rust语言】rust多态实现方式
文章目录 前言一、多态二、rust实现多态trait的静态方式还有一种方式可以通过动态分发,还以上面那段代码,比如dyn关键字 泛型方式枚举方式优点:缺点: 总结 前言 学习rust当中遇到了这个问题,记录一下,不对…...

两年半机场,告诉我如何飞翔
为说明如何坐飞机离港,故此记录一篇。何为离港,顾名思义,离开港湾,那何为港湾,便是机场。 机场,一个你可能经常去,亦或不曾去之地。我想,管你去没去过,先说下怎么去&…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...

MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...

如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...

在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
Caliper 配置文件解析:fisco-bcos.json
config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...

Java后端检查空条件查询
通过抛出运行异常:throw new RuntimeException("请输入查询条件!");BranchWarehouseServiceImpl.java // 查询试剂交易(入库/出库)记录Overridepublic List<BranchWarehouseTransactions> queryForReagent(Branch…...

【笔记】AI Agent 项目 SUNA 部署 之 Docker 构建记录
#工作记录 构建过程记录 Microsoft Windows [Version 10.0.27871.1000] (c) Microsoft Corporation. All rights reserved.(suna-py3.12) F:\PythonProjects\suna>python setup.py --admin███████╗██╗ ██╗███╗ ██╗ █████╗ ██╔════╝…...