断弦的耳朵 发表于 2023-3-23 19:02:24

网络文件共享服务介绍

一:存储架构

根据存储设备所在的位置分类
https://img2023.cnblogs.com/blog/1519088/202303/1519088-20230323165442276-519293441.png
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使用的就是文件存储。
https://img2023.cnblogs.com/blog/1519088/202303/1519088-20230323165453676-1844352436.png
二:文件共享服务

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之间实现文件共享:
服务端共享出某个目录后,客户端直接挂载进行使用。
https://img2023.cnblogs.com/blog/1519088/202303/1519088-20230323165513740-689920475.png
场景二:Linux和Windows之间实现文件共享:
Linux作为服务端,windows挂载linux的共享目录为本地的一个磁盘,Windows需要开启NFS客户端功能。
https://img2023.cnblogs.com/blog/1519088/202303/1519088-20230323165527210-2094475721.png
https://img2023.cnblogs.com/blog/1519088/202303/1519088-20230323165558609-1317658474.png
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作为客户端实现文件共享
https://img2023.cnblogs.com/blog/1519088/202303/1519088-20230323165611567-714157724.png
通过网络驱动映射器映射为windows本地的一个磁盘。
https://img2023.cnblogs.com/blog/1519088/202303/1519088-20230323165628920-1001360263.png
场景二:windows作为服务端,linux作为客户端实现文件共享
https://img2023.cnblogs.com/blog/1519088/202303/1519088-20230323165635968-226818310.png
samba服务存在的问题:
因为以前永恒之蓝病毒和smb1的漏洞,运营商直接把139和445这两个端口给屏蔽了,即使手动在防火墙打开这两个端口也没法使用。
windows的文件共享又默认使用的是139和445端口,无法更改客户端的端口。
在linux作为服务端,windows作为客户端的时候,因为windows默认端口没法更改,且使用的是UNC路径进行访问。
解决方法:
方法一:配置本地端口映射转发
# https://blog.csdn.net/weixin_42552016/article/details/128421145netsh interface portproxy add v4tov4                 listenport=445 listenaddress=127.0.0.1 connectport=4450 connectaddress=116.116.132.151https://img2023.cnblogs.com/blog/1519088/202303/1519088-20230323165658355-1705785067.png
方法二:使用端口转发驱动
# Multi Port Forwarder驱动        # https://tubecast.webrox.fr/landrive/portmapping.html        # https://www.verigio.com/products/multi-port-forwarder/defaulthttps://img2023.cnblogs.com/blog/1519088/202303/1519088-20230323165705215-1872175188.png
4、使用场景

samba:用于在Windows和Linux系统之间进行文件共享。
NFS:支持多种操作系统,一般使用在linux和linux之间的文件共享,也可以实现windows和linux之间的文件共享。
FTP:FTP不像Samba和NFS一样提供文件系统级别的共享,它只是提供了一种简单的方式来传输文件,客户端通过FTP客户端软件连接到FTP服务器,然后可以上传和下载文件。FTP一般使用在将文件从一个计算机上传到另一个计算机。
三:跨主机拷贝文件

1、SCP工具

scp是基于ssh协议开发的ssh客户端工具。
# 使用格式                  #   Pull:         scp/source_file   remote_host/dest_file   #   Push:         scpremote_host/dest_file/source_file# 选项        -r:复制文件夹        -P PORT 指明remote host的监听的端口# 说明 复制目录文件后面有无斜线的区别        # 有斜线:复制文件夹里面的内容。 例如:scp /data/ 10.0.0.22:~/    表示复制data中的文件        # 无斜线:复制整个文件夹                例如:scp /data10.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 SRC... # 例如:    # rsync file1file111 # 实现文件拷贝功能    # ls    file1   file111 (2)基于传统的SSH协议模式:类似于scp的作用,实现远程主机拷贝
# Pull:rsync HOST:SRC... # Push:rsync SRC... 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 HOST::SRC...         # rsync rsync://HOST[:PORT]/SRC... # 协议的形式访问,效果等同于上面Push:        # rsync SRC... HOST::DEST        # rsync SRC... rsync://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 hdom 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的第三种工作模式(独立服务模式)。
例如:
https://img2023.cnblogs.com/blog/1519088/202303/1519088-20230323165731299-255140680.png
# 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例如:
https://img2023.cnblogs.com/blog/1519088/202303/1519088-20230323165740787-917142524.png

来源:https://www.cnblogs.com/heyongshen/p/17248118.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 网络文件共享服务介绍