MSFT_SolutionAccelerators

使用 MDT 2012 Beta1 轻松部署 VHD Native Boot

        早先 gOxiA 发布了 MDT 2012 Beta1 相关的三篇日志《微软发布 Microsoft Deployment Toolkit 2012 Beta 1》、《升级至 MDT 2012 Beta1》、《因数据库权限问题引发的 MDT 2012 升级故障》,而今天要为大家带来的是使用 MDT 2012 Beta1 轻松部署 VHD Native Boot,关于 VHD Native Boot 这里就不再做介绍了,需要了解的朋友可以在本 Blog 搜索 vhd native boot 即可,相信感兴趣的朋友对其不会陌生啦。

        之前大家尝试 VHD Native Boot 都是在单机环境进行测试,如果要大规模应用到企业环境中,我们就需要借助 WDS,gOxiA 就此专门写过一篇文章《使用 Windows Deployment Services 部署 VHD Native Boot》,大家可以先看看。而此次将借助 MDT 2012 Beta1 来部署 VHD Native Boot,当然这一功能特性也是 MDT 2012 Beta1 的显著改进!

        利用 MDT 2012 Beta1 部署 VHD Native Boot 非常简单,我们只需要创建对应的任务序列即可,而无须做过多的繁琐操作,与创建一个普通的 Windows 7 安装任务无任何区别!下来就让我们开始此次 MDT 2012 Beta1 部署 Windows 7 Enterprise VHD Native Boot 的实践。注意,在开始前请务必先在 MDT 中添加一个 Windows 7 的系统安装源

        首先,创建一个新的任务序列,如下图填写 ID 和 Name。

1

        接下来很关键,我们需要在任务模板中选择“Deploy to VHD Client Task Sequence”,如果要部署 Windows Server 2008 R2 的 VHD Native Boot 就需要选择“Deploy to VHD Server Task Sequence”。

2

        在操作系统选择列表中,选中我们要部署 VHD Native Boot 的 Windows 7 SKUs,本例使用的是 Windows 7 Enterprise 版本。

3

        下来一路的配置界面相信大家再熟悉不过,不再一一介绍,看图有真相!

45678

        启动一台客户端,这里 gOxiA 使用 Hyper-V 创建了一个客户端虚拟机,硬盘分配 20G 即可!PXE 进入 MDT 的 LTI 环境,选择我们之前创建的任务序列“Windows 7 Enterprise VHD Native Boot”,下一步!如下图,后续的步骤与常规部署并无区别,因为 gOxiA 做了自动化处理,有些设置步骤被省略掉了!

9101112

        由于是在虚拟环境下,所以耗时会相对较长,MDT 要先根据任务序列的配置分区格式化卷,然后在其上创建一个 VHD文件,之后 Mount the VHD,再进行分区格式化,才会将 Windows 7 释放到该 VHD 中,最后才开始进入初始安装阶段。在此次测试中完成部署大约用去了近一个小时的时间,而这一时间应该取决于硬件性能和网络带宽。

MDT_VHD_Profiles

        下图就是 VHD Native Boot 部署后的磁盘情况,MDT 2012 Beta1 相比较 WDS 部署 VHD Native Boot,更加灵活、简便!我们无需实现准备用于部署的 VHD,MDT 2012 为自动帮助完成这一切,而且在部署过程中我们还可以选择要在之后安装的应用软件等等!

