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当中遇到了这个问题,记录一下,不对…...

两年半机场,告诉我如何飞翔
为说明如何坐飞机离港,故此记录一篇。何为离港,顾名思义,离开港湾,那何为港湾,便是机场。 机场,一个你可能经常去,亦或不曾去之地。我想,管你去没去过,先说下怎么去&…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...
多模态图像修复系统:基于深度学习的图片修复实现
多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...

TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?
在工业自动化持续演进的今天,通信网络的角色正变得愈发关键。 2025年6月6日,为期三天的华南国际工业博览会在深圳国际会展中心(宝安)圆满落幕。作为国内工业通信领域的技术型企业,光路科技(Fiberroad&…...

Golang——7、包与接口详解
包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...