首页 > 其他分享 >第二十九天:网络文件共享服务和数据同步

第二十九天:网络文件共享服务和数据同步

时间:2024-03-02 16:48:23浏览次数:21  
标签:rsync 同步 inotify 文件共享 backup data 第二十九 root centos8

一、存储类型

存储类型分为三种 直连式存储:Direct-Attached Storage,简称 DAS 存储区域网络:Storage Area Network,简称 SAN 网络附加存储:Network-Attached Storage,简称 NAS  1、 DAS 存储 DAS存储是最常见的一种存储方式,尤其是在中小企业应用中。PC中的硬盘或只有一个外部SCSI接口的JBOD都属于DAS架构。DAS是指存储设备直接连接到服务器总线上,存储设备只与一台独立的主机连 接,其他主机不能使用这个存储设备。DAS存储设备与服务器主机之间的连接通道通常采用SCSI连接,DAS存储设备主要是磁盘阵列(RAID: Redundant Arrays of Independent Disks)、磁盘簇(JBOD:Just a Bunch Of Disks)等。 

2、NAS 存储

NAS存储就是存储设备通过标准的网络拓扑结构(比如以太网)添加到一群计算机上。与DAS以及SAN不同,NAS是文件级的存储方法。采用NAS较多的功能是用来进行文件共享。 NAS存储也通常被称为附加存储,顾名思义,就是存储设备通过标准的网络拓扑结构(例如以太网)添加到一群计算机上。NAS是文件级的存储方法,它的重点在于帮助工作组和部门级机构解决迅速增加存储容 量的需求。如今更多的亲们采用NAS较多的功能是用来文档共享、图片共享、电影共享等等,而且随着云计算的发展,一些NAS厂商也推出了云存储功能,大大方便了企业和亲们等个人用户的使用。 NAS产品是真正即插即用的产品。NAS设备一般支持多计算机平台,用户通过网络支持协议可进入相同的文档,因而NAS设备无需改造即可用于混合Unix/Windows NT局域网内,同时NAS的应用非常灵活。 但NAS有一个关键性问题,即备份过程中的带宽消耗。与将备份数据流从LAN中转移出去的存储区域网(SAN)不同,NAS仍使用网络进行备份和恢复。NAS 的一个缺点是它将存储事务由并行SCSI连接转移 到了网络上。这就是说LAN除了必须处理正常的最终用户传输流外,还必须处理包括备份操作的存储磁盘请求。    3、SAN 存储 存储区域网络,这个是通过光纤通道或以太网交换机连接存储阵列和服务器主机,最后成为一个专用的存储网络。SAN经过十多年历史的发展,已经相当成熟,成为业界的事实标准(但各个厂商的光纤交换 技术不完全相同,其服务器和SAN存储有兼容性的要求)。 SAN提供了一种与现有LAN连接的简易方法,并且通过同一物理通道支持广泛使用的SCSI和IP协议。 SAN不受现今主流的、基于SCSI存储结构的布局限制。特别重要的是,随着存储容量的爆炸性增长,SAN允许企业独立地增加它们的存储容量。SAN的结构允许任何服务器连接到任何存储阵列,这样不管 数据置放在那里,服务器都可直接存取所需的数据。因为采用了光纤接口,SAN还具有更高的带宽。 如今的SAN解决方案通常会采取以下两种形式:光纤信道以及iSCSI或者基于IP的SAN,也就是FC SAN和IP SAN。光纤信道是SAN解决方案中大家最熟悉的类型,但是,最近一段时间以来,基于iSCSI的SAN解 决方案开始大量出现在市场上,与光纤通道技术相比较而言,这种技术具有良好的性能,而且价格低廉。 一般通过在主机上安装HBA(Host Bus Adapter 主机总线适配器)卡,再通过光纤连接到光纤交换机,再连接至SAN存储上 SAN的优势: 随着存储容量的增长,SAN允许企业独立地增加他们的存储容量。 SAN允许任何服务器连接到任何存储阵列(好处是:不管数据放在哪里,服务器都可以直接存取所需的数据) 由于使用光纤接口,SAN具有更高的带宽。除了FC连接,SAN连接还有ISCSI(SCSI over IP)以及SAS(Serial Attached SCSI)接口。 光纤接口可以提供10公里那么长那么远的连接长度,非常容易实现物理分离的存储    4、三种存储比较 SAN与NAS的主要区别体现在文件系统所在的位置 

