NFS 远程实时写入同步

业务场景是这样的:

为了扩容,使用多台服务器提供同样的服务。每次服务任务都有一个唯一的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了。但是,由此会带来服务性能的损失,缓存内存跟实写硬盘肯定不是一个数量级的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
03-03 1790

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值