Menu Close

6.4. 使用 GFS2 的性能调整

通常可以更改有问题的应用程序保存其数据的方法,以便获得显著的性能优势。

典型的问题程序示例为电子邮件服务器。通常使用含有每个用户的文件的 spool 目录(mbox),或者为每个用户指定一个目录,其中包含每个邮件的文件(maildir)。当请求到达 IMAP 时,理想的情况是为每个用户赋予一个与特定节点的亲和性。这样一来,他们查看和删除电子邮件信息的请求就会从那个节点的缓存中提供。如果那个节点失败,则可以在不同节点中重启该会话。

当邮件通过 SMTP 方法到达时,那么独立的节点可以再次设置,在默认情况下把特定用户的邮件发送到一个特定的节点。如果默认节点没有启动,则信息可以通过接收节点直接保存到用户的邮件 spool 中。同样,这个设计的目的是在通常情况下只在一个节点中保留缓存的文件集合,但在节点失败时允许直接访问。

这个设置可以最佳地使用 GFS2 的页面缓存,并使用故障对应用程序透明(imapsmtp)。

备份通常是另一个值得关注的地方。如果可能最好直接从节点备份每个节点的工作组件,这样可缓存具体的内节点组。如果您有一个在特定时间点定期运行的备份脚本,且发现会因为 GFS2 中运行的其他应用程序而造成反应延迟时,则通常代表没有有效地使用页面缓存。

如果您可以在运行备份脚本时停止运行应用程序,则这就不是一个问题。相反,如果备份脚本只从一个节点中执行备份,则完成后大部分的文件系统内容会在那个节点中被缓存,这会对以后从其他节点访问有一定的性能损失。通过以下命令在备份完成后丢弃备份节点上的 VFS 页面缓存可将此影响缓解到一定程度:

echo -n 3 >/proc/sys/vm/drop_caches

然而,这并非是一个好的解决方案,因为它要保证每个节点中的工作集合是共享的,或多数操作是集群的只读操作,或大量操作是从一个单一节点进行访问的。