网络文件共享服务介绍

一:存储架构

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

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

posted on 2023-03-23 16:59  背对背依靠  阅读(1121)  评论(0编辑  收藏  举报