Windows 管理

Windows Server 2008 中的 Active Directory 备份和还原

Gil Kirkpatrick

 

概览:

  • NTBACKUP 与 Windows Server Backup
  • 备份工具和选项
  • 恢复工具和选项
  • 可靠 Active Directory 备份策略的关键

大家都知道 Active Directory 域服务 (ADDS) 是 Windows 基础结构中针对关键任务的组件。如果 Active Directory 出现故障,网络实际就崩溃了。因此,Active Directory 的备份和恢复计划是

安全性、业务连续性和法规遵从性的基础。

Windows Server® 2008 为 Active Directory® 带来了许多新功能,其中对备份和恢复计划具有重大影响的两个功能是:新的 Windows Server Backup 实用工具,以及获取和使用 Active Directory 的“卷影复制服务”快照的能力。在本文中,我将介绍这些增强功能所带来的变化,以及如何利用这些变化来简化 Active Directory 备份活动。

NTBACKUP 与 Windows Server Backup

组策略设置

Windows Server Backup 提供了若干组策略设置,使您可以在一定程度上控制备份在您服务器上的工作方式。使用这些备份策略,人们通过未经授权的备份访问未授权数据的风险会降低。选项包括:
仅允许系统备份 如果设置了此选项,则 Windows Server Backup 只能备份关键的系统卷。它无法执行卷备份。
不允许本地附加的存储作为备份目标 如启用此设置,它不允许备份至本地附加的驱动器。只能备份至网络共享。
不允许网络作为备份目标 此设置不允许备份至任何网络共享。
不允许光学媒体作为备份目标 如设置了此选项,Windows Server Backup 无法备份至任何光学媒体,例如可记录的 DVD 驱动器。
不允许一次性运行备份 此设置不允许 Windows Server Backup 运行非计划的特定备份。仅通过 Windows Server Backup MMC 管理单元计划的备份可以运行。

您所了解和喜爱的 NTBACKUP 自 Windows NT® 3.5 之后已消失。代替它的是 Windows Server Backup。这一新工具不是仅仅对 NTBACKUP 的改进;它是一个全新的备份技术,使您必须重新思考备份系统的方法。

尽管 Windows® Server 备份是 Windows Server 2008 唯一的现成备份解决方案,但它并不是替换 NTBACKUP 的另一种功能。最大的差异在于:Windows Server Backup 是磁盘到磁盘的备份解决方案;它不支持备份至磁带。您可以在直接附加的磁盘卷、网络共享,甚至是外部 USB 硬盘和可记录的多卷 DVD 上创建备份映像。但您不能备份至磁带。这里明确一点,您仍可以在 Windows Server 2008 服务器上挂接磁带驱动器,并将 Windows Server Backup 生成的备份映像复制到磁带驱动器——但您必须使用其他方软件才能完成此操作。

NTBACKUP 是基于文件的备份和还原工具,而 Windows Server Backup 是以卷和块为基本对象。Windows Server Backup 将其备份源处理为卷集,每个卷均作为一个磁盘块集合。与通过文件系统备份文件相比,这样效率要提高很多。以块为基础处理备份还使 Windows Server Backup 能利用“卷影复制服务”快照来执行块级别增量备份,以及在目标卷上创建快照以简化多个备份的使用(并减少其所占用的空间)。

即使您正在执行的是完整备份,Windows Server Backup 也能在目标磁盘上提供很大的空间效率。例如,您可对同一卷执行多个完整备份。由于 Windows Server Backup 在存储备份映像的目标磁盘上使用“卷影复制服务”快照,因此,快照将仅存储已发生更改的块。这极大地减少了多个完整备份所占用的空间。这样即不必通过执行多个还原操作恢复增量备份。尽管快照仅存储每个备份的变化量,但“卷影复制服务”会确保每个备份的完整性。

不过,请注意,您只有在备份至本地硬盘时才能从目标上的“卷影复制服务”快照中受益——Windows Server Backup 无法对存储在 DVD 或网络共享上的备份执行“卷影复制服务”操作。

