磁盘空间不足是导致邮件服务器出现问题和故障的最常见原因之一。如果没有用于写入到 MTA 队列或写入到消息存储的空间,邮件服务器将会失败。此外,除非监视并清除日志文件,否则它们会无节制地增长并填满所有磁盘空间。
消息存储分区将随着新邮件传送到邮箱而增长;例如,如果不强制消息存储配额,消息存储可能会超出分区的可用磁盘空间。导致磁盘空间耗尽的另一个原因是 MTA 邮件队列增长得过大。涉及的第三个方面为问题是否因日志文件监视工具和日志文件增长失控而发生。(请注意,有许多日志文件,例如 LDAP、MTA 和邮件访问,其中的每个日志文件都可以存储在不同的磁盘上。)
根据耗尽空间的磁盘或分区不同,所出现的症状会有所不同。MTA 队列会溢出并拒绝 SMTP 连接,邮件可能保留在 ims_master 队列中而没有传送到消息存储,并且日志文件会溢出。
如果消息存储分区填满,则邮件访问守护进程可能会失败,消息存储数据可能会被破坏。消息存储维护实用程序(例如 imexpire 和 reconstruct)可以修复损坏并减少磁盘使用量。但是,这些实用程序需要其他磁盘空间,而且修复填满整个磁盘的分区可能会导致停机。
根据系统配置,您可能需要监视各种磁盘和分区。例如,MTA 队列、消息存储和日志文件可能分别位于不同的磁盘/分区上。其中的每个空间都需要监视,并且监视这些空间的方法也可能不同。
Messaging Server 提供特定的方法,以监视消息存储磁盘空间的使用并防止分区填满所有可用磁盘空间。
您可以执行以下步骤来监视消息存储的磁盘空间使用情况:
设置参数以监视消息存储磁盘空间的使用
达到磁盘使用量阈值时锁定消息存储分区
有关详细信息,请参见以下内容:监视消息存储和监视消息存储分区。
建议消息存储的磁盘使用量不要超过磁盘容量的 75%。您可以通过配置以下警报属性(使用 configutil 实用程序)来监视消息存储的磁盘使用量:
通过设置这些参数,您可以指定系统应监视磁盘空间的频率以及系统应在什么情况下发送警告。例如,如果您希望系统每 600 秒监视磁盘空间一次,请指定以下命令:
configutil -o alarm.diskavail.msgalarmstatinterval -v 600
如果您希望无论何时当可用磁盘空间低于 20% 时都接收到警告,请指定以下命令:
configutil -o alarm.diskavail.msgalarmthreshold -v 20
有关这些参数的更多信息,请参阅表 27–6。
当邮件分区填充超过可用磁盘空间的指定百分比时,您可以停止向消息存储分区传送邮件。设置两个 configutil 参数以启用此功能并指定磁盘使用量阈值,即可完成此设置。
消息存储守护进程可以使用此功能来监视分区磁盘使用量。随着磁盘使用量的增加,存储守护进程将更加频繁地动态检查分区(从每 100 分钟一次到每 1 分钟一次)。
如果磁盘使用量超过指定的阈值,存储守护进程将:
锁定该分区。外来邮件将保存在 MTA 邮件队列中而不传送到消息存储分区中的邮箱。
将邮件记录到默认日志文件中。
向邮寄主管发送电子邮件通知。(您可以通过设置 configutil 参数 alarm.msgalarmnoticercpt 来更改电子邮件的收件人。)
磁盘使用量降至阈值以下时,分区将取消锁定,邮件将再次传送到存储。
configutil 参数如下所示:
local.store.checkdiskusage 启用分区监视功能。
允许的值:yes、no
默认值:yes
local.store.diskusagethreshold 指定磁盘使用量阈值。local.store.diskusagethreshold 的值为 1% 到 99%。
默认值:99
应将磁盘使用量阈值设置为一个足够低的百分比,以便有时间重新进行分区或为本地消息存储指定更多的磁盘空间。
例如,假设分区以每小时 2% 的速率填充磁盘空间,并且需要一个小时的时间为本地消息存储分配其他磁盘空间。在这种情况下,应将磁盘使用量阈值设置为低于 98% 的值。
您需要监视 MTA 队列和日志记录空间的磁盘使用量。
有关管理日志记录空间的信息,请参见第 25 章,管理日志记录。例如,要了解如何监视 mail.log 文件,请参见25.3 管理 MTA 邮件和连接日志。