最近现网出现了一个现网问题,有主备两个文件存储系统,其中主文件存储系统占用大小为15T,备用的文件存储系统占用大小为21T,导致备用文件存储系统告警
现网中采用的文件同步系统是rsync+inotify-tools实现的
问题的原因在与同步的脚本有问题,主文件存储系统导致文件被删除后没有同步到备用文件存储系统。本人决定在开发环境进行搭建改系统验证脚本的正确性。
科普一下:
rsync是Linux/unix下一个用于远程文件(目录)同步的一个精巧的小工具程序。
Inotify一种强大的、细粒度的、异步文件系统监控机制,它满足各种各样的文件监控需要,可以监控文件系统的访问属性、读写属性、权限属性、删除创建、移动等操作,也就是可以监控文件发生的一切变化。
以下是搭建环境过程进行总结:
一.服务器端
1.1.检查服务器是否已安装rsync
zypper se rsync
如果未安装,则进行安装
zypper in rsync
安装完rsync后,此时已经可以使用rsync进行同步文件
# /usr/bin/rsync -ahqzt --delete /opt/huawei/disk/liujie root@10.28.0.50:/opt/huawei/disk/liujie/online_recovery.log.20180807
但是此时需要输入密码,如果想要去除密码,可进行把
查看cd /root/.ssh/
添加SSH认证:
#ssh-keygen -t rsa
一阵回车后,会生成id_rsa id_rsa.pub两个文件,id_rsa为私钥,id_rsa.pub为公钥
将公钥上传到备份的服务器上
#scp id_rsa.pub root@10.28.0.50:/root/.ssh/server_1
最后将密钥导入authorized_keys文件
#cat server_1 >> authorized_keys
此时,在进行文件同步,不需要密码
1.2.检查服务器是否已安装inotify-tools
which inotifywait
如果没有安装,出现如图所示
下载inotify-tools-3.14.tar.gz进行安装下载(要看系统版本,本人使用SUSE),上传到单板上,解压
# tar -xvzf inotify-tools-3.14.tar.gz
# cd inotify-tools-3.14/
# ./configure && make && make install ---安装软件
使用which inotifywait检查
当出现上述字样时,inotify-tools已安装完毕
1.3.编写同步脚本
vi online_inotify_rsync.sh
添加执行权限
# chmod +x online_inotify_rsync.sh
执行的过程中如果报缺少动态链接库。如下图所示
查找该动态链接库
/usr/local/lib为该源码包要用的库的路径,引入该环境变量的时候操作系统就会去找该变量下的类库。
# export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
启动脚本(脚本参见附件)
sh online_inotify_rsync.sh &
脚本启动成功后,客户端显示
服务器端显示
二。客户端
2.1.检查服务器是否已安装rync
参见1.1即可
三,现网问题解决
使用现在的脚本在开发环境进行测试发现
这段代码并没有起到删除备分存储系统的文件的作用
修改为
可实现备文件存储系统随着主文件存储系统的变化而变化,可实现文件的增加删除
但是原来备机上多余的文件将不能进行删除,需要进行一次全量同步即可
/usr/bin/rsync -ahqzt --delete /opt/huawei/disk/liujie root@10.28.0.50:/opt/huawei/disk/liujie
环境搞了大半天终于搞定啦
参考文献:
https://www.cnblogs.com/ginvip/p/6430986.html
https://blog.youkuaiyun.com/birdie_l/article/details/78189064