Windows Server 备份以 Microsoft® 虚拟硬盘 (VHD) 格式存储备份映像,这会产生额外的益处。您可以实际获取备份映像,在 Microsoft Virtual Server 2005 下运行的虚拟机中将其安装成一个卷。您只需在虚拟机中安装 VHD 并浏览特定文件即可,不必通过测试还原磁带来查看哪个磁带上具有文件。(特别注意:您不能从备份映像中启动虚拟机。由于备份的硬件配置与虚拟机的配置不搭配,因此,无法将 Windows Server 备份用作物理到虚拟的迁移工具。)

Windows Server Backup 的卷和块定向有一个缺点。因为此新工具将备份源视为一组卷和块,所以它不允许您仅备份选定文件。必须备份整个卷。此外,默认情况下,无法将备份映像存储在所备份的一个卷上(有一些方法可就此进行配置;请参阅 support.microsoft.com/kb/944530)。我将在本文稍后的部分讨论系统状态备份的深刻含义。

安装 Windows Server Backup

Windows Server Backup 是 Windows Server 2008 中的一项“功能”,默认情况下并不安装。在使用 Windows Server Backup 执行备份之前,必须使用“服务器管理器”或 SERVERMANAGERCMD 命令行实用工具安装该功能:

C:\> servermanagercmd -install Backup-Features

Windows Server Backup 包括两个子功能,Windows Server Backup 和 Command-line Tool。请注意,Command-line Tool 是指一组 Windows PowerShellTM cmdlet——而非 WBADMIN .EXE 命令行工具。因此,如果您选择安装这两个子功能,则必须安装 Windows PowerShell 功能。

安装 Windows Server Backup 后,您可以在“服务器管理器”的“存储”节点下以及“管理工具”菜单上找到 Microsoft 管理控制台 (MMC) 管理单元。如果您是在 Windows Server 2008 Server Core 安装中安装 Windows Server Backup,请使用 OCSETUP 命令(请注意,OCSETUP 命令区分大小写,这一点非常重要):

C:\> ocsetup WindowsServerBackup

可从 go.microsoft.com/fwlink/?LinkId=113146 获得安装过程的完整说明。

请注意,Windows Server Backup 不能还原使用 NTBACKUP 创建的映像。为应对这种极特殊的情况,Microsoft 已为 Windows Server 2008 提供了可下载的 NTBACKUP(请参阅 go.microsoft.com/fwlink/?LinkId=113147)。

Windows Server Backup 组件

组建 Windows Server Backup 应用程序的方式反映出了产生的重大变化。新的备份解决方案由四个组件组成:

  • MMC 用户界面 (WBADMIN.MCS)
  • 命令行界面

(WBADMIN.EXE)

  • 备份服务 (WBENGINE.EXE)
  • Windows PowerShell cmdlet 集

将该应用程序拆分为客户端和服务有若干好处,最重要的是提高了可靠性。无论是从 MMC 客户端还是从命令行界面启动备份,均由 WBENGINE 服务完成主要工作。客户端程序只报告备份的状态。因此,终止客户端不会导致备份中途停止。客户端将停止,而服务将继续完成。当然,如果您确实想停止备份,也可以实现,但必须明确执行相应操作。

此拆分的体系结构的另一好处是,您可以使用客户端管理远程计算机上的备份。如果必须备份 Windows Server 2008 Core 计算机,这一长处尤其值得称道。

Windows Server Backup 支持使用 Windows 恢复环境(即 WinRE)进行裸机还原,Windows Server 2008 安装介质上就有 WinRE。WinRE 简化了从头开始恢复服务器的过程。我将在本文后面的内容中讨论如何执行裸机还原。在此有必要指出,Windows Server Backup 支持几个用于管理备份的“组策略”设置——“组策略设置”侧栏中有这些设置的概述。

卷影复制服务

Windows Server Backup 以三种不同的方式使用“卷影复制服务”。当您在 Windows Server 2008 上启动完整备份时,应用程序首先制作一个所有源卷的卷影副本。执行此操作会为备份软件提供一致的文件系统视图供其使用。(这与 NTBACKUP 所执行的操作类似。)Windows Server Backup 然后逐个将这些块从源卷复制到备份目标,在此过程中会为每个已备份的卷构建 VHD 映像。

除非另行指定,否则 Windows Server Backup 还会创建源卷的快照,以便“卷影复制服务”跟踪卷上所有发生更改的块。这使得 Windows Server Backup 可以创建块级别增量备份,它们仅需要读取源卷中发生更改的块。Windows Server Backup 可以只读取和写入发生更改的块,而不会因为文件有一点更改便读取和写入整个文件。