三种存储架构的应用场景

DAS虽然比较古老了,但是还是很适用于那些数据量不大,对磁盘访问速度要求较高的中小企业 NAS多适用于文件服务器,用来存储非结构化数据,虽然受限于以太网的速度,但是部署灵活,成本低 SAN则适用于大型应用或数据库系统,缺点是成本高、较为复杂

二、NFS服务

1、NFS 工作原理

NFS:Network File System 网络文件系统,基于内核的文件系统。Sun 公司开发,通过使用 NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件,基于RPC(Remote Procedure CallProtocol 远程过程调用)实现 RPC采用C/S模式,客户机请求程序调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息到达为止。当一个调用信息到达,服务器获得进程 参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行

NFS优势:节省本地存储空间,将常用的数据,如:/home目录,存放在NFS服务器上且可以通过网络访问,本地终端将可减少自身存储空间的使用  2、NFS软件介绍 软件包:   红帽系统: nfs-utils: 包括服务器和客户端相关工具,CentOS8 最小化安装时默认没有安装   Ubuntu: nfs-server(nfs-kernel-server) 服各器包名,nfs-common 客户端包名 相关软件包:rpcbind(必须),tcp_wrappers Kernel支持:nfs.ko 端口:2049(nfsd), 其它端口由portmap(111)分配 NFS服务主要进程:   rpc.nfsd 最主要的NFS进程,管理客户端是否可登录   rpc.mountd 挂载和卸载NFS文件系统,包括权限管理   rpc.lockd 非必要,管理文件锁,避免同时写出错   rpc.statd 非必要,检查文件一致性,可修复文件 说明:CentOS 6 开始portmap进程由rpcbind代替 日志:/var/lib/nfs/ NFS配置文件:
/etc/exports
/etc/exports.d/*.exports

3、NFS共享配置文件格式

/dir 主机1(opt1,opt2) 主机2(opt1,opt2)...
格式说明: 以#开始的行为注释 主机格式: 
anonymous:表示使用*通配所有客户端
单个主机:ipv4,ipv6,FQDN
IP networks:两种掩码格式均支持
172.18.0.0/255.255.0.0
172.18.0.0/16
wildcards:主机名通配,例如:*.wang.org,IP不可以
netgroups:NIS域的主机组,@group_name
每个条目指定目录导出到的哪些主机,及相关的权限和选项
默认选项:(ro,sync,root_squash,no_all_squash)
ro,rw 只读和读写
async 异步,数据变化后不立即写磁盘,先写入到缓冲区中,过一段时间再写入磁盘,性能高,安全性低
sync(1.0.0后为默认)同步,数据在请求时立即写入共享存储磁盘,性能低,安全性高
root_squash (默认)远程root映射为nfsnobody,UID为65534,CentOS8 为nobody,CentOS 
7以前的版本为nfsnobody
no_root_squash 远程root映射成NFS服务器的root用户
all_squash 所有远程用户(包括root)都变成nfsnobody,CentOS8 为nobody
no_all_squash (默认)保留共享文件的UID和GID
anonuid和anongid 指明匿名用户映射为特定用户UID和组GID,而非nobody,可配合all_squash使
用,注意:目录需要给此用户权限,否则无法访问

4、NFS工具

(1)rpcinfo

rpcinfo 工具可以查看RPC相关信息 查看注册在指定主机的RPC程序
rpcinfo -p hostname
查看RPC注册程序 
rpcinfo -s hostname

(2)exportfs 

exportfs:可用于管理NFS导出的文件系统 常见选项: 
-v #查看本机所有NFS共享
-r #重读配置文件,并共享目录
-a #输出本机所有共享
-au #停止本机所有共享

(3)showmount 

常见用法:

#查看远程主机的NFS共享
showmount -e hostname  

(4)mount.nfs

客户端NFS挂载 NFS相关的挂载选项:man 5 nfs
fg #(默认)前台挂载
bg #后台挂载
hard #(默认)持续请求
soft   #非持续请求
intr   #和hard配合,请求可中断
rsize #和wsize 一次读和写数据最大字节数,rsize=32768
_netdev #无网络服务时不挂载NFS资源
vers    #指定版本,客户端centos8默认4.2 ,centos7默认4.1 centos6默认4.0
提示:基于安全考虑,建议使用 nosuid,_netdev,noexec 挂载选项_ 5、实战案例 (1)目标和环境 将NFS的共享目录,做为远程主机用户的家目录

共三台主机
一台主机 nfs server 
IP:10.0.0.8
另两台当 nfs client
IP:10.0.0.7
IP:10.0.0.6

(2)步骤

#NFS服务器创建用户和相应的家目录,将用户wang的家目录共享
[root@centos8 ~]#yum -y install nfs-utils
[root@centos8 ~]#systemctl enable --now nfs-server
[root@centos8 ~]#mkdir -pv /data/home
[root@centos8 ~]#useradd -d /data/home/wang -u 2000 wang
[root@centos8 ~]#Vim /etc/exports.d/test.exports
/data/home *(rw)

[root@centos8 ~]#exportfs -r 
#在第一台NFS客户端主机10.0.0.7上实现
[root@centos7 ~]#yum -y install nfs-utils
[root@centos7 ~]#useradd -u 2000 wang
[root@centos7 ~]#vim /etc/fstab

#在第二台NFS客户端主机10.0.0.6上实现
[root@centos6 ~]#yum -y install nfs-utils
[root@centos6 ~]#useradd -u 2000 wang
[root@centos6 ~]#vim /etc/fstab
10.0.0.8:/data/home/wang /home/wang   nfs _netdev 0 0
[root@centos6 ~]#su - wang
三、数据的实时同步

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

 1、实时同步技术介绍

实现实时同步的方法   inotify + rsync 方式实现数据同步,需自行编写脚本组合inotify和 rsync 实现   sersync :前金山公司周洋(花椒直播)在 inotify+rsync 软件基础上进行开发的,功能更加强大 工作原理:    要利用监控服务(inotify),监控同步数据服务器目录中信息的变化   发现目录中数据产生变化,就利用rsync服务推送到备份服务器上 inotify: 异步的文件系统事件监控机制,利用事件驱动机制,而无须通过诸如cron等的轮询机制来获取事件,linux内核从2.6.13起支持 inotify,通过inotify可以监控文件系统中添加、删除,修改、移动等各种事件
[root@ubuntu2204 ~]#grep -i inotify /boot/config-5.15.0-52-generic
CONFIG_INOTIFY_USER=y
[root@centos8 ~]#grep -i inotify /boot/config-4.18.0-80.el8.x86_64 
CONFIG_INOTIFY_USER=y
实现inotify软件:   inotify-tools   sersync   lrsyncd inotify+rsync使用方式   inotify 对同步数据目录信息的监控   rsync 完成对数据的同步   利用脚本进行结合  2、实现 inotify (1)内核支持  内核是否支持inotify Linux支持inotify的内核最小版本为 2.6.13,参看man 7 inotify
#列出下面的文件,说明服务器内核支持inotify
[root@centos8 ~]#ls -l /proc/sys/fs/inotify
inotify 内核参数说明:   max_queued_events:inotify 事件队列最大长度,如值太小会出现 Event Queue Overflow 错误 默认值:16384, 生产环境建议调大,比如:327679   max_user_instances:每个用户创建 inotify实例最大值,默认值:128   max_user_watches:可以监视的文件的总数量(inotifywait 单进程),默认值:8192,建议调大 (2) inotify-tools工具 inotify-tools参考文档:https://github.com/rvoicilas/inotify-tools/wiki 安装inotify-tools:基于epel源
[root@data-centos8 ~]# yum -y install inotify-tools
[root@data-ubuntu2004]#apt -y install inotify-tools
inotify-tools包主要工具:   notifywait: 在被监控的文件或目录上等待特定文件系统事件(open ,close,delete等)发生,常用于实时同步的目录监控   inotifywatch:收集被监控的文件系统使用的统计数据,指文件系统事件发生的次数统计 inotifywait 命令 格式: 
inotifywait [ options ] file1 [ file2 ] [ file3 ] [ ... ]

常用选项

inotifywait 的--timefmt 时间格式

参考 man 3 strftime

inotifywait 的 --format 格式定义

inotifywait -e 选项指定的事件类型 

#持续前台监控特定事件
inotifywait -mrq /data/www --timefmt "%F %H:%M:%S" --format "%T %w%f event: 
%;e" -e create,delete,moved_to,moved_from,close_write,attrib

3、 rsync 服务 

rsync 常用于做为 linux系统下的数据镜像备份工具,实现远程同步,支持本地复制,或者与其他SSH、rsync主机同步数据,支持增量备份,配合任务计划,rsync能实现定时或间隔同步,配合inotify或 sersync,可以实现触发式的实时数据同步 官方网站: http://rsync.samba.org/ 服务器软件包:rsync(Ubuntu20.04),rsync-daemon(CentOS 8) 服务文件:/usr/lib/systemd/system/rsyncd.service 配置文件:/etc/rsyncd.conf 端口:873/tcp (1) rsync命令
Usage: rsync [OPTION]... SRC [SRC]... DEST
 or   rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST   --本地文件复制,走SH协议
 or   rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST
 or   rsync [OPTION]... SRC [SRC]... rsync://[USER@]HOST[:PORT]/DEST
 or   rsync [OPTION]... [USER@]HOST:SRC [DEST]      --走SSH协议
 or   rsync [OPTION]... [USER@]HOST::SRC [DEST]
 or   rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]
rsync 有三种工作方式: 1. 本地文件系统上实现同步。命令行语法格式为上述"Local"段的格式。 2. 本地主机使用远程shell和远程主机通信。命令行语法格式为上述"Access via remote shell"段的格式。 3. 本地主机通过网络套接字连接远程主机上的 rsync daemon。命令行语法格式为上述"Access viarsync daemon"段的格式。 前两者的本质是通过本地或远程shell,而第3种方式则是让远程主机上运行rsyncd服务,使其监听在一个端口上,等待客户端的连接。 常见选项: 

 

[root@backup-centos8 ~]#cat /etc/rsyncd.conf
[backup]
path = /data/backup/
read only = no  #指定可读写,默认只读
#指定目录给nobody权限,默认用户以nobody访问此目录
[root@backup-centos8 ~]#setfacl -m u:nobody:rwx /data/backup/
   
#查看rsync服务器的模块名称
[root@data-centos8 ~]#rsync rsync://backup-server
backup
[root@data-centos8 ~]#rsync backup-server::
backup
#访问rsync服务器的共享目录
#推
[root@data-centos8 ~]#rsync /etc/networks   root@backup-server::backup #默认所有
用户都映射为nobody用户
[root@data-centos8 ~]#rsync /etc/issue     wang@backup-server::backup #默认所有
用户都映射为nobody用户
[root@data-centos8 ~]#rsync /etc/passwd   backup-server::backup
[root@data-centos8 ~]#rsync /etc/shells   rsync://root@backup-server/backup
#拉
[root@data-server ~]#rsync backup-server::backup/* /opt
[root@data-server ~]#rsync   rsync://backup-server/backup/* /mnt

(2)以独立服务方式运行rsync并实现验证功能

#服务器端准备目录
[root@backup-centos8 ~]#mkdir -pv /data/backup
#服务器端生成验证文件
[root@backup-centos8 ~]#echo "rsyncuser:123456" > /etc/rsync.pas
[root@backup-centos8 ~]#chmod 600 /etc/rsync.pas
#服务器端启动rsync服务
[root@backup-centos8 ~]#rsync --daemon #可加入/etc/rc.d/rc.local实现开
机启动
[root@backup-centos8 ~]#systemctl start rsyncd   #CentOS 7 以上版本
#客户端配置密码文件
#也可将密码赋值给环境变量RSYNC_PASSWORD变量,但不安全
#export RSYNC_PASSWORD=123456
[root@data-centos8 ~]#echo "123456" > /etc/rsync.pas
[root@data-centos8 ~]#chmod 600 /etc/rsync.pas   #此为必要项,权限必须修改
#查看远程rsync服务器的模块信息
[root@data-server ~]#rsync   rsync://rsync服务器IP
backup         backup dir
#交互式验证查看具体模块内的文件
[root@data-server ~]#rsync   rsync://rsyncuser@rsync服务器IP/backup
Password: 
#非交互式查看共享目录
[root@data-server ~]#rsync --password-file=/etc/rsync.pas 
rsync://rsyncuser@rsync服务器IP/backup
#客户端测试同步数据
[root@data-centos8 ~]#rsync -avz --delete --password-file=/etc/rsync.pas 
/data/www/ rsyncuser@rsync服务器IP::backup 
[root@data-centos8 ~]#rsync -avz --delete   --password-file=/etc/rsync.pas 
rsyncuser@rsync服务器IP::backup   /data/www/

5、 inotify+rsync+shell 脚本实现实时数据同步

按 5.3 搭建好 rsyncd的备份服务器,在数据服务器上创建inotify_rsync.sh脚本 注意: 此脚本执行前先确保两主机初始数据处于同步状态,此脚本实现后续的数据同步 

6、sersync 实现实时数据同步

sersync 是前金山公司周洋在 inotify和rsync 软件基础上进行开发的,功能更加强大 sersync类似于inotify,同样用于监控,但它克服了inotify的缺点. inotify最大的不足是会产生重复事件,或者同一个目录下多个文件的操作会产生多个事件,例如,当监控目录中有5个文件时,删除目录时会产生6个监控事件,从而导致重复调用rsync命令。另外比如:vim文件时,inotify会监控到临时文件的事件,但这些事件相对于rsync来说是不应该被监控的 sersync 优点:   sersync是使用c++编写,而且对linux系统文件系统产生的临时文件和重复的文件操作进行过滤,所以在结合rsync同步的时候,节省了运行时耗和网络资源。因此更快。   sersync配置很简单,其中提供了静态编译好的二进制文件和xml配置文件,直接使用即可   sersync使用多线程进行同步,尤其在同步较大文件时,能够保证多个服务器实时保持同步状态   sersync有出错处理机制,通过失败队列对出错的文件重新同步,如果仍旧失败,则按设定时长对同步失败的文件重新同步   sersync不仅可以实现实时同步,另外还自带crontab功能,只需在xml配置文件中开启,即也可以按要求隔一段时间整体同步一次,而无需再额外配置crontab功能   sersync 可以二次开发 sersync项目地址: https://code.google.com/archive/p/sersync/ sersync下载地址: https://code.google.com/archive/p/sersync/downloads (2)基于rsync daemon 实现 sersync    (3)基于远程shell 实现 sersync   

7、实战案例:实现基于分布式的LAMP架构,并将NFS实时同步到备份服务器

  

标签:rsync,同步,inotify,文件共享,backup,data,第二十九,root,centos8
From: https://www.cnblogs.com/dujy/p/18048004

相关文章

  • C++ 多线程笔记2 线程同步
    C++多线程笔记2线程同步并发(Concurrency)和并行(Parallelism)并发是指在单核CPU上,通过时间片轮转的方式,让多个任务看起来像是同时进行的。实际上,CPU在一个时间段内只会处理一个任务,但是由于切换时间非常快,用户感觉像是多个任务同时在进行。这种方式的优点是可以充分利用CPU资源,......
  • Spectrum 模拟数据采集卡--M2p.59xx-x4 多达8通道同步采集,5M~125MSPS 采样率,16bit
    M2p.59xx-x4-高达125MS/s的16位数字转换器 该卡512MSample板载内存,并支持standard采集、FIFO采集、门采样,ABA等多种采集模式和时间戳。支持Windows/Linux32位和64位的操作系统驱动程序,支持C/C++,LabVIEW(Windows),MATLAB(Windows和Linux),LabWindows/CVI,IVI,.NET,Delphi,VisualBasic,Ja......
  • 使用debezium实现cdc实时数据同步功能记录
    Debezium是一个用于变更数据捕获的开源分布式平台。能够保证应用程序就可以开始响应其他应用程序提交到您数据库的所有插入、更新和删除操作。Debezium持久、快速,因此即使出现问题,您的应用程序也能快速响应,绝不会错过任何事件。Debezium默认使用Kafka来投递数据,在事务日志中记......
  • 马帮ERP与ETLCloud快速同步
    马帮ERP介绍 上海马帮科技有限公司,是一家专注于提供全流程跨境电商ERP管理软件解决方案的企业。聚焦服务于各阶段、各领域的跨境电商从业者,旗下包含专业版ERP、亚马逊专用版ERP、东南亚海外版ERP、WMS、云仓、TMS、跨境分销、SCM等产品模块,为跨境卖家搭建数字化技术基础设施,实......
  • 有哪些手机与电脑可以同步的简单好用笔记软件?
    在我的日常工作、学习和生活中,笔记软件是我不可或缺的助手。无论是会议要点的记录、学习笔记的整理、还是日常生活的备忘录,一款好用笔记软件都能让这些信息井然有序,随时可查。特别是在忙碌的工作日,能够在电脑上整理工作笔记,然后在外出时通过手机随时查看和补充,这种跨设备的便捷性......
  • JUC系列之(七)Lock同步锁
    Lock同步锁用于解决多线程安全问题的方式:同步代码块,synchronized实现,隐式锁同步方法,synchronized实现,隐式锁同步锁Lock:jdk1.5以后注:是一个显示锁,需要通过lock()方法上锁,必须通过unlock()方法进行释放锁(一定要将unlock()放到finally中,保证一定会释放锁),更加灵活示例......
  • 经典同步问题及其伪代码实现
    1、生产者消费者问题信号量版本://定义缓冲区大小bufferSize=10//定义互斥锁和信号量mutex=Semaphore(1)full=Semaphore(0)empty=Semaphore(bufferSize)//定义生产者函数defproducer():whiletrue://生成数据data=generateData()......
  • Linux_时间同步和开机自启动
    时间同步时间同步可分为几部分的内容:统一时钟源,硬件同步,软件同步。时间同步--时空一体--(时间-空间-物体)1.timespaceobject速度加速度角速度位置距离角度2.GPS卫星GPS基站GPS终端空间--太阳大气层地面空间干扰-环境遮蔽--空间隔......
  • 同步和异步
    概述在数字电路中经常有同步\异步的概念,异步输入指的是输入信号和时钟无关,同步指的是输入信号和时钟信号有关实际开发中,经常有同步清0,经常有同步清0,异步清0,同步复位,异步复位等概念异步电路:异步电路主要是组合逻辑电路,其逻辑输出与任何时钟信号都没有关系//时钟信......
  • 北斗同步时钟服务器(NTP网络时间服务器)应用于计算机网络系统
    北斗同步时钟服务器(NTP网络时间服务器)应用于计算机网络系统北斗同步时钟服务器(NTP网络时间服务器)应用于计算机网络系统京准电子科技官微——ahjzsz前言近几年来,随着计算机自动化系统水平的提高,在各大计算机监控系统、微机保护装置、微机故障录波装置以及各类数据管理机得......