回炉重造十二----网络文件共享服务

news2024/11/20 18:36:44

网络文件共享服务

1、FTP文件传输协议

1.1 FTP工作原理

FTP的20和21端口的区别

  • 20端口是用来传输数据的

  • 21端口是客户端用来连接FTP服务器

  • 主动模式(PORT):

在这里插入图片描述

  1. 客户端连接到FTP服务端的21号端口,发送用户名和密码
  2. 当客户端成功登陆FTP服务后要list列表或者读取FTP服务上的数据时,客户端会随机开放一个端口(1024以上),发送PORT(主动模式)命令到FTP服务器,告诉服务器,客户端采用主动模式和客户端开放的端口
  3. FTP服务器收到PORT主动模式命令和端口号后,通过FTP服务器自身的20端口和客户端开放的端口互相连接,发送数据(FTP-server的20端口---------------->(连接)客户端(随机开放的端口)
  • 被动模式(PASV):
    在这里插入图片描述

FTP客户端连接FTP服务器的21端口,发送用户名和密码,登录成功后要list列表或者读取数据时,客户端发送PASV命令到FTP服务器,FTP服务器会随机开放一个端口(1024以上),然后把开放的端口告诉客户端,客户端在连接FTP服务器开放的端口来进行数据的传输

  • 主动模式和被动模式的区别

主要区别在两者传输数据上,主动模式下FTP传输数据是:服务端的20端口连接客户端随机开放的端口;被动模式下FTP传输数据是:客户端连接FTP服务器开放的随机端口。

因主动模式需要客户端必须开放端口给服务器,很多客户端都是在防火墙内,开放端口给FTP服务器访问比较困难。

被动模式只需要服务器端开放端口给客户端连接就行了。所以通常使用FTP的被动模式读取数据

1.2FTP服务状态码

125:数据连接打开
200:命令成功
230:登录成功
331:用户名正确
4xx:客户端错误   425:不能打开数据连接
5xx:服务器错误   530:服务器无法登录

2、NFS服务

2.1概念

NFS:网络文件系统,基于内核的文件系统。用户和程序可以像访问本地文件一样访问远端系统上的文件,基于RPC(Remote Procedure CallProtocol 远程过程调用)实现。

RPC采用C/S 模式,客户机请求程序调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息到大为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。

在这里插入图片描述

2.2NFS软件介绍

  • 软件包:nfs-utils
  • NFS服务主要进程:
    1. rpc.nfsd 最主要的NFS进程,管理客户端是否可登录
    2. rpc.mountd 挂载和卸载NFS文件系统,包括权限管理
    3. rpc.lockd 非必要,管理文件锁,避免同时写出错
    4. rpc.statd 非必要,检查文件一致性,可修复文件
  • NFS日志文件:/var/lib/nfs/
  • NFS配置文件:/etc/exports 或者 /etc/exports.d/*.exports

2.3 NFS共享配置文件格式

/dir (共享目录)    主机
1、ro,rw  #只读和读写
2、async  #异步,数据变化后不立即写入磁盘,先写入缓冲区中,过一段时间再写入磁盘,性能高,安全性低
3、sync   #同步,数据再请求时立即写入共享存储磁盘,性能低,安全性高
4、root_squash #(默认)远程root映射为nfsnobody,UID为65534,CentOS8 为nobody,CentOS7以前的版本为nfsnobody
5、no_root_squash #远程root映射成NFS服务器的root用户
6、all_squash  #所有远程用户(包括root)都变成nfsnobody,CentOS8 为nobody
7、no_all_squash (默认)保留共享文件的UID和GID
8、anonuid和anongid 指明匿名用户映射为特定用户UID和组GID,而非nobody,可配合all_squash使用

2.4 NFS工具

2.4.1 exports:可用于管理NFS导出的文件系统
-v  #查看本机所有NFS共享
-r  #重读配置文件,并共享目录
-a  #输出本机所有共享
-au #停止本机所有共享
2.4.2 showmount
showmount -e  hostname   #查看远程主机的NFS共享

#实例:
[root@centos7 ~]#showmount -e 10.0.0.8
Export list for 10.0.0.8:
/data/wordpress *
2.4.3mount.nfs
[root@centos7 ~]#mkdir /mnt/nfs
[root@centos7 ~]#mount 10.0.0.8:/data/wordpress /mnt/nfs
[root@centos7 ~]#ls /mnt/nfs
index.html
[root@centos7 ~]#df -T /mnt/nfs
Filesystem        Type 1K-blocks  Used Available Use% Mounted on
10.0.0.8:/data/wordpress nfs4  52403200 398336  52004864  1% /mnt/nfs

2.5 自动挂载

  • 软件包:autofs
  • 服务文件:/usr/lib/systemd/system/autofs.service
  • 配置文件:/etc/auto.mster

3、数据同步

在生产环境,有时会需要两台主机的特定目录实现实时同步。比如,将NFS共享目录的数据文件,自动
实时同步到备份服务器特定目录中
在这里插入图片描述

  • 实现实时同步的方法
    1. inotify + rsync 方式实现数据同步
    2. sersync
  • 工作原理:
    1. 要利用监控服务(inotify),监控同步数据服务器目录中信息的变化
    2. 发现目录中数据产生变化,就利用rsync服务推送到备份服务器上

3.1inotify

概念:

异步的文件系统事件监控机制,利用事件驱动机制,而无须通过诸如cron等的轮询机制来获取事件,
linux内核从2.6.13起支持 inotify,通过inotify可以监控文件系统中添加、删除,修改、移动等各种事件。

  • 实现inotify软件:
    1. inotify-tools
    2. sersync
    3. lrsyncd
  • inotify + rsync使用方式
    1. inotify对同步数据目录信息的监控
    2. rsync完成对数据的同步
    3. 利用脚本进行结合
实现notify
  • 内核是否支持

    Linux支持inotify的内核最小版本为 2.6.13,参看man 7 inotify

  • inotify 内核参数说明:

    1. max_queued_events:inotify 事件队列最大长度,如值太小会出现 Event Queue Overflow 错
      误,默认值:16384, 生产环境建议调大,比如:327679
    2. max_user_instances:每个用户创建inotify实例最大值,默认值:128
    3. max_user_watches:可以监视的文件的总数量(inotifywait 单进程),默认值:8192,建议调大
    [root@data-centos8 ~]#vim /etc/sysctl.conf
    fs.inotify.max_queued_events=66666
    fs.inotify.max_user_watches=100000  
    [root@centos8 ~]#sysctl -p
    fs.inotify.max_queued_events = 66666
    fs.inotify.max_user_watches = 100000
    
  • inotify-tools工具

    1. inotifywait: 在被监控的文件或目录上等待特定文件系统事件(open ,close,delete等)发生,
      常用于实时同步的目录监控
    2. inotifywatch:收集被监控的文件系统使用的统计数据,指文件系统事件发生的次数统计

3.2 rsync

概念:

rsync 常用于做为 linux系统下的数据镜像备份工具,实现远程同步,支持本地复制,或者与其他SSH、
rsync主机同步数据,支持增量备份,配合任务计划,rsync能实现定时或间隔同步,配合inotify或
sersync,可以实现触发式的实时数据同步

rsync工作工作方式:
  1. 本地文件系统上实现同步。命令行语法格式为上述"Local"段的格式

  2. 本地主机使用远程shell和远程主机通信。命令行语法格式为上述"Access via remote shell"段的格式

  3. 本地主机通过网络套接字连接远程主机上的rsync daemon。命令行语法格式为上述"Access viarsync daemon"段的格式

    工作方式的区别:

    前两者的本质是通过本地或远程shell,而第3种方式则是让远程主机上运行rsyncd服务,使其监听在一
    个端口上,等待客户端的连接。

实验

remote shell"段的格式

  1. 本地主机通过网络套接字连接远程主机上的rsync daemon。命令行语法格式为上述"Access viarsync daemon"段的格式

    工作方式的区别:

    前两者的本质是通过本地或远程shell,而第3种方式则是让远程主机上运行rsyncd服务,使其监听在一
    个端口上,等待客户端的连接。

实验

在这里插入图片描述
电脑内存不够无法开启这么多服务器,后面补上。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

对线面试官,JUC面试专题强化

一、AQS高频问题 1.1 AQS是什么? AQS是JUC下大量工具的基础类,很多工具都基于AQS实现的,比如lock锁,CountDownLatch,Semaphore,线程池等等都用到了AQS。 AQS中有一个核心属性state,还有一个…

Android 自定义View实战—制作一个简易输入框

这次我们来做一个简易输入框,可以用于密码输入和验证码输入。 依然在EasyView中进行创建,在com.easy.view下新建一个EasyEditText,继承自View ,实现里面的构造方法。 ① 构造方法 然后我们继承自View,重写里面的构造…

一些良心软件的推荐

推荐软件一:硬盘规划——SpaceSniffer SpaceSniffer 是一款免费的硬盘空间管理软件,可以帮助你快速分析你电脑硬盘中的文件和文件夹,让你更加清楚地了解硬盘的使用情况。通过SpaceSniffer,你可以轻松地找到占用大量空间的文件和文…

Java—JDK8新特性—接口增强

目录 JDK引言 1.相关组织和规范 1.1 JCP (Java Community Process) 1.2 JSR (Java Specification Requests) 1.3 JEP (Java Enhancement Proposal) JDK8新特性 1.接口增强 1.1 默认方法 1.1.1 为什么引入默认方法 1.1.2 如何使用默认方法 1.1.3 如何调用默认方法 1…

用Radare2模拟shellcode运行

当我们在编写汇编时,可能有的时候你需要看看编译器中到底发生了什么。如果你正在排除shellcode出现的问题,你那么更需要耐心地、慎重地运行指令。 本文将探讨如何在x86_64的Ubuntu系统上模拟32位ARM shellcode。由于大多数笔记本电脑和工作站还没有运行…

单篇笔记涨粉8w,10秒视频播放超1000w,小红书最近在流行什么?

四月,小红书平台又涌现出哪些优质博主?品牌在投放种草方面有何亮眼表现? 为洞察小红书平台的内容创作趋势及品牌营销策略,新红推出4月月度榜单,从创作者及品牌两方面入手,解析月榜数据,为从业者…

iOS总结_UI层自我复习总结

UI层复习笔记 在main文件中,UIApplicationMain函数一共做了三件事 根据第三个参数创建了一个应用程序对象 默认写nil,即创建的是UIApplication类型的对象,此对象看成是整个应用程序的一个抽象,负责存储应用程序的状态。根据第四…

SpringBoot访问静态资源

SpringBoot项目中没有WebApp目录,只有src目录。在src/main/resources下面有static和templates两个文件夹。SpringBoot默认在static目录中存放静态资源,而templates中放动态页面。 static目录 SpringBoot通过/resources/static目录访问静态资源&#xff…

怎么衡量纸白银走势图的强弱?

目前国内银行提供的纸白银交易基本实现了全天候连续的交易时间,但由于银行所提供的交易终端的技术分析功能有限,投资者在分析行情时绑手绑脚,因此小编建议大家可以尝试使用国际上主流的MT4的平台,作为观察国际银价走势的参考和技术…

在 Python 中获取昨天的日期

文章目录 在 Python 中获取昨天的日期Python 中的Date模块 在 Python 中获取昨天日期的示例 我们将通过多个示例介绍如何使用 Python 获取昨天的日期。 在 Python 中获取昨天的日期 Python 是一种高级语言,可用于数据科学和机器学习,以使用 Python 的数…

unity进阶学习笔记:消息框架

1 使用消息框架的目的 对于小型游戏,可能不需要任何框架,而是让各个游戏脚本直接相互通信。如要实现玩家受到攻击血量减少,通过玩家控制类向血条脚本发送消息减少血量。但是这样直接通信会导致各脚本通信关系记为复杂,并且每一个…

测试5年从中兴 15K 跳槽去腾讯 32K+16,啃完这份笔记你也可以

粉丝小王转行做测试已经是第5个年头,一直是一个不温不火的小职员,本本分分做着自己的事情,觉得自己的工作已经遇到了瓶颈,一个偶然的机会,获得了一份软件测试全栈知识点学习笔记,通过几个月的学习&#xff…

基于AT89C51单片机的计算器设计与仿真

点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87759134?spm=1001.2014.3001.5503 源码获取 主要内容: 本次设计所提出的一种基于单片机技术的简易计算器的方案,能更好的解决计算机计算的问题,随着数字生活的到来,单片…

什么是皮安计?皮安表测试测量软件分享NS-SourceMeter

什么是皮安计 测量低直流电流,其需求常常远远超出数字万用表的功能。一般来说,数字万用表缺少测量低于100nA的电流所需的灵敏度。即使在较高的电流水平上,一个DMM的输入电压降(电压负担)高达几百毫伏,也不…

记录线上排查内存泄露问题

背景 记录一次云上排查内存泄露的问题,最近监控告警云上有空指针异常报出,于是找到运维查日志定位到具体是哪一行代码抛出的空指针异常, 问题分析 发现是在解析cookie的一个方法内,调用HttpServletRequest.getServerName()获取…

嵌入式软考备考_5 安全性基础知识

安全性基础知识 网安问题概述 被动攻击:监听(截获)。 主动攻击:主动破坏(中断篡改,病毒,ddos使得某个服务拒绝服务,重放攻击:黑客截取了正常用户输入用户名密码的加密…

Spark SQL

一、理解介绍 Spark SQL是spark中用于结构化数据处理的组件,可访问多种数据源,如连接Hive、MySQL,实现读写等操作。为什么要用spark去操作这些数据库呢?hive是一个基于Hadoop的数据仓库工具,hive的查询操作语句都要依…

走进两邻文化,全民禁种铲毒——禁毒公益大集活动

四月梧桐芳菲尽,五月槐花飘香来。五月的春风赋予了劳动者应有的权利和由衷的自豪感;五月的春雨浇灌了我们肩负禁毒工作的义务和责任的使命感。现在也是今年禁种铲毒工作的深入执行阶段,禁毒工作一直以来都是维护社会稳定的重要工作之一&#…

C语言函数大全-- s 开头的函数(4)

C语言函数大全 本篇介绍C语言函数大全-- s 开头的函数(4) 1. strdup 1.1 函数说明 函数声明函数功能char * strdup(const char *s);用于将一个以 NULL 结尾的字符串复制到新分配的内存空间中 注意: strdup() 函数返回指向新分配的内存空间…

EasyMedia播放rtsp视频流(vue2、vue3皆可用)

之前发布过WebRtc播放rtsp视频流的博客,已经解决了web播放rtsp的问题,但WebRtc太耗内存,且需要命令行启动,对用户不太友好,虽然可以写脚本,让用户一键启动。这是无意间发现的另一种web播放rtsp视频流的办法…