这使得增量备份效率很高,但代价是源卷的写入操作需要额外的磁盘 I/O。如果您要备份特别繁忙或性能关键的卷,则应禁用源卷上的“卷影复制服务”快照,方法是选择“Configure Performance Settings”(配置性能设置)链接,然后禁用此卷上的增量备份(如图 1 所示)。

Figure 1 Disable incremental backups on busy volumes

Figure 1** Disable incremental backups on busy volumes **(单击该图像获得较大视图)

当备份完成时,Windows Server Backup 会获取目标卷的快照(假设您是备份到本地连接的硬盘上)。在下一备份期间,会覆盖目标 VHD 文件。但是,由于“卷影复制服务”一直保持目标卷的卷影副本,因此实际上,与每个完整备份相对应的各个 VHD 文件都会有多个版本。您实质上花费的是一个完整备份和更改块的成本,而获得的是多个完整备份。

备份至网络共享

备份至网络共享就象备份至本地卷一样轻松。两者的主要差异是,它不能创建远程卷的“卷影复制服务”快照。因此,每个完整备份都将覆盖前一完整备份,从而在网络共享上仅为您留下每个服务器的最新完整备份映像。由于此限制,您不能使用 Windows Server Backup 计划程序来计划到网络共享的备份。不过,您可以使用 Windows Task Scheduler 来运行 WBADMIN 命令行程序,执行到网络共享的完整备份。如果您选择以此方式来计划到网络共享的完整备份,请更改每个备份的目标文件夹以避免覆盖先前备份。

备份至可记录的 DVD

Windows Server Backup 还支持备份至光学媒体,例如可写入的 DVD。您还可以创建包含多个卷的备份集。Windows Server Backup 始终将备份压缩至 DVD,这意味着,您从 DVD 仅可以还原完整系统或完整卷。Windows Server Backup 不支持使用 DVD 执行系统状态或文件级别的备份和还原。而且,您不能对备份至 DVD 进行计划。

系统状态备份和还原

系统状态备份仅包括选定的文件和某些应用程序数据库(而不是整个卷),它虽简单但通常却至关重要。但是,在 Windows Server 2008 的早期版本中,并不支持系统状态备份和还原。备份工具只备份关键的系统卷(即,恢复和重新启动操作系统及关键应用程序所必需的任何卷)。这些关键系统卷等同于面向卷的系统状态备份。

应客户反馈的要求,Microsoft 向 Windows Server Backup 添加了系统状态备份和还原功能。该应用程序会创建多个 VHD 文件,每个托管系统状态数据的卷一个 VHD 文件,但它仅将必要的文件和数据库复制到 VHD 中。另一个问题是,当您执行系统状态备份时,Windows Server Backup 并不创建目标卷的快照,这一点与正常的备份过程不同。而是每个系统状态备份生成一个全新的 VHD 文件集,这意味着没有基于快照的卷备份所具备的空间效率。

您仅可以使用 WBADMIN.EXE 命令行程序执行系统状态备份——MMC 管理单元不提供此选项。要执行系统状态备份,请使用以下命令:

C:\> wbadmin start systemstatebackup
–backuptarget:e:

WBADMIN 然后会将关键系统文件和应用程序数据库备份至目标卷(在为系统状态备份而保留的文件夹中)。系统状态备份在具有默认目录信息树 (DIT) 的 32 位 Windows Server 2008 域控制器 (DC) 上运行时要稍大于 6GB——这比在 Windows Server 2003 上大 5GB,部分原因是 Windows Server Backup 捕获核心操作系统文件,而 NTBACKUP 并不捕获此类文件。

如您所料,备份系统状态所需的时间也会更长。当然,这些初始数字是以操作系统的预发布版本为基础的。您必须在自己的环境下对此进行测试,如果您要将域控制器移至 Windows Server 2008,您需要针对更大的系统状态备份(以及更长的备份时间)做出计划。

使用 MMC 备份服务器

运行 Windows Server Backup MMC(请参见图 2)时,您可以选择设置备份计划或立即运行特定备份。在本例中,我选择“Backup once”(立即备份)以立即执行备份。

Figure 2 Windows Server Backup MMC

Figure 2** Windows Server Backup MMC **(单击该图像获得较大视图)

