NFS O_DIRECT in RHEL 3

看到一份文档说:

NFS O_DIRECT …Available in RHEL 3 Update 2

可是自己明明记得这个 O_DIRECT 在 RHEL 3 就有的阿?!搜索到一篇白皮书 Red Hat Enterprise Linux version 3 Technical Summary,发现 NFS 的 O_DIRECT 支持的确是 RHEL 3 就已经提供的(而不是 Update 2),在另一白皮书上亦有提及:

当应用程序利用 O_DIRECT 标记打开文件时,RHEL 3.0 和 SuSE SLES 8 SP3 内核中的Linux NFS 客户端支持对 NFS 文件的直接 I/O 操作。直接 I/O 这一功能可以使管理自己数据缓存的数据库应用程序获益。启用该功能后,应用程序的读写系统调用会直接转换为 NFS 读写操作。在利用该标记打开文件时,Linux 内核不会对任何读写结果进行缓存,因此,应用程序总是可以准确获取服务器上的内容。

关于这个 O_DIRECT 有一些相关的 Bug 存在。Bug 1:Metalink 2448994:

#  Platform Patch for : Linux Intel
#  Product Version #  : 9.2.0.6
#  Product Patched    : RDBMS
#
#  Bugs fixed by this patch
#  ------------------------
#  2448994: DIRECT IO SUPPORT OVER NFS

Bug 2:poor NFS performance when nfs_uncached_io set due to excessive FSSTAT messages

Platform: RHEL AS 2.1
Version : 2.1
Steps to reproduce:
1. enable NFS O_DIRECT (add "options nfs nfs_uncached_io=1" into
/etc/modules.conf)
2. mount NFS filesystem
3. execute cp/dd command for NFS filesystem
Actual Result
===========
A lot of FSSTAT/FSINFO requests are generated, then cp/dd perfomance
goes down.

Tip:Oracle 10g 内建支持 Direct IO 。但要注意上面提到的 RHEL AS 2.1 的Bug 。

参考信息:


Leave a Reply

Your email address will not be published. Required fields are marked *