MDT_VHD_Finish

  解决 PXE-E32, TFTP Time Out 故障一例

        这个月打完补丁后发现服务器上的 WDS 工作不正常,故障表现在客户端 PXE 启动后,无法 TFTP 下载数据,最终导致出现 TFTP Timeout 错误。查询相关资料,找到一篇 KB977512 按照其办法解决。

        原来,微软最近发布的一个针对 DNS 漏洞的更新导致了 WDS 和 DNS 在一台服务器上即会出现 PXE-E32, TFTP Time Out 的故障。Windows Server 2008 和 Windows Server 2008 R2 都受到了影响,微软 KB 中给出了各自的解决办法,以 gOxiA 的 Windows Server 2008 R2 环境为例,只需要修改注册表将 WDS 的 UdpPortPolicy 禁止即可。具体操作如下:

        使用 Regedit 打开注册表编辑器,找到如下路径,将“UdpPortPolicy”的值改为“0”,最后重新启动 WDS 服务即可!

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\WDSServer\Parameters

        至此,故障解决!如果系统为 Windows Server 2008 可以参考 KB 修改 WDS 的 UDP 范围即可,当然也可以使用 wdsutil 命令直接进行修改“wdsutil /set-server /transport/startport:50000 /endport:65000”

        Robocopy – Windows 的可靠文件复制工具,这个命令对于一名 ITPro 来说应该并不陌生。利用 Robocopy 我们能够安全可靠地进行大批量文件的复制任务。对于服务器文件管理而言其地位非常之高!而对 gOxiA 或存在个人海量数据的网友来讲,Robocopy 也同样不可或缺。

        这不,gOxiA 最近为 X60 的最后一次投资升级硬盘至 1TB,可想而知在升级硬盘后要迁移大量数据。早先 gOxiA 都是使用 Windows 资源管理器进行文件复制,如果中途一旦出现问题,那么拷贝进度就彻底前功尽弃,而且 Windows 资源管理器的文件拷贝性能也并未发挥到极致,每每半夜还要起来监督监督!有时候还需要手工干预操作,简直就是噩梦!后来尝试使用 Robocopy 命令来执行数据复制任务,效果非常之好。这次迁移数据,Robocopy 又获大功,即使中间遇到了一些小插曲……!所以一定要写篇日志来与大家说道说道,并就此次迁移过程中遇到的小问题与大家分享一下。

        首先,我们还是应该先了解一下 Robocopy 的命令参数:

-------------------------------------------------------------------------------
   ROBOCOPY     ::     Windows 的可靠文件复制                              
-------------------------------------------------------------------------------

  开始时间: Wed Jul 06 22:40:20 2011

               用法 :: ROBOCOPY source destination [file [file]...] [options]

                 源 :: 源目录(驱动器:路径或服务器共享路径)。
               目标 :: 目标目录(驱动器:路径或服务器共享路径)。
               文件 :: 要复制的文件(名称/通配符: 默认为 "*.*")。

::
:: 复制选项:
::
                 /S :: 复制子目录,但不复制空的子目录。
                 /E :: 复制子目录,包括空的子目录。
             /LEV:n :: 仅复制源目录树的前 n 层。

                 /Z :: 在可重新启动模式下复制文件。
                 /B :: 在备份模式下复制文件。
                /ZB :: 使用可重新启动模式;如果拒绝访问,请使用备份模式。
            /EFSRAW :: 在 EFS RAW 模式下复制所有加密的文件。

      /COPY:复制标记:: 要复制的文件内容(默认为 /COPY:DAT)。
                       (复制标记: D=数据,A=属性,T=时间戳)。
                       (S=安全=NTFS ACL,O=所有者信息,U=审核信息)。

           /DCOPY:T :: 复制目录时间戳。

               /SEC :: 复制具有安全性的文件(等同于 /COPY:DATS)。
           /COPYALL :: 复制所有文件信息(等同于 /COPY:DATSOU)。
            /NOCOPY :: 不复制任何文件信息(与 /PURGE 一起使用生效)。

            /SECFIX :: 修复所有文件的文件安全性,即使是跳过的文件。
            /TIMFIX :: 修复所有文件的文件时间,即使是跳过的文件。

             /PURGE :: 删除源中不再存在的目标文件/目录。
               /MIR :: 镜像目录树(等同于 /E 和 /PURGE)。

               /MOV :: 移动文件(复制后从源中删除)。
              /MOVE :: 移动文件和目录(复制后从源中删除)。

     /A+:[RASHCNET] :: 将给定的属性添加到复制文件。
     /A-:[RASHCNET] :: 从复制文件中删除给定的属性。

            /CREATE :: 仅创建目录树和长度为零的文件。
               /FAT :: 仅使用 8.3 FAT 文件名创建目标文件。
               /256 :: 关闭超长路径(> 256 字符)支持。

             /MON:n :: 监视源;发现多于 n 个更改时再次运行。
             /MOT:m :: 监视源;如果更改,在 m 分钟时间内再次运行。

      /RH:hhmm-hhmm :: 运行小时数 - 可以启动新副本的时间。
                /PF :: 以每个文件(而不是每个步骤)为基础检查运行小时数。

             /IPG:n :: 程序包间的间距(ms),以释放低速线路上的带宽。

                /SL :: 对照目标复制符号链接。

            /MT[:n] :: 使用 n 个线程进行多线程复制(默认值为 8)。
                       n 必须至少为 1,但不得大于 128。
                       该选项与 /IPG 和 /EFSRAW 选项不兼容。
                       使用 /LOG 选项重定向输出以便获得最佳性能。