如您在图 3 中所见,我可以选择是备份服务器上的所有卷,还是只备份所选的特定卷。如果选择“Full server”(完整服务器),则 Windows Server Backup 将备份所有装入的卷,但我无法备份至装入的硬盘驱动器——只能备份至可记录的 DVD 或网络共享。

Figure 3 Using the backup configuration dialog to specify all or select volumes

Figure 3** Using the backup configuration dialog to specify all or select volumes **(单击该图像获得较大视图)

在本示例中,我希望备份至本地硬盘驱动器,因此,我选择“Custom”(自定义)选项。然后会显示一个对话框,让我选择要备份的卷(请参见图 4)。默认情况下,Windows Server Backup 会选中“Enable system recovery”(启用系统恢复)框,这会让 Windows Server Backup 选择引导卷、操作系统卷,以及具有关键系统文件和应用程序数据库的任何其他卷。在 DC 上,这包括托管 SYSVOL、Active Directory DIT 以及 Active Directory 日志的卷。这等同于系统状态备份,但它备份所有关键卷,而不仅仅是这些卷上的关键文件。实际上,我甚至可以从系统恢复备份集执行系统状态恢复。

Figure 4 Selecting specific volumes to back up

Figure 4** Selecting specific volumes to back up **(单击该图像获得较大视图)

在选择目标类型(本地驱动器或网络共享)并指定目标后,Windows Server Backup 会提示我选择“VSS copy”(VSS 副本)备份或“VSS full”(VSS 完整)备份。这个术语有点令人困惑,因为这两个选项均将完整地备份选定卷。区别在于备份源文件后 Windows Server Backup 处理它们的方式。如果您选择副本选项,则 Windows Server Backup 将原样保留备份的文件。如果您选择完整选项,Windows Server Backup 将随后重置存档。

从命令行备份服务器

如果您要编写备份过程的脚本,或在 Server Core 安装上备份服务器,则可以使用 WBADMIN.EXE 命令行程序。WBADMIN 提供一个完整的选项集,这些选项实质上执行与 MMC 管理单元相同的功能,包括管理备份计划。

假设我想启动 WBENGINE 服务,它会随后执行备份。我仅需输入以下命令即可:

C:\> wbadmin start backup –include:c:,d:
–backuptarget:e:

若要备份所有关键的系统卷,可以输入以下命令:

C:\> wbadmin start backup -allcritical
–backuptarget:e:

启动备份后,WBADMIN 继续运行并显示备份进度。如果终止 WBADMIN,则备份将继续在后台执行。然后可以使用以下命令重新将 WBADMIN 连接至正在运行的备份:

C:\> wbadmin get status

如果希望终止正在运行的备份,只需输入以下内容:

C:\> wbadmin stop job

使用 MMC 计划备份

与 Windows Server Backup 集成的备份计划程序实际上是为专门完成一项任务:简化每日对本地磁盘卷做完整系统备份的计划。您可以使用内置的计划程序自动在多个目标卷中轮换备份。如果您具有便于移动的硬盘驱动器(或者正在使用通过 USB 连接的硬盘驱动器),则可以使用此功能来建立转换方案,在此方案中,您取下备份磁盘并将其存储在外部,然后将最早的备份磁盘返回到服务器以供下一个计划的备份使用。

Windows Server Backup 计划程序仅让您计划始终每日发生的备份。也就是说,没有单独针对各个星期一、星期三和星期五计划备份的方法。因此,如果您不希望每日都运行计划的备份,就必须直接使用 Windows Task Scheduler。

当建立到本地磁盘的计划备份时,Windows Server Backup 负责磁盘,即格式化磁盘、建立特定的文件夹结构,并使 Windows 资源管理器中不显示目标磁盘。目标磁盘必须为基本卷——Windows Server Backup 无法备份至被配置为动态卷的磁盘。

通过 MMC 管理单元计划备份十分容易。在此示例中,我首先选择“Backup Schedule”(备份计划)链接、指定备份类型以及要备份的卷,然后 Windows Server Backup 即会显示“Specify backup time”(指定备份时间)对话框(请参见图 5)。

Figure 5 Specifying when daily backups should occur

Figure 5** Specifying when daily backups should occur **(单击该图像获得较大视图)

