SYSVOL目录是指存储域公共文件服务器副本的共享文件夹,它们在域中负责所有的域控制器之间数据复制。该文件夹是安装AD时创建的,用来存放GPO、Script等信息。存放在SYSVOL文件夹中的信息,会复制到域中所有DC上。例如,当客户端登录时,会首先在SYSVOL文件查找GPO和启动脚本。当域管理员配置了新的组策略,发布了新的管理脚本,这些内容保存在SYSVOL目录中。
当客户端重新开机或者执行“gpupdate /force”等命令时,这些内容同步到客户机上,让客户机执行预设的配置操作。如果在企业环境中部署了多台域控,必然在彼此之间同步SYSVOL目录的数据。在域控某台服务器上打开文件管理器,在地址栏上输入“\dcsrv.xxx.com”,这里的“dcsrv”表示域控名,“xxx.com”表示域名,回车后会显示名为“NETLOGON”和“SYSVOL”的两个共享目录。
“NETLOGON”共享对应的是SYSVOL目录中的名为“script”的文件夹,在其中主要保存和AD管理相关的脚本文件。也可以在域控上打开CMD窗口,执行“net share”命令,显示所有的共享目录,其中包含上述两个共享路径。对于Netlogon(网络登录)服务,可以为域控制器注册所有的srv资源纪录,这些纪录出现在DNS服务器的正向查询区域中企业域名中的 _msdcs、_sites、_tcp、and _udp等文件夹中,其他计算机利用这些纪录查询域活动目录相关的信息。
执行“tree %systemroot%sysvol /f”命令,可以显示SYSVOL的目录结构,包括“domain”、“staging”、“staging areas”和“sysvol” 等目录。其中的“domain”文件夹主要用来保存组策略配置信息、脚本文件等内容。“staging areas”文件夹主要用来存储不同域控之间用于同步的数据。当存在多台域控时,必然会相互同步数据,该文件夹可以临时存放需要同步的数据,之后在多台域控之间进行同步。上面提到的“NETLOGON”和“SYSVOL”的两个共享目录 ,是 和“%systemroot%sysvolxxx.comscript”、“%systemrootsysvol%”目录对应。
根据以上分析可以看出,在SYSVOL目录中主要存储和活动目录相关的组策略与脚本,因此需要及时备份,当SYSVOL出现故障时,可以迅速进行恢复。老版本的Windows Server使用文件复制服务DFS来备份该目录,对于Windows Server 2008/2012等新系统,利用分布式文件系统复制服务DFS-R来进行备份。这里以后者为例进行说明。
在CMD窗口中输入“netstop dfsr”,停止分布式文件系统复制服务。之后针对该目录进行复制或者备份操作,例如运行Windows Server Backup,在主界面右侧的“操作”栏中点击“一次性备份”,在向导中选择“其他选项”,点击下一步,在备份配置窗口中选择“自定义”,在下一步窗口中点击“添加项”,选择上述SYSVOL目录,之后进行备份即可。当备份完毕后,执行“net start dfsr”重启分布式文件系统复制服务。
图1 修改目标项属性值
在域控运行过程中,由于某种原因需要更改SYSVOL目录的位置,可以先在CMD窗口中执行“net stop dfsr”,停止分布式文件系统复制服务。之后将“%systemroot%sysvol”目录内容完整复制到新的路径中(例 如“d:sysvol”)。 为 了让操作顺利进行,需要将“d:sysvolstaging areas”目录中的“xxx.com”文件夹删除。执行“regedit.exe”程序,在注册表编辑器中打开“HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesNetlogonParameters”分支,在右侧双击“sysvol”项,将其值设置为“d:sysvol”。
这样,系统就可以据此来创建上述两个共享文件夹。执行“adsiedit.msc”程序,在ADSI编辑窗口左侧选择“默认命名上下 文 →DC=xxx,DC=com→OU=Domain Controllers→CN=DC→CN=Domain System Volume” 分 支,在 右 侧“CN=SYSVOL Subscription”项的右键菜单上点击“属性”项,在属性窗口(如图1)中的“属性编辑器”面板中找到 “msDFSR-StagingPath”项,将其值修改为“d:sysvoldomain”。找到名为“msDFSRStagingPath”的项,将值修改为“d:sysvolstaging areasxxx.com”,点击确定保存配置。
在CMD窗口中进入“d:sysvolstaging areas”目录,执行“mklink /j xxx.com d:sysvolstagingdomain”,针对该目录创建链接指针,其实就是为其创建共享快捷方式。因为这里使用的是Windows Server 2008之后的版本,已经不再使用文件复制服务,取而代之的是分布式文件复制服务,所以就没有必要针对新路径中的“sysvol”目录创建链接指针了。最后,执行“net stop netlogon”、“net start netlogon”、“net stop dfsr”和“net start dfsr”,重启NETLOGON和DFRS服务,就可以实现移动SYSVOL目录的功能。
在管理工作中,经常会遇到和AD相关的问题,有些故障就是和SYSVOL目录紧密相关的。例如,域管理员发布了新的组策略,在客户端无法发挥作用,在客户端上访问“\dcsrv.xxx.com”地址时并不显示默认的共享路径。造成该问题的原因很有可能是SYSVOL目录中共享信息丢失的缘故。执行“tree%systemroot%sysvol /f”,可以正常显示SYSVOL目录的完整内容。为此可以执行“net stop netlogon”、“net start netlogon”、“net stop dfsr”和“net start dfsr”,来停止并重新启动NETLOGON和DFS-R服务,重建上述两个共享文件夹即可。
如果在转移了SYSVOL目录后,因为误操作将其删除,同样会引起和AD管理有关的故障,可以手工进行恢复,执行“net stop dfsr”命令,停止分布式复制服务。之后,手工创建上述SYSVOL目录结构。例如在CMD窗口中使用“md”命令,创建“d:sysvol”目录,在该目录下分别创建“domain”、“staging”、“staging areas”以及“sysvol”文件夹。进入“domain”目录,创建“policies”和“scripts”文件夹,分别用来存储组策略信息和脚本文件。在“staging”目录下创建名为“domain”的文件夹。创建好SYSVOL的目录结构后,进入“d:sysvolstaging areas” 目 录,执行“mklink /j xxx.com d:sysvolstagingdomain”命令,针对该目录创建链接指针。
图2 组策略还原工具窗口
进 入“d:sysvolsysvol”目录,执行“mklink/j xxx.com d:sysvoldomain”命令,之后按照上述方法重启分布式复制服务。为了顺利发布组策略,还需要打开之前备份的SYSVOL目 录, 将 “sysvolxxx.compolicies”文件夹中的内容复制到上述手工创建的“policies”目录中,主要是恢复域控中的策略文件。如果没有备份,也可以使用系统自带的组策略还原工具来解决该问题。进入“d:sysvol”目录,执行“dcgpofix”程序(如图2),在警告信息栏中输入“y”,就可以成功还原默认的控制器策略。这里仅仅执行了还原操作,并没有修改指向此组策略对象的组策略链接。在默认情况下,默认域控制器策略链接到域控制器OU上。这样,就可以恢复SYSVOL目录的功能了。
在有些情况下,域控是由较老版本的Windows Server升级到新版本的,当升级完成后,使用的依然是老版本的文件复制服务,需要强制使用分布式文件复制服务,来提供同步的效率。因为分布式复制服务针对的不是整个文件,而仅仅是文件中发生变化的数据。
例 如 名 为“dc1”的 域控由老版本升级到Windows Server 2008 R2,额外域控名为“dc2”安装的是Windows Server 2008 R2。在执行操作之前,需要将FSMO角色迁移到DC2上。在DC1上打开CMD窗口,依次执行“ntdsutil”、“roles”、“connections”、“connect to server dc2.xxx.com”、“quit” 命 令,连接到额外域控上。依次执行“transfer schema master”、“transfer RID master”、“transfer infrastructure master”、“transfer PDC”、“transfer naming master”等命令,将FSMO角色迁移到DC2上。以域管理员身份在DC2上依次执行“repadmin/replsum”、“dfsrmig /setglobalstate 1”、“dfsrmig/setglobalstate 2”、“dfsrmig/setglobalstate 3”等命令,停止文件复制服务,将分布式文件复制服务激活,并使其处于惟一状态。在此期间,可 以 执 行“dfsrmig /getglobalstate”和“dfsrmig/getmigrationstate”命令,来查看不同域控的状态信息。