::
:: 文件选择选项:
::
                 /A :: 仅复制具有存档属性集的文件。
                 /M :: 仅复制具有存档属性的文件并重置存档属性。
    /IA:[RASHCNETO] :: 仅包含具有任意给定属性集的文件。
    /XA:[RASHCNETO] :: 排除具有任意给定属性集的文件。

  /XF 文件[文件]... :: 排除与给定名称/路径/通配符匹配的文件。
  /XD 目录[目录]... :: 排除与给定名称/路径匹配的目录。

                /XC :: 排除已更改的文件。
                /XN :: 排除较新的文件。
                /XO :: 排除较旧的文件。
                /XX :: 排除多余的文件和目录。
                /XL :: 排除孤立的文件和目录。
                /IS :: 包含相同文件。
                /IT :: 包含已调整的文件。

             /MAX:n :: 最大的文件大小 - 排除大于 n 字节的文件。
             /MIN:n :: 最小的文件大小 - 排除小于 n 字节的文件。

          /MAXAGE:n :: 最长的文件存在时间 - 排除早于 n 天/日期的文件。
          /MINAGE:n :: 最短的文件存在时间 - 排除晚于 n 天/日期的文件。
          /MAXLAD:n :: 最大的最后访问日期 - 排除自 n 以来未使用的文件。
          /MINLAD:n :: 最小的最后访问日期 - 排除自 n 以来使用的文件。
                       (If n < 1900 then n = n days, else n = YYYYMMDD date)。

                /XJ :: 排除接合点。(默认情况下通常包括)。

               /FFT :: 假设 FAT 文件时间(2 秒粒度)。
               /DST :: 弥补 1 小时的 DST 时间差。

               /XJD :: 排除目录的接合点。
               /XJF :: 排除文件的接合点。

::
:: 重试选项:
::
               /R:n :: 失败副本的重试次数: 默认为 1 百万。
               /W:n :: 两次重试间的等待时间: 默认为 30 秒。

               /REG :: 将注册表中的 /R:n 和 /W:n 保存为默认设置。

               /TBD :: 等待定义共享名称(重试错误 67)。