选择希望备份执行的时间后,我可以选择备份的一个或多个目标卷。在本例中,我选择备份卷 E:,如图 6 所示。Windows Server Backup 会尽量为您选择一个合适的目标卷,但是,如果您要备份的目标磁盘未出现,则可以使用“Show All Available Disks”(显示所有可用磁盘)按钮来查看所有连接的磁盘设备。在显示两个“confirm”(确认)对话框之后,Windows Server Backup 会格式化目标卷并使用 Windows Task Scheduler 来计划备份任务。

Figure 6 Specifying the destination disk for a scheduled backup

Figure 6** Specifying the destination disk for a scheduled backup **(单击该图像获得较大视图)

每次计划的备份完成时,Windows Server Backup 都会获取目标卷的快照。而且每隔七天,它会创建一个新的基本映像。活动则记录在 Microsoft/Backup/Operational 日志中。您可以在那里检查备份是否成功完成,也可以将某一任务(例如发送电子邮件消息)与成功和失败事件相关联,以便始终了解计划备份的状态。

从命令行计划备份

如果您正在计划 Server Core 安装上的备份,或者只是想编写该过程的脚本,则可以使用 WBADMIN 命令行来管理备份计划。要添加计划的备份,可使用 WBADMIN ENABLE BACKUP 命令指定目标、源以及计划的时间,如下所示:

C:\> wbadmin enable backup –addtarget:e:
-include:c:,d: -schedule:06:00,12:00,18:00

此命令会每天将 C: 和D:驱动器备份至 E:驱动器三次,时间分别为早上 6:00、中午 12:00 和下午 6:00。(请注意,所有时间均使用 24 小时制指定)。要备份所有关键的系统卷(从其可执行裸机还原或系统状态还原),请使用 –allcritical 替换 –include 开关。

也可以使用 WBADMIN 禁用所有计划的备份,如下所示:

C:\> wbadmin disable backup

此命令将删除所有由 Windows Server Backup 计划程序创建的计划备份工作,并释放所有备份目标卷以供正常使用。请注意,您始终可以使用 WBADMIN MMC 管理单元远程管理 Server Core 服务器的备份和还原活动。

域控制器的裸机恢复

备份和恢复最激动人心的改进之一是 WinRE 并入安装过程的方式。从安装媒体中启动 Windows Server 2008 时,您可以选择“Repair your computer”(修复计算机)选项,如图 7 所示。由于这一选项极易被错过,所以在此专门做个提醒。

Figure 7 The Repair your computer option is available on the installation screen

Figure 7** The Repair your computer option is available on the installation screen **(单击该图像获得较大视图)

在安装屏幕上选择修复选项后,Windows 会让我选择一个恢复选项,如图 8 所示。在本例中,我选择“Windows Complete PC Restore”(Windows 完整 PC 还原),这会调用 Windows 恢复环境。

Figure 8 Specifying system recovery options

Figure 8** Specifying system recovery options **(单击该图像获得较大视图)

在选择要修复的操作系统(通常只有一个选择)后,WinRE 允许您选择要从其进行还原的备份。默认情况下,WinRE 选择最近的完整系统备份,但您可以指定存储在本地磁盘上的其他备份,或在网络中搜索存储在其他服务器文件共享中的备份。

在我的示例中,我选择最近的完整系统备份。下一对话框(如图 9 所示)让我先格式化所有磁盘并重新分区,然后再进行还原。如果您正从某种磁盘故障所导致的问题中恢复,或者已替换了服务器中的一个或多个磁盘驱动器,则这是一个合适的选项。

Figure 9 You can easily format and repartition disks before they're restored

Figure 9** You can easily format and repartition disks before they're restored **(单击该图像获得较大视图)

在两个确认对话框之后,WinRE 启动还原进程,而且服务器重新启动。此方法极为适合在服务器上执行裸机恢复。

域控制器的系统状态恢复

如果您需要从某种与 Active Directory 相关的问题中恢复(例如从备份中恢复删除的 OU),则应将 Active Directory 域服务 (ADDS) 数据库还原至早期状态,而不是还原整个系统。尽管您可以像在 Windows Server 2008 中的服务那样停止 ADDS,但仍需将服务器引导到目录服务还原模式 (DSRM) 中,以对域控制器执行系统状态还原。

