1、使用背景
将本地分布式文件系统(fdfs)迁移到云主机上
操作系统:CentOS release 6.9 (Final)
磁盘目录:
/dev/sda1 3.6T 2.2T 1.3T 65% /data00
/dev/sdb1 3.6T 2.2T 1.3T 65% /data01
/dev/sdd1 3.6T 2.2T 1.3T 65% /data02
/dev/sde1 3.6T 2.2T 1.2T 65% /data03
/dev/sdf1 3.6T 2.2T 1.3T 65% /data04
/dev/sdg1 3.6T 2.2T 1.2T 65% /data05
2、什么是Lsyncd
GitHub地址:https://github.com/axkibe/lsyncd
Lsyncd监视本地目录树事件监视器接口(inotify或fsevents)。它聚合并将事件组合在一起几秒钟,然后生成一个(或多个)进程来同步这些更改。默认情况下,由rsync实现同步。因此,Lsyncd是一种轻量级的实时镜像解决方案,相对容易安装,不需要新的文件系统或块设备,也不会妨碍本地文件系统的性能。
Rsync+ssh是一种高级操作配置,它使用ssh来执行文件和目录直接在目标上移动,而不是在线路上重新传输移动目标。细粒度的定制可以通过配置文件实现。自定义动作configs甚至可以从头编写,从shell脚本到Lua语言编写的代码。这种方法简单,强大,灵活的配置可以被解决。
Lsyncd 2.2.2要求在所有源和目标机器上rsync >= 3.1。
3、Lsyncd安装
$ yum install epel-release -y
# 因为这个rpm包在epel源中,所以需要先安装epel源
$ yum install lsyncd -y
可以参考《centos6 配置yum源》
vim /etc/lsyncd.conf
settings {
logfile ="/var/log/lsyncd/lsyncd.log",
inotifyMode = "CloseWrite",
--根据自己CPU使用情况配置
maxProcesses = 8,
}
-- 远程目录同步
sync {
-- rsync , rsyncssh , direct 三种模式
default.rsyncssh,
-- 同步的源目录,使用绝对路径(注意:目录后跟/是只将当前目录下的子目录进行同步,不加/是将data同步过去)。
source = "/data05/data",
-- 定义目的地址.对应不同的模式有几种写法,这里使用远程同步的地址,rsync中的地址
host = "192.168.4.118",
-- 目录后/,是将文件拷贝到当前目录下
targetdir = "/data05/",
-- 默认 true ,允许同步删除。还有 false, startup, running 值
delete = true,
-- 哪些文件不同步
--exclude = { ".*" },
-- 累计事件,等待rsync同步延时时间,默认15秒,最大累计到1000个不可合并的事件(1000个文件变动),
delay = 15,
-- 默认 true 当init = false ,只同步进程启动以后发生改动事件的文件,原有的目录即使有差异也不会同步
--init = true,
-- rsync 的配置
rsync = {
-- rsync 的二进制处理文件
binary = "/usr/bin/rsync",
-- 归档模式
archive = true,
-- 压缩传输
-- compress = true,
-- 增量
verbose = true,
-- 密码文件
-- password_file = "/etc/rsyncd.pwd",
-- 其他 rsync 的配置参数, 限速(--bwlimit KBPS),使用 rsync -v 查看详细参数
-- _extra = {"--bwlimit=200"}
}
}
这里多个目录配置多个sync 如果本机未安装rsync,需要安装rsync,
4、配置远程主机免密登录
5、启动lsyncd
service lsyncd start
service lsyncd status
6、lsyncd使用中遇到的问题
执行命令:/etc/init.d/lsyncd status
显示:lsyncd 已死,但 pid 文件仍存
于是查看日志文件:cat /var/log/lsyncd/lsyncd.log
日志里显示:
Error: Terminating since out of inotify watches.
Consider increasing /proc/sys/fs/inotify/max_user_watches
其中 max_user_watches 是一个文件,里面有一个数字值,表示每个inotify实例可监听的最大上限数量。
这问题明显就是文件增多,导致无法监控更多的文件,把里面的那个值改大点就可以了
修改方法:vim /etc/sysctl.conf
注意添加的内容:
fs.inotify.max_user_watches=99999999(你想设置的值,此方法修改后重启linux,max_user_watches值不会恢复默认值8192)
修改完立即生效
/sbin/sysctl -p
重新启动 lsyncd :service lsyncd restart
查看 lsyncd 状态 :service lsyncd status
显示:lsyncd (pid 9943) 正在运行...
问题解决。
日志中报错:
Thu Nov 18 10:31:01 2021 Error: Temporary or permanent failure on startup of "/data00/". Terminating since "insist" is not set.
关闭selinux
参考文章: 1、https://linux.cn/article-5849-1.html
3、https://www.cnblogs.com/lvzhenjiang/p/14411173.html
4、https://blog.csdn.net/weixin_34023982/article/details/93990188
评论列表,共 0 条评论
暂无评论