我们有三台 VMware ESXi 4 主机,它们通过 OpenFiler NFS 共享为虚拟机提供服务。每台主机都与 NAS 有直接的千兆连接。尽管读取性能非常好,但在 VM 来宾中写入文件却很痛苦。
数据完整性的推荐配置是使用sync
选项导出 NFS 共享并使用data=journal
.
我想将最大完整性配置的行为与最大 I/O 性能配置的行为进行比较。为了配置性能,我将 NFS 共享导出为
/mnt/raided/main/vm 10.0.0.0/255.255.0.0(rw,anonuid=96,anongid=96,secure,root_squash,wdelay,async)
而 ext3 安装有
/dev/raided/main /mnt/raided/main ext3 defaults,usrquota,grpquota,acl,user_xattr,data=writeback,noatime
这些配置选项会给我最佳的 I/O 性能吗?改变文件系统怎么样?XFS 会显着提高性能吗?
除了 NAS 崩溃或电源故障之外,还有什么会导致此配置出现数据完整性问题?
我会认真考虑使用同步。我想起了肮脏的哈利“你觉得幸运吗”的演讲。
NFS v2 和 v3 的设计使得当从服务器向客户端确认写入时,数据在磁盘上。这允许 NFS 是无状态的,因此,服务器可以在每个请求之间重新启动。人们希望不会,但它可能会发生。
这意味着如果客户端在写入时看到 ACK,那么它就不必再关心磁盘上的数据了。
如果你使用异步,那么这不再是真的了。不过会快很多。基本上,如果您使用异步,并且服务器崩溃,您可能应该重新启动客户端,除非您确切知道它们在做什么,因为如果它们期望保持多个文件同步,客户端可能会认为它们是同步的,而事实上, 他们不是。
我的理解是 OpenFiler 是基于 CentOS/RedHat 系列操作系统构建的。Linux 的 nfs 服务器一开始并不是最好的*,而且 CentOS/RedHat 的差于平均水平。
*= 与 NetApp 文件管理器、*bsd 或 Solaris 服务器相比。
(想知道我是否要为此进行改装。)
是的,“同步”绝对是一个巨大的写入性能杀手。除非数据完整性要求很高,否则我永远不会考虑它。如果您没有电池支持的 RAID 和 UPS,请不要打扰,因为无论如何它几乎没有影响。
'ext3 data=journal' 也无济于事。如果您渴望写入性能,请放弃 ext3 并转而使用 xfs,它的速度要快得多,甚至都不好笑。