更改引导选项以将 Windows Server 2008 引导到 DSRM 中并不像以前那样容易。整个 Windows 引导环境经过了重新设计,以支持新的可扩展固件接口 (EFI),而老式的 boot.ini 文件不再存在。Windows Server 2008 代之以使用引导配置数据 (BCD) 来管理引导过程。

管理 BCD 的最简单方法是使用 BCDEDIT 命令行程序。说明所有 BCDEDIT 命令和选项需要一整篇文章,我在此处只向您显示某些有用的示例。

要将 Windows Server 2008 DC 重新引导到 DSRM 中,请使用以下命令:

C:\> bcdedit /set safeboot dsrepair

这将为默认的引导加载程序项设置安全引导选项。在全新的 Windows Server 2008 安装中,只有一个引导加载程序项 WINLOAD.EXE。要删除安全引导选项并重新引导到正常模式中,请使用以下命令:

C:\> bcdedit /deletevalue safeboot

您可在 DC 上配置两个引导加载程序项——一个用于正常引导,一个用于 DSRM 引导,这样更为便利。您也就可以使用“System Settings”(系统设置)下提供的“Startup and Recovery”(启动和恢复)设置对话框来更改引导选项。要添加新的引导加载程序项,请使用以下命令:

C:\> bcdedit /copy {default}
/d "Directory Service Repair Mode"

此操作将通过复制默认的引导加载程序项创建一个新的引导加载程序项。BCDEDIT 将显示与下面类似的内容:

The entry was successfully copied to
{c50d4710-a1f0-11dc-9580-0003ff402ae9}.

GUID 会识别新项。然后,使用以下命令为 BCD 中新的引导加载程序项设置安全引导选项:

C:\> bcdedit /set {<GUID for new entry>}
safeboot dsrepair

您现在可以使用“Startup and Recovery”(启动和恢复)设置(如图 10 所示)从正常引导模式切换到 DSRM 引导模式。

Figure 10 Disable incremental backups on busy volumes

Figure 10** Disable incremental backups on busy volumes **

在使用 WBADMIN 启动系统状态还原之前,必须确定要从其进行还原的备份。WBADMIN 可以从完整系统备份、只包含关键系统卷的备份或系统状态备份执行系统状态还原。在上述任一情况下,必须指定要使用的备份版本。确定可用备份版本的最简单方法是使用下面的 WBADMIN 命令:

C:\> wbadmin get versions

WBADMIN 然后将以与图 11 中所示信息类似的形式显示备份版本。请注意,每个备份都有一个备份时间、备份目标、版本标识符(顺便说一下,它是备份以“通用平均时”启动的时间和日期)以及一个可支持恢复操作的类型列表。

Figure 11 确定恢复可用的备份

wbadmin 1.0 - Backup command-line tool
(C) Copyright 2004 Microsoft Corp.
Backup time: 11/30/2007 3:47 PM
Backup target: Fixed Disk labeled E:
Version identifier: 11/30/2007-22:47
Can Recover: Application(s), System State
Backup time: 12/1/2007 10:46 PM
Backup target: Fixed Disk labeled Backup(E:)
Version identifier: 12/02/2007-05:46
Can Recover: Volume(s), File(s), Application(s), Bare Metal Recovery, System State
Backup time: 12/2/2007 5:58 PM
Backup target: Fixed Disk labeled Backup(E:)
Version identifier: 12/03/2007-00:58
Can Recover: Volume(s), File(s), Application(s), Bare Metal Recovery, System State
Backup time: 12/3/2007 11:25 AM
Backup target: Fixed Disk labeled E:
Version identifier: 12/03/2007-18:25
Can Recover: Application(s), System State

在本例中,我选择最近的备份,并使用以下 WBADMIN 命令启动系统状态还原:

C:\> wbadmin start systemstaterecovery
–version:12/03/2007-18:25

这将执行非权威还原。如果您希望执行 SYSVOL 的权威还原,只需将还原的 SYSVOL 副本标记为权威即可,方法是将 authsysvol 选项添加至 WBADMIN 命令。有关此过程的详细信息,请参阅 go.microsoft.com/fwlink/?LinkId=113152

制作 Active Directory 快照

在 Active Directory 的备份方面,最激动人心的变化之一就是根本不再与 Windows Server Backup 发生关联。在 Windows Server 2008 中,Active Directory 能够提供“卷影复制服务”快照,这可充分利用这一功能。这些快照是正在运行的 Active Directory 服务的极轻型时间点备份。更为可喜的是,它们仅需几秒钟即可创建!随后,您可以装入这些快照并使用基于 LDAP 的正常实用工具(例如 LDP 工具)访问它们。

