GlusterFS直接I / O模式

您能否帮我理解GlusterFS中的'direct-io-mode'。

在禁用直接I / O模式的情况下,读取结果会越来越好 – 这是否意味着在禁用模式下它正在从caching写入/读取 – 是系统caching还是GlusterFScaching? 什么是推荐的方法? 我正在使用分布式复制卷的4个节点进行Web服务:

Write: dd if=/dev/zero of=tempfile bs=1M count=1024 conv=fdatasync,notrunc echo 3 > /proc/sys/vm/drop_caches Read: dd if=tempfile of=/dev/null bs=1M count=1024 Read-Read: dd if=tempfile of=/dev/null bs=1M count=1024 Write Read Re-Read 67.5 MB/s 94.9 MB/s 94.6 MB/s direct-io-mode=enabled 65.8 MB/s 230 MB/s 226 MB/s direct-io-mode=disabled 

经过漫长的search,我发现这篇文章。 这不是glusterfs特定的,但它可能有助于更好地理解:简而言之,直接I / O模式禁用由该安装点的操作系统实施的文件缓冲区。

读完之后我得出这个结论:

启用或禁用可能会给您更好的传输速率,具体取决于哪个应用程序正在使用您的glusterfs卷:如果您正在使用自己处理caching的应用程序或数据库,您将有一些提升启用它(由于第二个缓冲区)。 如果您只是在进行文件访问,可能会禁用它,由于本地文件caching导致networking访问较less,因此会提高您的性能。

您可以通过“mount -t glusterfs XXX:/ testvol -o direct-io-mode = enable mountpoint”启用direct-io-mode。如果是这样的话,文件不会被caching在GlusterFS客户端内核中,换句话说,caching是系统caching。但是,文件被caching在GlusterFS服务器内核中。