NFS 远程实时写入同步

来源:互联网 发布:安云加速器for mac 编辑:程序博客网 时间:2024/06/01 19:41

业务场景是这样的:

为了扩容,使用多台服务器提供同样的服务。每次服务任务都有一个唯一的id号,并在执行服务任务时产生相应的日志。

要求:

1. 每个任务按其唯一的id号生成日志文件。

2. 所有任务的日志文件存放于一台固定的服务器上的固定目录。

3. 日志内容可实时反馈给用户,在前端显示。


日志是用log4j记录的,实际上如果是输出到单个日志文件的话可以配置socket将日志发送到远程日志服务器,但现在的场景是服务器同时可能执行多个任务,这些任务产生的日志要分发到不同的日志文件中,我没有想到什么简洁的处理方案。所以想用nfs将日志服务器日志目录mount到各个服务器。


然而即使在exports里指明了需要sync,仍然面临着日志文件实时同步的问题,往往任务已经结束了,日志文件虽然产生了,但大小还是0,内容要过一会儿才能完全写入nfs。


原来即使指明了sync,nfs默认也是要做一些缓存的。这就是参数ac和noac的区别,即attribute caching的开关。

mount -t nfs -o sync,noac x.x.x.x:/data/  ./data/

挂载的时候指明不需要属性缓存,这样才算是真正的sync了。但是,由此会带来服务性能的损失,缓存内存跟实写硬盘肯定不是一个数量级的。

0 0
原创粉丝点击