使用如下所示的 NTDSUTIL 命令制作 ADDS 或 Active Directory 轻型目录服务 (ADLDS) 的快照:

ntdsutil: snapshot
snapshot: activate instance ntds
Active instance set to "ntds".
snapshot: create
Creating snapshot...
Snapshot set {42c44414-c099-4f1e-8bd8-4453ef2534a4} generated successfully.
snapshot: quit
ntdsutil: quit

此 NTDSUTIL 命令序列会创建包含 Active Directory DIT、日志和 SYSVOL 的卷的“卷影复制服务”快照。即使 Active Directory 仍在更新,“卷影复制服务”也会使用写入时复制策略来确保正确维护已制作的快照。请注意,快照不是 DIT 的完整副本。它们实际上只是 DIT 中制作快照后经过修改的磁盘块的集合。通过将这些块与 DIT 的当前副本组合在一起,VSS 所呈现的 Active Directory DIT 正是其在快照时的状态。图 12 显示如何删除旧的或不需要的快照。

Figure 12 删除不需要的快照

C:\> ntdsutil
ntdsutil: snapshot
snapshot: list all
 1: 2007/12/03:23:18 {42c44414-c099-4f1e-8bd8-4453ef2534a4}
 2:   C: {c0dd71ba-5bcd-4daf-9fbb-5cfbdd168022}
 3:   D: {2bbd739f-905a-431b-9449-11fba01f9931}
snapshot: delete 1
Snapshot {c0dd71ba-5bcd-4daf-9fbb-5cfbdd168022} mounted as C:\$SNAP_200712032318_VOLUMEC$\
Snapshot {2bbd739f-905a-431b-9449-11fba01f9931} mounted as C:\$SNAP_200712032318_VOLUMED$\
snapshot: quit
ntdsutil: quit
C:\>

装入 Active Directory 快照

为了使用这些快照之一,您必须首先指示“卷影复制服务”使快照可供文件系统使用。为达此目的,可使用 ntdsutil 命令列出可用快照,然后装入感兴趣的快照(请参见图 13)。

Figure 13 使用 ntdsutil 装入快照

C:\> ntdsutil
ntdsutil: snapshot
snapshot: list all
 1: 2007/12/03:23:18 {42c44414-c099-4f1e-8bd8-4453ef2534a4}
 2:   C: {c0dd71ba-5bcd-4daf-9fbb-5cfbdd168022}
 3:   D: {2bbd739f-905a-431b-9449-11fba01f9931}
snapshot: mount 1
Snapshot {c0dd71ba-5bcd-4daf-9fbb-5cfbdd168022} mounted as C:\$SNAP_200712032318_VOLUMEC$\
Snapshot {2bbd739f-905a-431b-9449-11fba01f9931} mounted as C:\$SNAP_200712032318_VOLUMED$\
snapshot: quit
ntdsutil: quit
C:\>

"list all" 命令列出了当前由“卷影复制服务”维护的所有可用 Active Directory 快照。"mount 1" 命令装入 Active Directory DIT 和日志卷的选定快照,然后使它们在文件系统中可用。它们位于 C:\$SNAP_200712032318_VOLUMEC$\ 和 C:\$SNAP_200712032318_VOLUMED$\ 中。

如果您查看这些文件夹,则会看到这些卷的整个内容与制作快照时相同。不过,请注意,装入的快照为只读,即:您无法修改已装入快照中的任何文件。

从 Active Directory 快照恢复数据

装入包含 Active Directory 的卷的快照这一任务看起来有些神秘。该如何访问这些快照中所包含的 Active Directory 数据呢?DSAMAIN 命令就是其中的关键。它是运行 ADLDS 的可执行程序。实质上是一个独立的 LDAP 服务器,几乎与 ADDS 共享其所有代码。您可以使用 DSAMAIN 使装入的快照看起来像只读 LDAP 服务器(包含制作快照时的 Active Directory 数据)。

请考虑以下命令:

C:\> dsamain –dbpath
c:\$snap_200712032318_volumed$\ntds\dit
\ntds.dit -ldapport 10000

