我知道这听起来很奇怪,但我需要一个较慢或caching的文件系统。
我有很多防火墙将syslog的数据写入一对Linux虚拟机,这些虚拟机将这些文件写入“本地”(实际上是FC SAN连接的)ext3格式的磁盘,并将消息转发到我们的Splunk服务器。
问题在于,系统日志服务器正在将这些系统日志消息每秒写入数百甚至数千次,这些消息每秒写回到我们的FC SAN–目前可以处理这个工作负载,但是我们的FWstream量至less会增长一倍在接下来的几个月里,这个数字会达到5000%(真的),这对SAN来说是一个痛苦,我想在问题出现之前解决根本原因。
所以我需要一些帮助,找出一种方法,使得这些写入以某种方式从“物理”磁盘caching或保留,以便虚拟机发出较大但较不频繁的写入 – 无法避免这些写入,但存在没有必要做这么多小的。
我已经看了各种ext3选项,设置noatime和nodiratime,但这并没有造成太大的问题。 很显然,我正在研究其他文件系统,但是以为如果其他人在将来也遇到同样的问题,我会抛出这个问题。
哦,我不能将这些消息转发给Splunk,我们的防火墙团队坚持认为它们是用于诊断的原始格式。
也许commit
EXT3挂载选项会帮助你? 例如, commit=60
会每分钟刷新一次所有的数据和元数据。
强制性警告:这可能会导致数据丢失多达一分钟的数据(如果您通过提交= 60值)。
文件系统:如果您的设备正在使用它们,请禁用写入障碍,并禁用整个板卡上的时间更新。
但是,如果发生故障事件(电源等),则可能还会调整系统日志,从而导致数据丢失。
来自syslog-ng
示例指令(可能不是你正在使用的):
flush_lines()
指定一次刷新到目的地的行数。 Syslog-ng等待这个数量的线路积累并在一个批次中发送它们。
flush_timeout()
指定syslog-ng等待行在其输出缓冲区中累积的时间。 请参阅flush_lines选项以获取更多信息。
目标是在这种情况下是一个磁盘文件。