::
:: 日志记录选项:
::
                 /L :: 仅列出 - 不复制、添加时间戳或删除任何文件。
                 /X :: 报告所有多余的文件,而不只是选中的文件。
                 /V :: 生成详细输出,同时显示跳过的文件。
                /TS :: 在输出中包含源文件的时间戳。
                /FP :: 在输出中包含文件的完整路径名称。
             /BYTES :: 以字节打印大小。

                /NS :: 无大小 - 不记录文件大小。
                /NC :: 无类别 - 不记录文件类别。
               /NFL :: 无文件列表 - 不记录文件名。
               /NDL :: 无目录列表 - 不记录目录名称。

                /NP :: 无进度 - 不显示已复制的百分比。
               /ETA :: 显示复制文件的预期到达时间。

          /LOG:文件 :: 将状态输出到日志文件(覆盖现有日志)。
         /LOG+:文件 :: 将状态输出到日志文件(附加到现有日志中)。

       /UNILOG:文件 :: 以 UNICODE 方式将状态输出到日志文件(覆盖现有日志)。
      /UNILOG+:文件 :: 以 UNICODE 方式将状态输出到日志文件(附加到现有日志中)。

               /TEE :: 输出到控制台窗口和日志文件。

               /NJH :: 没有作业标头。
               /NJS :: 没有作业摘要。

           /UNICODE :: 以 UNICODE 方式输出状态。

::
:: 作业选项 :
::
      /JOB:作业名称 :: 从命名的作业文件中提取参数。
     /SAVE:作业名称 :: 将参数保存到命名的作业文件
              /QUIT :: 处理命令行后退出(以查看参数)。
              /NOSD :: 未指定源目录。
              /NODD :: 未指定目标目录。
                /IF :: 包含以下文件。

        此外,在 Technet 技术资源库中也有关于 Robocopy 详细的命令参数介绍。在使用过程中我们可以执行“robocopy /?”直接获取其命令参数介绍。

        限于篇幅和时间的限制,下面就以 gOxiA 这次迁移数据为例向大家讲解一番。此次迁移的环境是两块硬盘,计划将旧硬盘上 D、E 卷的数据分别迁移到新硬盘上的 D、E 卷下的 oldd 和 olde 目录中,并且不保留旧文件的权限设置。为此 gOxiA 执行了命令行“robocopy i:\. d:\oldd /e /mt:120 /mir”,其中 /e 是复制所有的子目录以及空目录,/mt:120 表示最大并发120个线程进行数据复制,而 /mir 则是镜像完整的目录树。

        由于使用了120个并发复制进程,所以文件的拷贝速度非常之快,但是中间却出现了问题,如下图所示!robocopy 未能找到某些目录,打开资源管理器实际查看了一下就硬盘的数据发现,未能找到的数据是一个“符号连接”类型的文件,也就是我们通常理解的重定向目录,因为之前 gOxiA 为了方便访问和获取文件,在一些目录中创建了对特定目录访问的符号链接文件。由于旧硬盘重新挂到新系统后,那些符号链接所指向的目录已经不存在,所以导致复制失败。因为之前未指定失败尝试次数,而默认为1百万次的尝试,最终只能终止复制。不过这个问题到底是合理性错误,还是 Robocopy 的不足还有待商讨!

robocopy_error

        既然这次数据迁移遇到了此类故障,那么再次执行命令时就要考虑周全了,除了符号链接文件以外,硬盘根目录下的“$recycle.bin”和“system volume information”子目录都是系统目录,会在复制过程中出错。所以我们要使用“/xd”参数进行排除,为了减少对错误的重试次数,和期间等待的时间,我们需要使用“/r:N”和“/w:N”来分别指定重试的次数和等待时间。最终 gOxiA 再次执行了命令行“robocopy i:\.  d:\oldd /e /mir /mt:120 /xd “$recycle.bing”/xd “system volume information”/r:10 /w:10”顺利的完成了数据迁移,并且效率相比过去的旧方法提升了好几倍。如法炮制,gOxiA 又迁移了剩下的数据。

robocopy_case1

        如果在复制结束后,你希望有一个参考日志,那么在之前命令行可以附加上“/v /log:c\robocopylog.txt”以生成一个详细的日志文件。

        robocopy 为我们提供的功能还远不止 gOxiA 今天介绍的这些,在实际工作应用中我们可以深入挖掘 robocopy 的参数来完成更为复杂的数据复制任务。

分页: 1/3 第一页 1 2 3 下页 最后页 [ 显示模式: 摘要 | 列表 ]