我共享的存储在SERVER1上挂载(只读),并在SERVER2上挂载(读写)。
SERVER2正在将数据写入文件。 SERVER1正在从该文件读取数据。
文件轮询<100ms,这是很快,但只要说是必要的。
SERVER1正在访问文件系统caching,而不是在文件中显示新的数据。 我可以drop_caches,然后返回该文件中的最新数据,但此过程将删除SERVER1上的所有文件caching,这不是我想要做的,它需要太长的时间来处理。
我已经尝试使用cat命令,以及dd if = / path / to / file -iflag = direct,但是这也不起作用。 它返回一个错误。 该标志似乎不被支持的文件。 任何想法如何直接从磁盘读取文件,或如何禁用文件/目录/挂载点的文件系统caching?
我也会考虑禁用系统范围内的文件caching,但那不是我的第一select,这只是针对一个文件。 谷歌也没有办法做到这一点,因为大多数论坛post都反对这样的行动。
谢谢!
不要这样做。 我再说一遍:不要这样做!
你会遇到丛集性头痛。 如果元数据同时发生变化,则可能导致崩溃和/或无效的数据返回。 这些文件系统不是为了这样工作的。 不要那样使用它们。 这对于ZFS来说尤其糟糕。 如果你真的需要,使用非常基本的东西,没有期刊和高级function(如ext2或者也许vfat)。
要么使用集群文件系统(gfs,ocfs,cxfs),要么使用一些networking文件系统(glusterfs,cifs,nfs)。
顺便说一下。 DirectIO在Linux上的ZFS中未实现 。 它将在基础文件系统(ext {2,3,4},xfs等)上工作。