这会装入位于 c:\$snap_200712032318_volumed$\ntds\dit 文件夹中的 ntds.dit 文件,并使其可供 TCP 端口 10000(或您指定的任何开放端口)上的 LDAP 操作使用。DSAMAIN 将在所指定数字加一的端口(在本例中为 10001)上打开 LDAPS 端口(用于 LDAP over SSL 的端口)、在所指定数字加二的端口 (10002) 上打开 GC 端口(用于全局编录连接的端口),在所指定数字加三的端口 (10003) 上打开 GCS 端口(全局编录 over SSL)。

您可以使用任何 LDAP 程序(例如 LDP)访问指定端口上装入的 DIT。但在 Windows Server 2008 中,Active Directory 用户和计算机 (ADUC)、站点和服务、域和信任关系以及 ADSIEDIT 均已经过修改,以允许您使用 DSAMAIN 将它们连接到装入的 DIT。如果您右键单击任何 ADUC 导航窗格中的顶层节点,并选择“Change Domain Controller”(更改域控制器),则会看到图 14 中所示的对话框。如果您只键入托管已装入快照的服务器的名称或 IP 地址以及端口(在我的示例中为 localhost:10000),则 ADUC 将连接装入的快照,从而允许您浏览目录的内容(与制作快照时相同)。非常了不起,不是吗?

Figure 14 Connecting Active Directory users and computers to a mounted snapshot

Figure 14** Connecting Active Directory users and computers to a mounted snapshot **(单击该图像获得较大视图)

能够以此方式访问目录数据使多种数据恢复任务都比以前容易多了。例如,要从备份恢复删除的对象,以前需要对现有 DC 执行备份的非权威还原,然后执行已删除对象的权威还原。如果您还原的备份没有正确数据,则必须使用其他备份再次全部启动。现在,使用逻辑删除恢复和快照,您可以快速找到并恢复删除的数据,甚至不必使域控制器脱机即可执行此操作。

不过,有一些限制。例如,每个活动快照都会增加与写入到目录操作关联的磁盘 I/O,因此,生产 DC 任意时间点的活动快照不应超过一或两个。此外,快照保持活动状态的时间越长,“卷影复制服务”变化量存储就会越大——这也会影响性能。当然,简单恢复删除的对象只是恢复问题的第一部分。您可能还必须恢复对象的链接属性,例如组成员身份等。但是,即使在此情况下,快照也可以帮助您确定已删除对象所属的所有组。

可靠的 Active Directory 备份和恢复策略

Windows Server 2008 带来了一个全新的备份和恢复系统。某些变化起初可能会让人感到不满。但是,一旦 IT 组织接受这些变化并将新的备份技术融入到日常操作中,更加有效的备份和恢复实施将会使其为之一振。

即使 Windows Server 2008 中备份服务器的方法发生了诸多变化,备份和恢复 Active Directory 的基本策略实际上并无太大变化。因此,在规划策略时,请确保记住这些最佳实践:

  • 计划定期完整备份系统,这样您便可以在硬件出现故障后恢复 DC。计划 DC 完整备份的频率取决于数据更新的频率、停机时间和/或数据丢失的容差,以及从头开始重新构建 DC 可能需要的工作量。
  • 计划经常性系统状态备份以备份 Active Directory 中的更改。执行系统状态备份的频率取决于丢失 Active Directory 数据的容差。但是,您一天应至少执行一次这种备份。如果您有硬件,则至少在本地磁盘上保持一个或两个系统状态备份,并将旧的系统状态版本复制到 DVD 或网络共享。
  • 确保至少对每个域中的两个 DC 执行系统状态备份。这将在其中一个备份出现错误或不可用时提供一些保障。

请确保使用应用程序分区副本(如果它们已定义)来备份 DC。同时,考虑在 DC 上创建 Windows 恢复环境,以便您可以在关键系统驱动器出现故障时能快速引导到 WinRE 中。

Gil Kirkpatrick 是 NetPro 的 CTO,他自 1996 年起便一直参与开发 Active Directory 软件。他与来自 HP 的 Guido Grillenmeier 一起创办了广受欢迎的 Active Directory 灾难恢复学习班。Gil 还是目录专家会议(请参阅 www.dec2008.com)的创始人。

© 2008 Microsoft Corporation 与 CMP Media, LLC.保留所有权利;不得对全文或部分内容进行复制.