Tag Archives: Linux

Rsync结合Inotify 实现Centos文件实时同步更新

一. 背景

随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足,首先,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输。如果文件数量达到了百万甚至千万量级,扫描所有文件将是非常耗时的。而且正在发生变化的往往是其中很少的一部分,这是非常低效的方式。其次,rsync不能实时的去监测、同步数据,虽然它可以通过linux守护进程的方式进行触发同步,但是两次触发动作一定会有时间差,这样就导致了服务端和客户端数据可能出现不一致,无法在应用故障时完全的恢复数据。基于以上原因,rsync+inotify组合出现了!

恩,这是抄的别人的一句话,参见http://www.cnblogs.com/davidwang456/p/3684945.html

inotify 介绍

inotify是一种强大的、细粒度的、异步的文件系统事件控制机制。linux内核从2.6.13起,加入了inotify支持,通过inotify可以监控文件系统中添加、删除、修改、移动等各种事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而inotify-tools正是实施监控的软件。
Continue reading

Linux系统删除文件后占用空间为减少的问题

今天看到一台上传服务器空间只剩9%了,为了避免状况,于是清理了一些没用的上传文件,删除之后,df -h 发现磁盘剩余空间并没有增加,而用du -h  查看刚才的目录,发现实际文件使用的空间才46%,100多G的空间,不明去向。

问了一下运维,df -h 和 du -h 两个命令所看到的空间大小怎么会差别这么大。

他让我用lsof命令查看下,lsof |grep delete(已经被删除但是仍然被应用程序占用的文件列表)。 刚刚删除的文件竟然都在列表里出来了,  原来是刚删除的文件,虽然被删除了,但空间并未释放。

google了下原因:

在Linux或者Unix系统中,通过rm或者文件管理器删除文件将会从文件系统的目录结构上解除链接(unlink).然而如果文件是被打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也一直被占用。

重启了下那个进程,然后df -h 发现100多G的空间终于回来了。

lsof工具说明