如果一个或多个邮箱已破坏,您可以使用 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.db、quota.db 和 lright.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.db 和 quota.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 选项指定的分区进行操作。 指定用户名称;不使用全路径名。 |
要重建邮箱,请使用 -r 选项。您应在以下情况使用此选项:
访问邮箱时返回以下错误之一:“System I/O 错误”或“邮箱格式无效”。
访问邮箱时导致服务器崩溃。
已经向假脱机目录添加文件或从其中删除文件。
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
要执行高级别一致性检查和邮箱数据库的修复,请使用以下命令:
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 选项:
从存储假脱机区域删除了一个或多个目录,因此也需要删除邮箱数据库条目。
一个或多个目录被恢复到存储假脱机区域,因此也需要添加邮箱数据库条目。
stored -d 选项不能使数据库保持一致。
如果 stored -d 选项不能使数据库保持一致,您应按指示的顺序执行以下步骤:
关闭所有服务器。
删除 store_root/mboxlist 中的所有文件。
重新启动服务器进程。
运行 reconstruct -m 以根据假脱机区域的内容建立新邮箱数据库。
reconstruct 执行操作所花费的时间取决于以下因素:
要执行的操作和选择的选项的种类
磁盘性能
运行 reconstruct -m 时文件夹的数量
运行 reconstruct -r 时邮件的数量
消息存储的总大小
系统运行的其他进程以及系统的繁忙程度
是否存在正在进行的 POP、IMAP、HTTP 或 SMTP 活动
reconstruct -r 选项将执行初始一致性检查;此检查将根据必须重建多少文件夹来改善 reconstruct 的性能。
一个具有大约 2400 个用户、85GB 的消息存储和在服务器上并行的 POP、IMAP 或 SMTP 活动的系统具有如下性能:
reconstruct -m 花费大约 1 小时
reconstruct -r -f 花费大约 18 小时
如果服务器不执行正在进行的 POP、IMAP、HTTP 或 SMTP 活动,reconstruct 操作可能会明显花费较少的时间。