优化 Zimbra Collaboration Suite 中的邮件存储

在我们的一所 以前的文章致力于在企业中实施 Zimbra Collabortion Suite 时进行基础设施规划,据说该解决方案运行的主要限制是邮件存储中磁盘设备的 I/O 速度。 事实上,当企业的数百名员工同时访问同一邮件存储时,从硬盘驱动器写入和读取信息的通道宽度可能不足以满足服务的响应操作。 如果对于 Zimbra 的小型安装来说这不是一个特殊问题,那么对于大型企业和 SaaS 提供商来说,所有这些都可能导致电子邮件无响应,从而导致员工效率下降以及违规SLA。 这就是为什么在设计和操作大规模 Zimbra 安装时,应特别注意优化邮件存储中硬盘的性能。 让我们看一下两种情况,并尝试找出在每种情况下可以应用哪些优化磁盘存储负载的方法。

优化 Zimbra Collaboration Suite 中的邮件存储

1. 设计大型 Zimbra 安装时的优化

在高负载 Zimbra 安装的设计阶段,管理员必须选择使用哪个存储系统。 为了解决这个问题,您应该知道硬盘上的主要负载来自 Zimbra 协作套件中包含的 MariaDB DBMS、Apache Lucene 搜索引擎和 Blob 存储。 这就是为什么为了在高负载条件下运行这些软件产品,需要使用高速且可靠的设备。

正常情况下,Zimbra既可以安装在硬盘的RAID上,也可以安装在通过NFS协议连接的存储上。 对于非常小的安装,您可以将 Zimbra 安装在常规 SATA 驱动器上。 然而,在大型安装的情况下,所有这些技术都表现出各种缺点,例如记录速度降低或可靠性低,这对于大型企业和 SaaS 提供商来说都是不可接受的。

这就是为什么在大规模 Zimbra 基础设施中最好使用 SAN。 正是这项技术目前能够为存储设备提供最大的吞吐量,同时由于能够连接大量缓存,其使用实际上不会给企业带来任何重大风险。 使用 NVRAM 是个好主意,许多 SAN 都使用 NVRAM 来加快写入速度。 但最好禁用磁盘本身上记录数据的缓存,因为如果发生电源问题,可能会导致媒体无法修复的损坏和数据丢失。

至于选择文件系统,最好的选择是使用标准的Linux Ext3/Ext4。 与文件系统相关的主要细微差别是它应该使用参数安装 -noatime。 该选项将禁用记录上次访问文件的时间的功能,这意味着它将大大减轻读写的负担。 一般来说,为 Zimbra 创建 ext3 或 ext4 文件系统时,应使用以下实用程序参数 mke2fs:

-j — 创建文件系统日志 使用 ext3/ext4 日志创建文件系统。
-L 名称 - 创建一个卷名称,然后在 /etc/fstab 中使用
-O 目录索引 - 使用散列搜索树来加速大型目录中的文件搜索
-m 2 — 在大型文件系统中为根目录保留 2% 的卷
-J尺寸=400 — 创建一本大型杂志
-b 4096 — 确定块大小(以字节为单位)
-i 10240 - 对于消息存储,此设置应对应于平均消息大小。 您应该密切关注该参数,因为它的值以后无法更改。

还建议启用 目录同步 用于 blob 存储、Lucene 搜索元数据存储和 MTA 队列存储。 应该这样做,因为 Zimbra 通常使用该实用程序 FSYNC 确保将包含数据的 blob 写入磁盘。 但是,当 Zimbra 邮件存储或 MTA 在邮件传递期间创建新文件时,有必要将相应文件夹中发生的更改写入磁盘。 这就是为什么,即使文件已经使用写入磁盘 FSYNC,其添加到目录的记录可能没有时间写入磁盘,因此可能会因服务器突然故障而丢失。 感谢使用 目录同步 这些问题是可以避免的。

2. Zimbra 基础设施运行时的优化

经常发生这样的情况:使用 Zimbra 几年后,其用户数量显着增加,而服务的响应速度却一天比一天慢。 摆脱这种情况的方法很明显:您只需向基础架构添加新服务器,以便服务能够像以前一样快速地运行。 同时,并不总是可以立即向基础设施添加新服务器以提高其性能。 IT经理通常需要花费很长时间与会计或安全部门协调新服务器的采购;此外,供应商常常会延迟交付新服务器,甚至交付错误的东西,从而让他们感到失望。

当然,最好是建立一个有储备的 Zimbra 基础设施,以便始终为它的扩展保留储备,而不是依赖于任何人,但是,如果已经犯了错误,IT 经理只能抹平其后果:尽可能多。 例如,IT 经理可以通过暂时禁用在运行期间定期访问硬盘的 Linux 系统服务来实现生产力的小幅提升,从而对 Zimbra 的性能产生负面影响。 因此,您可以暂时禁用:

自动文件系统、网络文件系统 - 远程文件系统发现服务
— 打印服务
xinetd、vsftpd - 您可能不需要的内置 *NIX 服务
端口映射、rpcsvcgssd、rpcgssd、rpcidmapd — 远程过程调用服务,通常与网络文件系统结合使用
dovecot、cyrus-imapd、sendmail、exim、postfix、ldap — Zimbra 协作套件中包含的主要实用程序的副本
定位/更新数据库 - 由于 Zimbra 将每条消息存储在单独的文件中,每天运行 updateb 服务可能会导致问题,因此可以在服务器负载最小的情况下手动执行此操作

禁用这些服务所节省的系统资源不会非常显着,但即使在接近不可抗力的情况下,这也非常有用。 将新服务器添加到 Zimbra 基础设施后,建议重新启用之前禁用的服务。

您还可以通过将 syslog 服务移至单独的服务器来优化 Zimbra 的操作,以便在操作期间它不会加载邮件存储的硬盘驱动器。 几乎所有计算机都适合这些用途,甚至是便宜的单板 Raspberry Pi。

来源: habr.com

添加评论