Sun Java System Messaging Server 6.3 管理指南

20.14.3 修复邮箱和邮箱数据库

如果一个或多个邮箱已破坏,您可以使用 reconstruct 实用程序重建邮箱或邮箱数据库,并修复所有不一致性。

reconstruct 实用程序将重建一个或多个邮箱或主邮箱文件,并修复所有不一致性。您可以使用此实用程序恢复邮件存储中几乎所有形式的数据破坏。请参见表示需要 reconstruct 的错误消息

表 20–14 列出了 reconstruct 选项。有关详细的语法和使用要求,请参见《Sun Java System Messaging Server 6.3 Administration Reference》中的“reconstruct”

表 20–14 reconstruct 选项

选项 

说明 

-e

在重建之前删除 store.exp 文件。这将消除已删除但未被存储进程清除的邮件的所有内部存储记录。在使用 -i-e 时使用 -f 选项也很有用,因为这些选项仅在文件夹被实际重建的情况下才工作。同样,如果使用 -n 选项(它执行检查而不是重建),则 -i-e 选项将不工作。

如果 reconstruct 无法检测到损坏,运行 reconstruct -e 将不能恢复已删除的邮件。-f 将强制执行重建。

-i

用于在重建之前将 store.idx 文件长度设置为零。在使用 -i-e 时使用 -f 选项也很有用,因为这些选项仅在文件夹被实际重建的情况下才工作。同样,如果使用 -n 选项(它执行检查而不是重建),则 -i-e 选项将不工作。

-f

强制 reconstruct 执行对邮箱的修复。

-l

用于重建 lright.db

-m

用于执行一致性检查以及修复邮箱数据库(如果需要)。此选项将检查在假脱机区域中找到的每个邮箱,酌情添加条目或从邮箱数据库删除条目。无论何时添加条目或从数据库删除条目,实用程序都将消息显示到标准输出文件。特别是它修复 folder.dbquota.dblright.db

-n

仅检查消息存储,而不对邮箱执行修复。-n 选项不能单独使用,除非提供了邮箱名称。未提供邮箱名称时,-n 选项必须与 -r 选项一起使用。-r 选项可以与 -p 选项组合使用。例如,以下任一命令都是有效的:

reconstruct -n user/dulcinea/INBOX

reconstruct -n -r

reconstruct -n -r -p primary

reconstruct -n -r user/dulcinea/

-o

作废,请参见 mboxutil -o

-o -d filename

作废,请参见 mboxutil -o

-p partition

-p 选项和 -m 选项一起使用,用于限制指定分区的重建范围。如果未指定 -p 选项,reconstruct 将默认为对所有分区执行操作。特别是它修复 folder.dbquota.db,而不是 lright.db。这是因为修复 lright.db 需要对消息存储中的每个用户进行 acl 扫描。为每个分区执行此操作效率不高。要修复 lright.db,请运行 reconstruct -l

指定分区名称;不使用全路径名。 

-q

修复配额子系统中的所有不一致性,例如带有错误配额根(其中报告了错误的配额使用情况)的邮箱。其他服务器进程正在运行时,可以运行 -q 选项。

-r [mailbox]

修复并对指定邮箱的分区区域执行一致性检查。-r 选项还修复指定邮箱内的所有子邮箱。如果不使用任何邮箱参数指定 -r,实用程序将修复用户分区目录内的所有邮箱的假脱机区域。

-u user

-u 选项与 -m 选项一起使用,用于限制到指定用户的重建范围。-u 选项必须与 -p 选项一起使用。如果未指定 -u 选项,reconstruct 默认为对所有分区或由 -p 选项指定的分区进行操作。

指定用户名称;不使用全路径名。 

20.14.3.1 重建邮箱

要重建邮箱,请使用 -r 选项。您应在以下情况使用此选项:

reconstruct -r 首先将运行一致性检查。仅在检测到任何问题时报告所有不一致性并重建。因此,reconstruct 实用程序的性能在此版本内得到了改进。

您可以使用以下示例中所述的 reconstruct

要重建属于用户 daphne 的邮箱的假脱机区域,请使用以下命令:

reconstruct -r user/daphne

要重建邮箱数据库中列出的所有邮箱的假脱机区域,请使用以下命令:

reconstruct -r

但是,您必须谨慎使用此选项,因为对于大型消息存储,重建邮箱数据库中列出的所有邮箱的假脱机区域将花费很长时间。(请参见20.14.3.3 reconstruct 性能。)故障恢复的更好的方法可能是将多个磁盘用于存储。如果一个磁盘出现故障,整个存储不会出现故障。如果一个磁盘破坏,只需使用 -p 选项重建一个存储的分区,如下所示:

reconstruct -r -p subpartition

要重建命令行参数中列出的邮箱,只要它们位于 primary 分区中,请使用以下命令:

reconstruct -p primary mbox1 mbox2 mbox3

如果确实需要重建 primary 分区中的所有邮箱,请使用以下命令:

reconstruct -r -p primary

如果要强制 reconstruct 程序重建文件夹,而不执行一致性检查,请使用 -f 选项。例如,以下命令将强制执行用户文件夹 daphne 的重建:

reconstruct -f -r user/daphne

要检查所有邮箱而不对其进行修复,请使用 -n 选项,如下所示:

reconstruct -r -n

20.14.3.2 检查并修复邮箱

要执行高级别一致性检查和邮箱数据库的修复,请使用以下命令:

reconstruct -m

要执行主分区的一致性检查和修复,请使用以下命令:

reconstruct -p primary -m

注 –

运行 reconstruct 时同时使用 -P 和 -m 标记将不能修复 lright.db。这是因为修复 lright.db 需要对消息存储中的每个用户进行 ACL 扫描。为每个分区执行此操作效率不高。要修复 lright.db,请运行 reconstruct -l


要执行名为 john 的单个用户的邮箱的一致性检查和修复,请执行以下命令:

reconstruct -p primary -u john -m

您应在以下情况下使用 -m 选项:

20.14.3.3 reconstruct 性能

reconstruct 执行操作所花费的时间取决于以下因素:

reconstruct -r 选项将执行初始一致性检查;此检查将根据必须重建多少文件夹来改善 reconstruct 的性能。

一个具有大约 2400 个用户、85GB 的消息存储和在服务器上并行的 POP、IMAP 或 SMTP 活动的系统具有如下性能:


注 –

如果服务器不执行正在进行的 POP、IMAP、HTTP 或 SMTP 活动,reconstruct 操作可能会明显花费较少的时间。