• 网络文件共享服务介绍


    一:存储架构

    根据存储设备所在的位置分类

    image

    1、DAS

    DAS:(Direct-Attached Storage)直连式存储。服务器使用专用线缆(例如SCSI)和存储设备(例如磁盘阵列)进行直连。

    特点

    • 优点是储设备只能连接到一台主机使用,无法共享,成本较高,且安全性可靠性较低
    • 缺点是容量有限,不适合大规模的数据存储和共享。

    使用场景:个人电脑、小型企业、高性能计算环境等。

    2、NAS

    NAS:(Network-Attached Storage)网络附加存储。服务器和存储设备非直连,而是通过ip网络进行连接,这样就实现了多台主机与存储设备之间的连接。

    特点

    • 优点是易于管理、容量可扩展、能够实现共享存储和备份
    • 缺点存在IO瓶颈,性能较低,不适合高性能计算和数据库应用

    使用场景:文件共享、备份和存储等。

    3、SAN

    SAN:(Storage Area Network)存储区域网络。基于NAS发展而来,通过专用光纤通道交换机访问数据,采用ISCSI、FC协议。

    特点

    • 优点:解决了NAS的IO瓶颈问题,因为采用光纤、iSCSI等协议来连接设备,速度很快。
    • 缺点:价格昂贵、结构复杂、需要专业的维护和管理。

    使用场景:数据中心、虚拟化、云计算等环境

    NAS和SAN区别
    SAN:

    可以理解为一种虚拟化存储的技术,它将存储设备从服务器中分离出来,形成一个独立的存储网络。

    客户端访问这些存储设备,就像访问本地硬盘一样。因此,客户端可以对这些存储设备进行格式化、分区、挂载等操作。

    NAS:

    可以理解为一个存储服务器,它已经预先安装了操作系统和文件系统,并且已经格式化好了磁盘,因此客户端设备可以直接通过网络连接到NAS上来访问数据,而不需要进行格式化或设置文件系统等操作。

    客户端设备可以通过网络共享协议(如SMB/CIFS、NFS、AFP等)访问NAS上的数据。

    块存储和文件存储

    • 块存储:是将数据切分为固定大小的块(block),每个块都有唯一的地址,可以单独进行读写和处理。DAS和SAN使用的就是块存储。
    • 文件存储:是将数据以文件形式存储在一个统一的文件系统中,每个文件都有唯一的名称和路径,文件系统可以通过文件名或路径名来定位文件。NAS使用的就是文件存储。
      image

    二:文件共享服务

    UNC 格式:

    UNC:(Universal Naming Convention)通用命名规则。由微软公司发明,是一种用于在网络上指定文件或文件夹位置的命名约定,允许用户通过网络共享访问文件和文件夹。

    UNC格式广泛使用在windows中,Linux中也支持这种格式,例如使用Samba软件包来实现文件和打印机的共享。

    格式: \\server\share 使用反斜杠(\)作为分隔符

    • server:表示共享资源所在的计算机名称或IP地址
    • share: 表示共享资源的名称

    注意:

    UNC路径不能指定端口号,因为端口号不是共享资源的一部分,所以使用UNC格式的路径时不能指定端口号。

    \\10.0.0.22:446\share 是错误的
    

    1、FTP

    FTP:(File Transfer Protocol )文件传输协议,属于应用层协议,是NAS存储架构的一种协议,基于CS结构。

    FTP和NAS的区别:
    FTP是一个应用层协议,用于实现跨主机传输文件,NAS是一种网络架构,NAS可以使用各种协议进行文件传输,包括FTP、SMB、NFS等,因此,FTP可以用于在NAS中传输文件,但它本身不属于NAS这种网络架构。

    FTP的特点:
    跨平台:windows、linux等操作系统都支持FTP协议。

    FTP工作原理:
    采用的是双端口模式,分为命令端口和数据端口,命令端口对应命令通道,数据端口对应数据通道。

    • 命令通道:客户端和服务端之间传输FTP命令和响应,以控制文件传输的整个过程。服务端的默认端口是tcp/21。
    • 数据通道:客户端和FTP服务器之间实际传输数据的通道。

    FTP的两种工作模式:

    • 主动模式:FTP服务器主动连接客户端,这个时候FTP服务器的数据端口使用的是20端口。
    • 被动模式:客户端主动连接FTP服务器,这时候FTP服务器的数据端口是随机的。

    说明:两种工作模式是针对数据通道的建立来说的,无论是主动模式还是被动模式,FTP客户端都需要连接到FTP服务器的21号端口,以建立命令通道。

    FTP的工作流程:
    (1)FTP服务端开启对21端口的监听,等待客户端的连接。
    (2)客户端发起连接,通过连接到服务端的21端口,建立命令通道。
    (3)进行数据交互:

    • ​ 主动模式:服务端主动找客户端建立数据通道,这个时候服务端使用的数据端口是20端口,客户端随机。
    • ​ 被动模式:客户端主动连接服务端,这个时候双方使用的端口都是随机的。

    FTP的实现:
    windows

    • 客户端:浏览器 、资源管理器、Filezilla等
    • 服务端:FileZilla Server、IIS等

    Linux

    • 客户端:ftp、wget、curl
    • 服务端:vsftpd、Wu-ftpd

    Linx中用于搭建FTP服务器的工具:VSFTP

    特点:性能好、下载速度快、单机可支持15k并发量。红帽默认使用的ftp服务端工具就是vsftp

    2、NFS

    NFS:(Network File System) 网络文件系统,基于内核的文件系统。Sun 公司开发,通过使用 NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件,基于RPC(Remote Procedure Call Protocol )远程过程调用实现。

    NFS工作原理:

    • 客户端发起挂载请求:客户端需要访问远程主机上的文件,它会向NFS服务器发起挂载请求。
    • 服务器返回挂载信息:服务器返回需要挂载的目录信息,包括目录的文件系统类型、权限和访问方式等。
    • 客户端进行挂载:客户端使用NFS协议挂载远程目录,将目录挂载到本地的一个挂载点上,此时客户端可以像访问本地文件一样访问远程文件。
    • 客户端读写文件:客户端通过挂载点访问远程文件,当客户端需要读写远程文件时,它会发送NFS请求到服务器,请求服务器读取或写入文件数据。
    • 服务器响应请求:服务器接收到客户端的请求后,会读取或写入相应的文件数据,并将结果返回给客户端。
    • 客户端卸载挂载点:当客户端不再需要访问远程文件时,它会卸载挂载点,断开与NFS服务器的连接。

    NFS使用的端口:

    • Portmap(RPC bind)服务: Portmap服务使用TCP或UDP端口111,它是NFS和其他RPC服务的注册和映射程序。
    • NFS服务:NFS服务使用TCP或UDP端口2049,它是NFS协议的主要端口。
    • Nlockmgr(Network Lock Manager)服务:Nlockmgr服务使用TCP或UDP端口32803,它用于提供NFS文件锁定服务。
    • Mountd(Mount Daemon)服务:Mountd服务使用TCP或UDP端口20048,它是NFS挂载协议的主要服务。

    NFS的相关进程:

    • rpc.nfsd 最主要的NFS进程,管理客户端是否可登录
    • rpc.mountd 挂载和卸载NFS文件系统,包括权限管理
    • rpc.lockd 非必要,管理文件锁,避免同时写出错
    • rpc.statd 非必要,检查文件一致性,可修复文件

    说明:CentOS 6 开始portmap进程由rpcbind代替

    NFS的使用场景:

    场景一:Linux和LInux之间实现文件共享:

    服务端共享出某个目录后,客户端直接挂载进行使用。
    image

    场景二:Linux和Windows之间实现文件共享:

    Linux作为服务端,windows挂载linux的共享目录为本地的一个磁盘,Windows需要开启NFS客户端功能。
    image
    image

    NFS的使用场景:

    NFS:适用于需要在Unix和Linux系统之间进行文件共享的环境,例如服务器集群和高性能计算环境。

    3、samba

    Samba是一种基于Windows的文件共享协议开发而来的软件,它可以在Windows、Linux和Unix系统之间共享文件和打印机。Samba可以让Linux或Unix系统像Windows一样作为文件服务器,从而方便Windows系统用户访问和使用共享文件和打印机。

    SMB协议:(Server Messages Block)信息服务块协议,由ibm开发,最早用在微软的dos系统上面,windows之间的文件共享就是使用SMB协议实现的。

    CIFS:(common internet file system)通用网络文件系统,基于smb协议开发而来的文件系统,可以理解为SMB协议的升级版。

    samba服务使用的端口:

    默认是445和139端口

    • 445端口:实现Internet文件共享
    • 139端口:文件和打印共享

    samba的使用场景:
    场景一:Linux作为服务端,Windows作为客户端实现文件共享
    image

    通过网络驱动映射器映射为windows本地的一个磁盘。
    image

    场景二:windows作为服务端,linux作为客户端实现文件共享
    image

    samba服务存在的问题:

    因为以前永恒之蓝病毒和smb1的漏洞,运营商直接把139和445这两个端口给屏蔽了,即使手动在防火墙打开这两个端口也没法使用。

    windows的文件共享又默认使用的是139和445端口,无法更改客户端的端口。

    在linux作为服务端,windows作为客户端的时候,因为windows默认端口没法更改,且使用的是UNC路径进行访问。

    解决方法:

    方法一:配置本地端口映射转发

    # https://blog.csdn.net/weixin_42552016/article/details/128421145
    netsh interface portproxy add v4tov4 
    		listenport=445 listenaddress=127.0.0.1 connectport=4450 connectaddress=116.116.132.151
    

    image

    方法二:使用端口转发驱动

    # Multi Port Forwarder驱动
    	# https://tubecast.webrox.fr/landrive/portmapping.html
    	# https://www.verigio.com/products/multi-port-forwarder/default
    

    image

    4、使用场景

    samba:用于在Windows和Linux系统之间进行文件共享。

    NFS:支持多种操作系统,一般使用在linux和linux之间的文件共享,也可以实现windows和linux之间的文件共享。

    FTP:FTP不像Samba和NFS一样提供文件系统级别的共享,它只是提供了一种简单的方式来传输文件,客户端通过FTP客户端软件连接到FTP服务器,然后可以上传和下载文件。FTP一般使用在将文件从一个计算机上传到另一个计算机。

    三:跨主机拷贝文件

    1、SCP工具

    scp是基于ssh协议开发的ssh客户端工具。

    # 使用格式                 
       #   Pull: 	scp  [option]  /source_file   [user@]remote_host/dest_file
       #   Push: 	scp  [option]  [user@]remote_host/dest_file  /source_file
    # 选项
    	-r:复制文件夹
    	-P PORT 指明remote host的监听的端口
    # 说明 复制目录文件后面有无斜线的区别
    	# 有斜线:复制文件夹里面的内容。 例如:scp /data/ 10.0.0.22:~/    表示复制data中的文件
    	# 无斜线:复制整个文件夹 		 例如:scp /data  10.0.0.22:~/ 表示复制data整个目录
    

    例如:

    # 不写用户名默认使用的就是当前主机使用的用户
    scp -r /data 10.0.0.22:/newdata   # 将本机的data目录推到10.0.0.22的newdata中
    
    scp -r 10.0.0.22:/newdata /data   # 将10.0.0.22的newdata拉到本机的/data目录中
    

    2、rsync工具

    rsync是基于ssh协议开发的ssh客户端工具。有三种工作模式:

    选项:

    # -a         保留源文件的属性,但是无法保留acl和selinux属性  -a选项自带递归的功能
    # -v         显示详细的过程
    # --delete   保证两边的数据一样,如果目标文件存在某个源文件没有的文件,就会把目标文件的这个文件删除掉
    # -t --times 保持mtime属性 强烈建议任何时候都加上"-t",否则目标文件mtime会设置为当前系统时间,导致下次更新,检查出mtime不同从而导致增量传输无效
    

    (1)本地模式:作用就类似于cp、mv等命令,实现本地文件系统的拷贝、重命名等作用。

    # 格式: rsync [OPTION] SRC... [DEST]
    
    # 例如:
        [root@LAP1 data]# rsync file1  file111 # 实现文件拷贝功能
        [root@LAP1 data]# ls
        file1   file111 
    

    (2)基于传统的SSH协议模式:类似于scp的作用,实现远程主机拷贝

    # Pull:rsync [OPTION...] [USER@]HOST:SRC... [DEST]
    # Push:rsync [OPTION...] SRC... [USER@]HOST:DEST
    
    # 例如
    	rsync  -av  /etc server1:/tmp    # 复制目录和目录下文件
    	rsync  -av /etc/ server1:/tmp   # 只复制目录下文件 和scp一样
    	rsync -av --delete source_file host:/dest_file  # 跨主机备份
    		# rsync -av --delete /data/  10.0.0.12:/back
    

    (3)作为一个独立服务模式

    rsync作为一个独立的服务运行,

    Pull:
    	# rsync [OPTION...] [USER@]HOST::SRC... [DEST]
    	# rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST] # 协议的形式访问,效果等同于上面
    
    Push:
    	# rsync [OPTION...] SRC... [USER@]HOST::DEST
    	# rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
    

    例如:

    rsync  -av  /etc server1:/tmp    # 复制目录和目录下文件
    rsync  -av /etc/ server1:/tmp   # 只复制目录下文件 和scp一样
    rsync -av --delete source_file host:/dest_file  # 跨主机备份
    

    说明:本地模式和ssh模式是通过本地或远程shell,而独立服务运行模式则是让远程主机上运行rsyncd服务,使其监听在一个端口上,等待客户端的连接。

    四:文件定时同步

    rsync + cron计划任务

    可以实现最快每1分钟同步一次文件。

    说明:rsync使用的是基于传统的SSH协议的工作模式

    例如:

    root@ubuntu1804:~# crontab -e
    # m h  dom mon dow   command
    */10 * * * * /usr/bin/rsync -av --delete /data/  10.0.0.12:/back
    

    五:文件实时同步

    监听文件的相关属性事件,文件发生变化的时候就触发同步,使用inotify或者sersync监听文件的变化。

    1、inotify + rsync

    inotify:系统内核的一个监控服务,属于操作系统内核的一个特有机制,用于监控文件的信息变化。

    inotify管理工具:来自于inotify-tools软件包,软件包里面包含了两个主要的工具inotifywait和inotifywatch。

    • inotifywait: 在被监控的文件或目录上等待特定文件系统事件(open ,close,delete等)发生,常用于实时同步的目录监控(主要使用的就是这个工具)
    • inotifywatch:收集被监控的文件系统使用的统计数据,指文件系统事件发生的次数统计

    rsync:使用的是rsync的第三种工作模式(独立服务模式)。

    例如:
    image

    # 1. 备份服务器启动 rsync 进程,进程启动后监听tcp的873端口。
    
    # 2. 服务器的inotify发现数据发生变化后,就执行:
    		rsync -av /data ehigh@192.168.0.104::/databackup    # 以服务的形式访问
    		# rsync -av /data rsync://192.168.0.104/databackup  # 以协议的形式访问
    

    2、sersync + rsync

    sersync类似于inotify,同样用于监控,是基于inotify基础上开发而来,并且克服了inotify一个操作可能会产生重复的事件,这样可能会触发rsync的多次同步的问题。

    sersync特点:

    • 会对对linux系统文件系统产生的临时文件和重复的文件操作进行过滤,在结合rsync同步的时候,节省了运行时耗和网络资源
    • 配置简单,提供了要给xml配置文件和一个二进制可执行文件
    • 采用多线程模式
    • 自带crontab功能
    # sersync项目地址: https://code.google.com/archive/p/sersync/
    # sersync下载地址: https://code.google.com/archive/p/sersync/downloads
    

    例如:
    image

  • 相关阅读:
    王者荣耀安卓区修改荣耀战区方法 | 最低战力查询(附带视频与安装包)
    通过字符设备驱动的分步实现编写LED驱动,另外实现特备文件和设备的绑定
    Linux创建YUM仓库
    ME60单板加载故障维护经验
    vue插件瀑布流vue-masonry(带源码)
    初识图学习
    ahx文件转mav文件 工具分享及说明
    通过业务加强对访问修饰符 public,private,protected,以及不写(默认)时的区别的应用与理解【Java基础题】
    【C++链表】
    python 给图片添加噪声
  • 原文地址:https://www.cnblogs.com/heyongshen/p/17248118.html