概述
您可以按照下列方法远程安装服务器集群:
使用命令行安装服务器集群
在安装操作系统的过程中通过无人值守的安装方式安装服务器集群
使用命令行安装服务器集群
如果在您的集群节点上已经安装和配置了 Microsoft Windows Server 2003 Enterprise Server,您就可以简单地使用称为 cluster.exe 的命令行实用程序来在这些节点安装和配置集群服务。
操作系统和集群服务的无人值守安装
要执行干净安装或升级操作系统,您可以通过手动安装的方式进行安装(您必须手动提供安装所需的全部应答),本文档将不对这方面的问题进行讨论,也可以使用所谓的应答文件通过无人值守的方式进行安装。服务器集群可以在操作系统安装完毕之后通过指定应答文件中的某些开关来进行安装。在本文档中的“服务器集群的无人值守安装”部分,我们将更详细地讨论操作系统和服务器集群的无人值守安装。
操作系统和集群的映像安装
另一种执行操作系统的干净安装的方式是使用映像安装,也称为磁盘克隆或简单克隆。克隆是部署 Windows Server 2003 Enterprise Server 的最快的方法。如果您要部署的计算机有相似的硬件,而且您想在没有或有最少的人工交互的情况下进行快速安装,您就可以使用映像安装。您不能通过基于映像的安装方式来升级操作系统。在本文档中的“服务器集群的映像安装”部分,我们将更详细地讨论服务器集群的映像安装。
使用自动部署服务(Automated Deployment Services,ADS)通过基于映像的安装方式安装操作系统和集群服务
另一种执行操作系统安装和配置的方法是使用 ADS。通过使用 ADS,您可以将操作系统部署在一个或多个目的设备上,也可以重新确定这些计算机的用途。ADS 使用上述克隆机制将映像分布在一组服务器上。通过使部署和重新确定用途的过程自动化,ADS 减少了在您的数据中心中维护各种系统的开销,这与单纯的克隆不同,如果您要部署的计算机有相似的硬件,您就可以使用 ADS。在本文档中的“服务器集群的基于 ADS 的映像安装”部分,我们将更详细地讨论基于 ADS 的操作系统映像安装。
命令行安装
虽然您不必登录到服务器节点去安装集群服务,但是在安装集群服务之前,您必须确保您用来创建集群和将节点添加到集群的帐号在所有的节点上都属于本地管理员组。一旦您将集群管理员帐号添加到了本地管理员组(请参见“将集群管理员帐号添加到本地管理员组”部分以了解详细信息),您就可以运行 cluster.exe(在 %windir%\system32 目录中)命令行实用程序来创建集群和将节点添加到集群。Cluster.exe 自动地将集群服务帐号(Cluster Service Account,CSA)添加到本地管理员组(如果其中还没有的话)。
在您安装了集群之后,您就可以使用 cluster.exe 来创建和配置集群资源,如 Windows Server 2003 Enterprise Server 帮助中所述。
将集群管理员帐号添加到本地管理员组
您可以采取如下方式将帐号添加到本地管理员组:
登录到每台计算机并且使用本地用户和组插件
使用远程桌面插件连接到远程计算机
使用 Telnet 并运行以下命令连接到远程计算机:
net localgroup administrators /add domain\account
如果您想在通过使用应答文件中的 [GuiRunOnce] 条目安装操作系统的过程中自动将集群管理员组添加到本地管理员组,您就可以在应答文件中加入这一行。请参见“应答文件及所需的部分和条目”一节以了解更多关于 GuiRunOnce 和其他应答文件条目的信息。
要了解更多关于这三个选项的信息,请参阅 Windows Server 2003 联机帮助。
创建集群
要从命令行创建集群,可以使用 cluster.exe 实用程序,如下面的示例所示:
%windir%\cluster /cluster: CLUSTER_NAME /CREATE /NODE: NODE_NAME1 /USER:your_domain\user /PASS:****** /IPADDR:xxx.yyy.zzz.aaa
将节点添加到集群
要从命令行将节点添加到集群,可以使用 cluster.exe 实用程序,如下面的示例所示:
%windir%\ cluster /cluster:CLUSTER_NAME /ADDNODES: NODE_NAME1, NODE_NAME2, NODE_NAME3 /PASSWORD:*********
如果愿意的话,您可以将“创建集群”和“将节点添加到集群”这两个步骤组合到一个批处理文件中。
服务器集群的无人值守安装
服务器集群的无人值守安装包括以下步骤:
规划和准备操作系统安装
为 Windows Server 2003 Enterprise Edition 操作系统的安装准备应答文件
创建主安装
运行 winnt32.exe
安装集群服务
规划和准备操作系统安装
要详细地了解如何规划和准备 Windows Server 2003 Enterprise Server 操作系统安装,请参阅以下文档:Microsoft Windows XP 预安装指南。这个文档在 Windows Server 2003 光盘上的 Deploy.cab 文件中。虽然该文档所包含的说明是针对 Windows XP 安装的,但是同样也适用于 Windows Server 2003 Enterprise Edition。
应答文件
要使 Windows Server 2003 安装完全自动化,您必须准备应答文件,应答文件通常名为 unattend.txt,它包含对一系列图形用户界面(GUI)对话框的所有应答。Unattend.txt 告知安装如何与您创建的分布文件夹和文件交互,并且给安装提供终端用户在典型的 Windows 安装中提供的所有信息。例如,Unattend.txt 在 [UserData] 部分中包含 FullName 条目来指示 Windows 安装提示终端用户提供全名。
虽然用于安装的应答文件的名称通常为 Unattend.txt,但是对于网络预安装,您可以将该文件命名为您喜欢的任何名称。而对于基于光盘的安装,您必须将应答文件命名为 Winnt.sif。
如果您使用 OPK 工具包(该工具包仅供 OEM 使用),您可以通过使用称为安装管理器(Setup Manager)的工具来创建或修改 Unattend.txt 文件。您还可以使用任何文本编辑器来创建和修改应答文件。
所需的部分和条目
完整的无人值守操作系统安装需要以下部分和条目:
所需的部分 | 该部分中所需的条目 | 注解 |
[Unattended] |
UnattendMode |
|
TargetPath |
||
[GuiUnattended] |
AdminPassword |
|
TimeZone |
||
[Identification] |
JoinWorkgroup |
您可以改为指定 JoinDomain、DomainAdmin 和 DomainAdminPassword。 |
[LicenseFilePrintData] |
AutoMode |
|
AutoUsers |
如果 AutoMode = PerServer,则需要 AutoUsers。 | |
[Networking] |
需要配置网络协议。 | |
[UserData] |
ComputerName |
|
FullName |
||
[GuiRunOnce] |
需要安装集群服务。 |
[Unattended]
这个部分包含用于运行安装的条目(比如是否扩展安装 Windows 操作系统的分区),并且指定在安装的过程中安装所需的文件的位置等等。如果您想让您的安装全部自动化,就必须指示安装接受 EULA:
[Unattended] OemSkipEula = Yes
[GuiUnattended]
Sysprep.inf 的这个部分包含为无人值守安装准备图形用户界面(GUI)的条目。要完全自动地安装操作系统,您需要包括以下条目:
[GuiUnattended] AutoLogon = Yes AdminPassword = *** <用实际的密码来代替星号> OemSkipWelcome = 1 OemSkipRegional = 1 TimeZone = 20 <在此指定时区>
[Identification]
这个部分包含指定计算机的网络标识的条目。如果这些条目不存在,安装就将计算机添加到称为 WORKGROUP 的默认工作组。如果没有足够的信息用于这个条目,安装就会提示终端用户提供这些信息。
在将第一个节点添加到集群或将附加的节点添加到集群之前,所有的节点都必须加入一个域(而不是工作组)。当您创建集群或将节点加入集群之前,您可以指定集群服务运行的域用户帐号。因此,您需要指定在这个部分中目的计算机应该加入哪一个域,并且提供有效的加入凭证:
[Identification] DomainAdmin = your_domain\user DomainAdminPassword = ***** <用实际的密码来代替星号> JoinDomain = your_domain
[LicenseFilePrintData]
这个部分包含用于 Windows Server 2003 家族的安装许可信息的条目:
[LicenseFilePrintData] AutoMode = PerSeat
[Networking]
这一部分不包含条目。然而,为了在无人值守的安装过程中配置网络协议,您必须在您的应答文件中包含 [Networking] 部分名。此外,您还必须包含附加的部分来描述您的网络适配器、待安装的协议和静态 IP 地址信息。
为了遵守服务器集群最佳实践,在配置网络时您必须遵循下列指导原则:
至少使用两个互连。虽然服务器集群可能只使用一个互连,但是为了消除单点故障和确认原始设备制造商(OEM)集群,必须至少有两个互连。
保留一个网络专门用于内部的节点到节点通信(专用网络)。
不要在专用网络上使用协同网络适配器。
对各个节点上的每个适配器都使用静态 IP 地址。
要获得网络最佳实践指导的完整列表,请参阅 Windows Server 2003 Enterprise Server 联机帮助/可用性和可伸缩性/集群服务器。
使用 unattend.txt 中的如下条目来实现网络最佳实践推荐标准:
[NetAdapters] ;在此列出您的网络适配器 Adapter01 = params.Adapter01 Adapter02 = params.Adapter02
接下来,您需要单独识别每个网络适配器。您可以使用 INFID 条目,您需要在其中指定您的网络适配器的 Plug 和 Play ID;您也可以使用 NetCardAddress 条目来指定 MAC 地址。您需要运行 Windows Server 2003 资源包中名为 pnpids.exe 的专用工具来检索您的网卡的 PnP ID。对于带有多个相同类型的适配器的集群(即每个适配器的即插即用 ID 是相同的),您必须指定 NetCardAddress 或 PCI 位置信息。如果您没有指定 NetCardAddress 或 PCI 位置,则只有与 PnP ID 匹配的第一个适配器(枚举的/检测的)接收应答文件。
如果您指定 NetCardAddress 或 PCI 位置,则安装不使用 INFID 条目,因为它是最不具体的条目。
因此,我们推荐您简单地通过网卡的 MAC 地址来识别它们,如下所示:
[params.Adapter01] NetCardAddress = 0x0002A5D0510F [params.Adapter02] NetCardAddress = 0x000476D5F57D ;为 MS 网络安装客户端 [NetClients] MS_MSClient = params.MS_MSClient [params.MS_MSClient] ;指定要安装哪一个网络协议 [NetProtocols] MS_TCPIP = params.MS_TCPIP ;TCP/IP 属性 [params.MS_TCPIP] AdapterSections = params.MS_TCPIP.Adapter01, params.MS_TCPIP.Adapter02
现在我们需要用静态 IP 地址信息来配置两个网卡。根据集群网络最佳实践推荐标准,对于专用网络,我们需要通过指定一个级别 A、B 或 C 的私有地址和一个子网掩码来定义静态 IP 地址的 TCP/IP 属性。
对于公共集群网络,我们需要指定静态 IP 地址、子网掩码、默认网关、DNS 和 WINS 条目。
;Adapter01 用于群内通信 [params.MS_TCPIP.Adapter01] DHCP = No IPAddress = 172.24.23.91 SpecificTo = Adapter01 SubnetMask = 255.255.0.0 WINS = No ;Adapter02 表示公共网络 [params.MS_TCPIP.Adapter02] DefaultGateway = 157.6.8.1 DHCP = No IPAddress = 157.5.4.1 SpecificTo = Adapter02 SubnetMask = 255.255.252.0 DNSServerSearchOrder = 157.5.0.1,157.6.0.2 WINS = Yes WINSServerList = 157.5.0.1,157.5.1.2
[UserData]
这一部分包含在安装的过程中指定用户设置的条目:
[UserData] ComputerName = SV-NODE1 FullName = User Name OrgName = Organization Name ProductKey = 11111-22222-33333-44444-55555
当然,您需要用真实的值替换所有名称、密码和集群 IP 地址的值。
附加的应答文件条目
特定于厂商的设备
有时,您需要安装没有与 Windows Server 2003 Enterprise Server 一起提供的特定于厂商的设备驱动程序或第三方设备驱动程序(如存储控制器驱动程序)。
要安装没有在 Windows Server 2003 光盘中作为 Deploy.cab 的一部分而提供的驱动程序,可以在 unattend.txt 的 [Unattended] 部分中使用下列键值:
[Unattended] OemPnpDriversPath = folder_1_on_system_drive[;folder_2_on_system_drive]...
为您的所有辅助大容量存储设备的驱动程序指定此设置。
如果您需要为可引导的大容量存储设备加载驱动程序,您就需要将两个附加的部分添加到您的应答文件中:[MassStorageDrivers] 和 [OEMBootFiles]。
要了解更多关于[MassStorageDrivers] 和 [OEMBootFiles] 的信息,请参阅 Windows Server 2003 光盘上的 Deploy.cab 文件中的 Microsoft Windows XP 预安装指南。虽然该指南所包含的说明是关于准备 Windows XP 安装,但是相同的说明也适用于 Windows Server 2003 Enterprise Edition。
创建主安装
这一步中没有特定于集群的项。请参阅 Microsoft Windows XP 预安装指南 以获得更详细的关于如何创建主安装的说明。该文档位于 Windows Server 2003 光盘上的 Deploy.cab 文件中。
运行 Winnt32.exe
您可以在命令提示符下运行 Winnt32.exe 以启动 Windows 安装。
要获得 Winnt32.exe 命令行选项的完整列表,请参阅 Microsoft Windows XP 预安装指南 中的 Winnt32.exe 命令行选项主题。该文档位于 Windows Server 2003 光盘上的 Deploy.cab 文件中。虽然该指南所包含的说明是关于准备 Windows XP 安装,但是相同的说明也适用于 Windows Server 2003 Enterprise Edition。
要从网络共享中安装 Windows,可以使用您的 Windows Server 2003 光盘(或其他启动介质)来引导计算机,然后连接到所需的网络位置。将分布共享和配置设置放在网络上可以给预安装过程增加相当大的灵活性。
要使用 Winnt32.exe 运行 Setup,您需要遵循下列步骤:
准备 Unattend.txt 文件作为构建配置设置的一部分,如上所述。
启动您想要安装 Windows 的计算机。
单击“开始”,再单击“运行”,然后键入:path_to_winn32\winnt32 /unattend:filename
其中:
path_to_winnt32
指定到 Winnt32.exe 的位置的路径。例如,\\server\share\Lang\Eng\sku\pro\x86\I386。
filename
指定应答文件的名称,应答文件包含对您想要自动回答的问题的答案。filename 的值通常为 Unattend.txt。
安装集群服务
要安装集群服务,您必须将 [GuiRunOnce] 条目添加到您的 unttend.txt,如下所示:
[GuiRunOnce]
要创建一个集群,可以将下列条目添加到 GuiRunOnce 部分:
[GuiRunOnce] Command0 = %windir%\cluster /cluster:SV-CLUSTER /CREATE /NODE:SV-NODE1 /USER:your_domain\user /PASS:****** /IPADDR:157.5.5.50
要将节点添加到现有的集群,可以将下列条目添加到 GuiRunOnce 部分:
[GuiRunOnce] Command0 = %windir%\ cluster /cluster:SV-CLUSTER /ADDNODES:SV-NODE2 /PASSWORD:*********
服务器集群的映像安装
映像安装(也称为磁盘克隆或简单克隆)是部署 Windows Server 2003 Enterprise Server 最快捷的方法。如果您要部署的计算机具有相似的硬件,而且您想在有最少的终端用户交互的情况下进行快速安装,您就可以使用映像安装。
克隆服务器集群包括以下步骤:
在主计算机上构建主安装。构建主安装包括安装和配置操作系统以及您需要包括在您的磁盘映像上的任何软件和驱动程序。
使用 Sysprep 工具准备主安装。这包括在主计算机配置和运行 Sysprep 工具。
使用磁盘映像工具生成主安装的磁盘映像。这包括将每个磁盘映像保存为永久存储位置。
将磁盘映像加载到将组成集群的目的计算机上。
您不能使用已安装的集群服务来克隆集群节点。您必须反安装集群服务或使用专门准备的计算机(没有安装集群服务)来创建磁盘映像。
使用 SYSPREP 准备映像
构建主安装
您需要设置主计算机 ,您将用主计算机来构建主安装并随后创建磁盘映像。确保您的主计算机没有安装集群服务并且没有附加到任何共享的存储。
构建主安装包括安装和配置操作系统以及您需要包括在您的磁盘映像上的任何软件和驱动程序。
准备主安装
在您在主计算机上准备好主安装之后,您就需要准备用于克隆的磁盘映像。Microsoft 为您提供了一个称为 sysprep 的工具来准备用于克隆的映像。该工具可以在 the Windows Server 2003 Enterprise Server 光盘中找到,位于\support\tools 目录中。当您在主计算机上运行 sysprep 时,您可以提供下列两个开关之一: -factory 或 reseal。
在完成系统准备并且重启计算机之后,您可以使用厂家(Factory)模式来安装附加的驱动程序和应用程序。通常,在预安装的过程中运行 Sysprep 作为最后的步骤可以使计算机为传输作好准备。当重新启动时,计算机就启动 Mini-Setup。通过运行带有 -factory 选项的 Sysprep,计算机可以在启用网络的状态下重启,而不启动最小安装。在这种状态下,Factory.exe 处理它的应答文件,并且执行以下操作:
从网络源将驱动程序复制到计算机
启动即插即用枚举
从位于计算机或网络源的源文件中启动、安装和卸载计算机中的应用程序
添加用户数据
当完成时,运行带有 -reseal 选项的 Sysprep 来准备用于克隆的磁盘映像。
例如,您可以创建包含最小的一组驱动程序的主安装,运行带有 -factory 选项的 Sysprep,创建安装的映像,并且将映像复制到多个目的计算机。如果某个目的计算机需要附加的驱动程序,就在该目的计算机上运行带有 -factory 选项的 Sysprep,并且同时加载这些驱动程序。
要获得更多关于工厂模式和 winbom.ini 文件的信息,请参阅 Microsoft Windows XP 预安装指南,该指南可以在 Windows Server 2003 Enterprise Server 光盘上的 \support\tools\deploy.cab 文件中找到。
Sysprep 和 Sysprep.inf 应答文件
要使集群安装完成自动化,您将需要使用 sysprep.inf 文件,该文件是 Sysprep 在最小安装的过程中和最小安装之后所使用的应答文件。
sysprep.inf 中所需的部分和条目
整个无人值守安装需要下列部分和条目:
所需的部分 | 该部分中所需的条目 | 注解 |
[Unattended] |
UnattendMode |
|
TargetPath |
||
[GuiUnattended] |
AdminPassword |
|
TimeZone |
||
[Identification] |
JoinWorkgroup |
您可以改为指定 JoinDomain、DomainAdmin 和 DomainAdminPassword。 |
[LicenseFilePrintData] |
AutoMode |
|
AutoUsers |
如果 AutoMode = PerServer,则需要 AutoUsers。 | |
[Networking] |
需要配置网络协议。 | |
[UserData] |
ComputerName |
|
FullName |
请参见本文档中的“所需的部分和条目”,以获得对这些条目的逐一解释。
附加的 sysprep.inf 条目
特定于厂商的设备
有时,您需要安装没有与 Windows Server 2003 Enterprise Server 一起提供的特定于厂商的设备驱动程序或第三方设备驱动程序(如存储控制器驱动程序)。
如果在所有的集群节点上存储控制器都是完全相同的,就可以采取这样的一种方法来完成上述任务,先在主计算机上安装所需的驱动程序,然后将它们作为磁盘映像的一部分分布到目的计算机。如果各个集群节点上的存储控制器有所不同,您将需要:
创建单独的磁盘映像来包含设备驱动程序,或者
遵循以下描述如何将相同的映像用于带有不同存储控制器的计算机的指导原则。
[SysprepMassStorage] sysprep.inf 中的条目
在运行主安装中的 Sysprep 并创建您的映像之前,请在 Sysprep.inf 文件的 [SysprepMassStorage] 部分标识您想要安装在每个目的计算机上不同的大容量存储控制器。然后,Sysprep 预先填充必要的驱动程序信息,这样,当操作系统启动时,Windows 就可以在使用某个预定义主存储控制器的计算机上加载正确的驱动程序。
您不需要在 [SysprepMassStorage] 部分中手动创建条目。代之以,您可以采用以下某种技术:
在 Sysprep.inf 文件的 [Sysprep] 部分包括 BuildMassStorageSection 条目。Sysprep 将自动为所有通过 Machine.inf、Scsi.inf、Pnpscsi.inf 和 Mshdc.inf 内的即插即用硬件 ID 指定的大容量存储控制器生成 [SysprepMassStorage] 中的条目,并且将安装这些大容量存储控制器。
--OR--
不要在 Sysprep.inf 文件的 [Sysprep] 部分包括 BuildMassStorageSection 条目。运行命令 Sysprep -bmsd。Sysprep 将自动为所有通过 Machine.inf、Scsi.inf、Pnpscsi.inf 和 Mshdc.inf 内的即插即用硬件 ID 指定的大容量存储控制器生成 [SysprepMassStorage] 中的条目,但是将不安装这些大容量存储控制器。然后,在运行此安装中的 Sysprep -reseal 或 Sysprep -factory 之前,您可以从这个部分中删除项。在关键的设备数据库中安装数目更小的项可以减少将此映像重新引导到操作系统所需的时间。
注意:当您运行 Sysprep -reseal 或 Sysprep -factory 时,Sysprep 读取 Sysprep.inf 文件的[SysprepMassStorage] 部分,并且在关闭之前将大容量存储信息写入注册表。在计算机下一次启动时,所有的大容量存储控制器都将可用。
Hardware_ID
为在 devices .inf 文件中指定的设备指定即插即用 ID。
Syntax | path_to_device_inf[, disk_directory[, disk_description[, disk_tag]]] |
值 |
path_to_device_inf 指定到 .inf 文件的路径,.inf 文件文件包含要安装的控制器的即插即用 ID 的.inf 文件。如果 path_to_device_inf 是一个长文件名,就将其包含在引号中。 disk_directory 在第三方提供的软盘上指定包含大容量存储驱动程序的目录。 disk_description 指定软盘的描述,与第三方所提供的 Txtsetup.oem 文件中指定的一样。 disk_tag 指定软盘的磁盘标签,与第三方所提供的 Txtsetup.oem 文件中指定的一样。 |
示例 |
要支持新的 Qlogic 驱动程序,可以将 qlogic.inf 文件复制到 Sysprep 文件夹,并且将以下部分包括在 Sysprep.inf 文件中: [SysprepMassStorage] PCI\VEN_1077&DEV_1080 = "C:\Sysprep\qlogic\qlogic.inf"、"\nt"、"Qlogic Software Disk"、"\qlogic" |
要获得更多关于 sysprep、sysprep.inf 或 [SysprepMassStorage] 条目的信息,请参阅 Microsoft Windows XP 预安装指南,该指南可以在 Windows Server 2003 Enterprise Server 光盘上的 \support\tools\deploy.cab 文件中。
如果您将相同的映像用于带有不同的存储控制器的计算机,您将需要包括 [SysprepMassStorage] 和 [BuildMassStorageSection],如上所述。
要获得 sysprep.inf 条目的完整列表,请参阅 Microsoft Windows XP 预安装指南,该指南可以在 Windows Server 2003 Enterprise Server 光盘上的 \support\tools\deploy.cab 文件中找到。
请参阅附录 A 以获得 sysprep.inf 示范文件。
给共享存储驱动器分配驱动器号(可选)
您可能想控制如何给共享存储驱动器分配驱动器号。您可以使用 diskpart.exe 实用程序(如下面的示例所示)来分配驱动器号。首先,您需要创建一个带有参数的文本文件,diskpart.exe 将用这些参数作为命令行参数,在下面的示例中,这个文本文件名为 diskpartparams.txt。该批处理文件本身是非常短的,它只使用 diskpartparams.txt 文件中附带的参数来调用 diskpart.exe 实用程序。
在 sysprep.inf 中加进下行:
[GuiRunOnce] Command1=%systemdrive%\scripts\AssisgnDriveLetters.bat
确保您在系统驱动器中创建了名为 scripts(或任何您喜欢的名称)的目录,并且将以下批处理文件放入其中:
AssignDriveLetters.bat
diskpart /s diskpartparams.txt pause diskpartparams.txt select volume 0 assign letter Q select volume 1 assign letter R select volume 2 assign letter S select volume 3 assign letter T exit
将集群服务帐号添加到本地管理员组
如果您在 Mini-Setup 运行时没有在您的目的计算机上安装集群服务,但是计划以后使用这些节点创建服务器集群,您就可能想要将集群服务帐号添加到本地管理员组。如果您这样做,您以后就可以遵循本文档的命令行安装部分中的说明来创建集群和/或将节点添加到现有集群。
要将集群服务帐号添加到本地管理员组,请在 sysprep.inf 文件中加进下行:
[GuiRunOnce] Command0=net localgroup administrators /add domain\clussvc_acct
生成和分布磁盘映像
创建磁盘映像
在您准备好用于克隆的磁盘映像之后,您就需要使用磁盘映像工具创建磁盘映像并且将磁盘映像保存为永久存储位置。您可以使用第三方磁盘映像软件,也可以使用名为 iBIG 的 Microsoft 软件。
如果您使用的是第三方产品,请参阅随产品一起提供的关于如何创建和分布磁盘映像的文档。
启动介质
在您可以在目的计算机上加载磁盘映像之前,您需要一些类型的启动介质来引导您的计算机。启动介质包含启动计算机所需的系统文件和设备驱动程序,这样就可以访问但是不可以使用主硬盘。启动介质还可能包含 NIC 和网络驱动程序、CD 和 DVD 设备驱动程序、磁盘配置工具以及脚本或批处理文件。您可以使用软盘、CD、DVD 或网络启动作为您的启动介质,这取决于您的目的计算机的功能。
如果您使用第三方磁盘映像产品,它们常常就会提供工具来创建不同的启动介质。否则,您就需要创建您自己的启动介质。
在创建您的启动介质时,请遵循下面这些指导原则:
• |
如果您跨网络分布磁盘映像,您的启动介质就必须提供网络支持。 |
• |
如果您在介质上分布磁盘映像并且使用软盘作为启动介质,您的启动介质就必须提供 CD 或 DVD 设备支持。 |
• |
您的启动介质必须支持一些工具,您需要用这些工具来将磁盘映像从存储位置复制到目的计算机。举例来说,如果您的启动介质是 MS-DOS 启动磁盘,您就需要使用 MS-DOS 工具来将磁盘映像复制到目的计算机。 |
要获得更多关于选择和创建启动介质的信息,请参阅 Microsoft Windows Server 2003 共同部署工具用户指南(Deploy.chm)。Deploy.chm 包括在 Deploy.cab 文件中,Deploy.cab 文件可以在 Windows Server 2003 操作光盘的支持文件夹中找到。
分布磁盘映像
一旦您创建了映像并将其放入分布共享(或像 CD 或 DVD 这样的分布介质),而且您有启动介质来引导您的目的计算机,您就可以准备将映像分布到目的计算机。
您需要确保您的集群硬件和网络已经按 Windows Server 2003 Enterprise Server 联机帮助/可用性和可伸缩性/集群服务器的描述安装完毕。您将要安装的所有集群节点必须已经连接到共享的存储。
您可以同时将磁盘映像加载到您的所有集群节点。许多第三方工具支持多播映像分布。您还可以使用 BIG 来将磁盘映像分布到您的集群节点。
当所有的磁盘映像都在目的计算机上加载完毕时,不要立刻全部启动或重启它们。在创建集群时,您必须将第一个集群节点与其他的集群节点分开安装。一旦第一个集群节点安装完毕并开始运行,就检验集群服务是否也安装完毕并开始运行。然后,您就可以安装其余的集群节点。由于服务器集群使用共享的存储,所以如果共享的存储没有受到集群服务的保护,共享存储上就可能发生数据被破坏的情况。
在您将磁盘映像分布到目的计算机上之后,Sysprep 就运行 Mini-Setup(袖珍安装)。在 Mini-Setup 完成之后,您就应该检验是否所有的节点都已经成功地加入集群。打开“集群管理员”,查看哪些节点已经加入集群以及每个集群是否都已经启动并开始运行。如果情况是这样的,您的集群就准备好了。
配置您的服务器集群
配置您的服务器集群
在您安装了服务器集群之后,您很可能需要配置它,安装附加的集群资源和应用程序。解释如何完成这些任务不在本文档的范围之内。请参阅 Windows Server 2003 Enterprise Server 联机帮助/可用性和可伸缩性/集群服务,以获得更多关于配置服务器集群和集群应用程序的信息。
使用脚本
使用 MSClus 和/或 WMI 创建资源
下面我们提供两个示例,说明在集群的无人值守安装过程中可以如何进一步使任务自动化。
使用 Cluster Automation Server 和 Windows Scripting Host
通过将以下命令添加到 sysprep.inf 文件,您可以在创建好一个集群或将一个节点添加到现有的集群之后创建文件共享。
[GuiRunOnce] Command1 = "%systemdrive%\ClusterInstallFiles\createfs.vbs SV-CLUSTER ClusterGroup SVFileShareResource E:\ SVFileShare"
当这个命令执行时,名为 SVFileShare 的文件共享将创建在 E: 驱动器的 SV-CLUSTER 中。
您必须将名为 createfs.vbs 的 Visual Basic 脚本放在您的系统驱动器的 ClusterInstallFiles 目录中。请参见附录 B 以获得这样的脚本的样本代码。
按照类似的方式,您可以使各种资源(比如 IP 地址资源、网络名称、打印共享、一般资源等等)的创建自动化。要了解更多关于使用 Cluster Automation Server 来创建集群资源的信息,请参阅 Windows Platform SDK 中的 Cluster Automation Server Reference。
使用命令行
请参见附录 C 以获得一个样本批处理文件,这个文件可以用于创建文件共享资源(使用 cluster.exe)。在 Mini-Setup 完成之后,可以通过下面的 GuiRunOnce 条目指示 Mini-Setup 运行这个批处理文件:
[GuiRunOnce] Command2=%systemdrive%\scripts\createfs.bat
使用自动部署服务(ADS)通过基于映像的安装方式安装操作系统和集群服务
使用自动部署服务(ADS)使您能够个性化操作系统映像以满足您的需要。映像/克隆要求您在每次需要将映像部署到不同的服务器或部署操作系统的不同配置时修改 sysprep.inf 文件(它包含操作系统的配置信息)。ADS 使得用户能够个人化 sysperp.inf 文件,从而减少了这种复杂性。要了解更多关于 sysprep.inf 和映像的信息,请参阅“服务器集群的映像安装”。
此外,ADS 还使得您能够使用单个服务器来管理您的数据中心中的服务器。这个服务器(或者称为“控制器”)与所有其他的 ADS 服务一起,使得您能够将操作系统映像部署到不带操作系统的设备或者重新确定带有新的操作系统映像的现有设备的用途。简而言之,您可以使用 ADS 来:
将一个没有操作系统的设备远程转到可用的状态,或者将一个设备从一种状态转到另一种状态。
通过提供在一个或多个系统上从单点控制运行可扩展和可配置操作(如脚本)的能力来操作超过规模的数据中心。
自动部署服务包括以下三个主要服务:
——控制器服务
——映像分布服务
——网络启动服务
请参阅 ADS 帮助和文档以获得更多关于 ADS 和 ADS 的设置及安装的信息。这一部分假定您已经安装并开始运行 ADS。
遵循下列步骤来使用 ADS 部署服务器集群
1. |
将设备(您想要安装集群服务的系统)添加到 ADS 控制器 |
2. |
创建主映像 |
3. |
将映像上传到 ADS 控制器 |
4. |
修改 sysprep.inf 以包括变量 |
5. |
为映像部署创建任务序列文件 |
6. |
创建序列文件的工作模板 |
7. |
在 ADS 数据库中为所需的设备创建和存储与变量相关的值 |
8. |
对所需的设备执行工作模板 |
警告:
如果您使用的是共享的存储设备,那么只有一个节点可以访问共享磁盘就是至关重要的。否则,共享的磁盘可能被破坏。为了防止破坏,您可以只留一个节点而关闭所有其他的节点,也可以使用一些其他的技术(LUN、分区等等)来隔离节点的数据路径。一旦由单个节点组成的集群形成,您就可以将其他的节点添加和加入到这个集群中。您需要注意下面提到的这些方面,并且在部署集群之前相应地计划好。
——磁盘必须重新进行格式化并且在机器引导到操作系统之前装配就绪。
——当第一个节点正在创建集群时,其他的机器不应该在整个操作系统中(这是为了避免出现任何破坏共享磁盘的情况)。
——只有在已经形成了一个集群之后才可以加入节点(Join Node)(将另一个节点添加到集群)任务序列。这是为了避免在集群创建仍在进行的同时加入节点。
1. 将设备(您想要安装集群服务的系统)添加到 ADS 控制器:
在安装和配置完 ADS 之后,您就需要将设备(您需要部署操作系统和配置服务器的系统)添加到控制器。您可以通过 UI 或命令行接口来添加设备。请参阅 ADS 帮助中的管理设备部分以获得更多的信息。您需要确保设备在 BIOS 中被设置为网络启动。一旦设备启动,它就与控制器进行通信并且引导到部署代理。该设备将在 ADS 控制器中出现,并且您应该控制该设备。您可以通过 UI(ads.msc)或命令行设备来控制该设备。
要通过命令行接口添加设备:
adsdevice [/scontrollername [/uusername/wpassword]] /adddevicename [/description "text"] [ /ipipaddress] [/adminmacmacaddress] [/guidsmbiosguid] [/assettagassettag] [/jobtemplatetemplatename] [/?]
or
adsdevice [/s controllername [/u username /w password]] /add @filename
E.g.
Adsdevice /add mnhp6n11 /description server cluster 1st node /ip 172.24.11.207 /adminmac 00306E1215b8 /guid 239d1df6-1dd6-11b2-f0e7-00306e12 /jobtemplate servercluster.xml
要通过 ADS.msc(UI 接口)添加设备:
打开自动部署服务。
在控制台树中,右键单击“设备”文件夹,然后单击“添加”。
对于“添加设备”对话框,在“名称”框中键入设备名。
如果您想要添加更多的信息以帮助识别设备,可以在其余的文本框中键入信息,然后单击“确定”。
2. 创建主映像
创建主映像包括以下步骤:
——在主计算机上构建主安装。构建主安装包括安装和配置操作系统以及您需要包括在您的磁盘映像上的任何软件和驱动程序。
——使用 Sysprep 工具准备主安装。这包括在主计算机上配置和运行 Sysprep 工具。
——使用磁盘映像工具生成主安装的磁盘映像。这包括将每个磁盘映像保存到永久存储位置。
注意:您不能使用已安装的集群服务来克隆集群节点。您必须反安装集群服务或使用专门准备的没有安装集群服务的主计算机来创建磁盘映像。
请参见“服务器集群的映像安装”以获得更多关于创建主映像的信息。
3. 将映像上传到 ADS 控制器
在捕获了操作系统的映像之后,您就需要将捕获的映像添加到控制器中。在控制器的根部创建名为映像、映像备份和序列的目录。确保您创建这些目录的磁盘卷有足够的空余磁盘空间可以存放至少两倍于映像大小的东西。将映像复制到映像目录中。
下一步就是将映像添加到 ADS 控制器数据库。您可以通过用户界面或命令行添加映像。下面是用于添加映像的命令行的语法:
adsimage [/scontrollername [/uusername/wpassword]] /addimagename/pathimagepath [/description
在添加了映像之后,您将需要把映像移到映像目录中。您可以通过再次运行 adsimage.exe 来检验映像是否已经正确添加。
请参阅 ADS 帮助中的管理映像部分以获得关于管理映像的更多信息。
要通过用户界面添加映像:
打开 ADS.MSC(自动部署服务)
右键单击“映像”并单击“添加”
填写“映像文件路径”和“映像名称”,然后单击“确定”
4. 修改 sysprep.inf 以包括变量
Mini-Setup 使用 Sysprep.inf 文件来安装和配置操作系统。这个文件包含您刚添加到 ADS 控制器数据库的配置文件详细信息。这种配置信息对于映像来说是静态的。ADS 通过允许您在 sysprep.inf 文件中插入变量使得您可以自定义 sysprep.inf 文件。通过这种方式,您可以从 sysprep.inf 文件中删除将随系统的改变而改变的配置信息。而变量配置将转到 ADS 控制器中。
在修改映像中的 sysprep.inf 文件之前,您将需要把映像安装到驱动器。ADS 有支持这种功能的工具。可以使用下面的命令行语法来更改映像的目录和安装映像:
imgmount /mount /w {imagefilename} /d: driveletter
将驱动器更改为上面的驱动器字母,并且目录更改为 sysprep 目录。有两种创建或修改 sysprep.inf 的方法,您可以通过 setupmgr.exe,也可以通过 notepad.exe。请参见“服务器集群的基于图像安装”部分以获得更多关于 sysprep.inf 的信息。
打开 notepad.exe 中的 sysprep.inf 文件。查找随系统的改变而改变的安装变量。将它们定义为变量而不是将静态值放入 sysprep.inf 文件中。例如,在 sysprep.inf 文件的以下片断中,在行的开头用 * 标记的项可以定义为变量。每个系统的这些设置都有所不同。
[params.MS_TCPIP.Adapter01] * DHCP="No" * IPAddress="10.11.26.11,,172.24.11.141" SpecificTo=Adapter01 * SubnetMask="255.255.0.0,255.255.255.0" * WINS="No" ;Adapter02 用于公共网络 [params.MS_TCPIP.Adapter02] SpecificTo=Adapter02 * DefaultGateway="172.24.11.1" * DHCP="No" * IPAddress="172.24.11.205" * SubnetMask="255.255.255.0" * DNSServerSearchOrder="172.24.10.2,172.24.0.2" * WINS="Yes" * WINSServerList="157.55.254.201,157.55.254.203" [GuiRunOnce] ;请参见本文档的第 2.2.1 节以获得 AssignDriveLetters.bat 文件的示范文本 ;请参见“配置集群”部分以获得 createfs.vbs *Command0=%systemdrive%\scripts\AssisgnDriveLetters.bat *Command1 = "%windir%\system32\cluster.exe /cluster:SV-CLUSTER /CREATE /NODE:SV-NODE1 /USER:domain\user /PASS:***** /IPADDR: 157.5.5.50" *Command2 = "%systemdrive%\ClusterInstallFiles\createfs.vbs SV-CLUSTER ClusterGroup SVFileShareResource E:\ SVFileShare"
在用变量替换了这些命令之后,该片断将看起来像是这样的。注意每个变量名都是以 ^ 开头且以 ^ 结尾的。它们必须包含在引号之中。如果不这样做的话,ADS 将不会正确地安装和配置操作系统。注意:在 guirunonce 部分,上面的样本片断也将集群配置命令替换为变量。在成功安装之后,Windows 将在配置集群服务或任何其他指定的服务第一次启动时运行 guirunonce 中的命令。
[params.MS_TCPIP.Adapter01] DHCP="^DHCP1^" IPAddress="^IPAddress1^" SpecificTo=Adapter01 SubnetMask="^SubnetMask1^" WINS="^WINS1^" ;Adapter02 用于公共网络 [params.MS_TCPIP.Adapter02] DefaultGateway="^DefaultGateway2^" SpecificTo=Adapter02 DHCP="^DHCP2^" IPAddress="^IPAddress2^" SubnetMask="^SubnetMask2^" DNSServerSearchOrder="^DNSServerSearchOrder2^" WINS="^WINS2^" WINSServerList="^WINSServerList2^" [GuiRunOnce] ;在形成/加入集群之前装载所有的磁盘卷 Command0="^CLUSTER_COMMAND_MOUNT^" Command1=^AssignDriveLetters^ Command2="^CLUSTER_COMMAND^" Command3=^FileShare^
在您修改了 sysprep.in 文件之后,就可以使用下面的命令行接口来卸载映像。
Imgmount u drive:
ADS 还允许您通过脚本来定义变量。请参阅 ADS 帮助中的管理映像部分以获得更多的信息。
注意:附录 F 包含已修改的完整样本 sysprep.inf。
您还可以使用 setupmgr.exe 来创建、修改无人值守安装文件,带有变量的 syspre.inf 文件。通过 cmd 窗口运行 setupmgr.exe。
选择“新建”
选择“sysprep 安装”
选择您想要部署的操作系统类型
上面允许您输入用于安装的变量。这里您可以提供您将要在 ADS 中定义的变量名来代替提供实际值。例如,^Name^ 是其值将通过 ADS 进行替换的变量。
在完成了上面的操作之后,单击“运行一次”并输入集群配置命令。在上面的示例中,^cluster_create_command^ 变量被插入 sysprep.inf 文件中,它的实际值将定义在 ADS 中。一旦用变量创建了 sysprep.inf,就可以保存它,并且通过安装映像到驱动器来将这个 sysprep.inf 文件复制到映像中
5. 创建映像部署的任务序列文件
下一步是创建 ADS 控制器的任务序列文件。它是一个 XML 文件,其中包含控制器的任务序列,这些任务序列可以对一个设备执行,也可以对一组设备执行。ADS 带有几个样本序列文件,您可以使用这些样本 XML 文件中的任何一个,而且还可以根据您的需要对其进行修改。在这个文件中,您将为控制器定义个性化的变量来替换 sysprep.inf 文件中的变量。此外,您还将定义在控制器的其他任务序列中什么样的任务序列必须对设备运行。例如,划分磁盘、复制映像、替换 sysprep.inf 文件中的变量、重新启动设备和检查设备的状态等等。
您至少将需要修改样本 XML 文件中的如下部分以便它正确地工作。
<!-- 步骤 1 在磁盘上创建单个 4999MB 分区 --> <task description="Partition the disk"> <command>/bmonitor/bmpart.exe</command> <parameters> <parameter>\device\harddisk0</parameter> <!-- 选择 harddisk0 --> <parameter>/init</parameter> <!-- 擦除 harddisk0 上的所有分区 --> <parameter>/C:4999</parameter> <!-- 创建一个大小为 4999MB 的新分区(#1) --> <parameter>/A</parameter> <!-- 激活新创建的分区(#1) --> </parameters> </task> 在上面的部分(步骤 1)中,您需要定义磁盘的分区大小。在上面的示例中,一个大小为 4999MB 的分区将在驱动器 0 上创建。 <!-- STEP 2 download images --> <task description="Download image"> <command>/imaging/imgbmdeploy.exe</command> <parameters> <parameter>3718Plain</parameter> <!-- 将映像命名为已部署的--> <parameter>\device\harddisk0\partition1</parameter> <!-- 将映像部署到 partition1 --> <parameter>-r</parameter> <!-- 指定部署模式 --> <parameter>-client</parameter> <!-- 所需的参数 --> </parameters> </task> 在上面的部分(步骤 2)中,您需要指定您用来添加到控制器的映像。在上面的示例中,3718Plain 用于映像。 <!-- 步骤 3 个性化 sysprep.inf 文件 --> <task description="Set sysprep custom info in the sysprep.inf file"> <command>/bmonitor/bmstrrep.exe</command> <parameters> <parameter>\device\harddisk0\partition1\sysprep\sysprep.inf</parameter> <parameter>^ProductKey^</parameter> <!-- 键(要在 sysprep.inf 文件中搜索的 ProductKey) <parameter>"$ProductKey$"</parameter> <!-- 要替换的值,一定要放在引号中> <parameter>^OEMDuplicatorstring^</parameter> <parameter>"$OEMDuplicatorstring$"</parameter> <parameter>"$CLUSTER_COMMAND_MOUNT$"</parameter> <parameter>^CLUSTER_COMMAND^</parameter> <parameter>"$CLUSTER_COMMAND$"</parameter> <parameter>^AssignDriveLetters^</parameter> <parameter>"$AssignDriveLetters$"</parameter> <parameter>^FileShare^</parameter> <parameter>"$FileShare$"</parameter> </parameters> </task>
在上面的部分(步骤 3)中,您需要指定您在 sysprep.inf 中使用的变量名称。注意,变量包含在 ^xxx^ 中,而它所附带的要用于替换的值在引号($xxxx$)中。
用于部署单个节点集群的样本 XML 文件在附录 D 中。这个示范文件还将在磁盘上创建文件共享。
6. 创建序列文件的工作模板
ADS 中的工作模板提供了一种方法,可以用来定义和存储您计划多次对一个设备(或一组设备)运行的任务说明。您可以使用 adsjobtemplate 命令行工具或 ADS 插件来创建工作模板。您将需要把这个工作模板与您刚创建的用于部署操作系统和配置服务器集群的 XML 文件相关联。在创建了工作模板创建好之后,当您每次需要对任何设备运行工作时,您都可以使用它。例如,您可以使用带有创建开关的集群命令来首次创建单个节点集群。如果集群创建完毕,您就可以修改这个命令来将节点添加到下一个系统,它是您需要在操作系统部署之后加入这个集群的系统。
要使用 ADS 的用户界面添加工作模板:打开 ADS.MSC
右键单击“工作模板”并单击“添加”。这将调用“添加工作模板向导”来指导您完成整个过程。
7. 为所需的设备在 ADS 数据库中创建和存储与变量相关的值
现在,您将需要在控制器数据库中为每个设备定义和存储变量。当对设备运行值时,这些值将用 sysprep.inf 文件中的值进行代替。您可以通过 ADS 或命令行界面来定义变量。要通过 ADS 插件添加,可以双击设备并在弹出的窗口中单击“用户”。单击“添加”来添加用在序列文件和 sysprep.inf 中的变量名,并且使其与某个值相关联。
单击“用户”,然后单击“添加”。
输入变量名,然后输入此变量的值,最后单击“确定”。
您还可以使用如下所示的命令行界面来将变量添加到控制器中的设备数据库。
Adsdevice /edit device-name /setvar variable-name "value"
E.g.;
Adsdevice /edit mnhp11n3 /setvar DNSServerSearchOrder2 "172.24.10.2,172.24.0.2"
Mnhp11n3 是设备名称,DNSServerSearchOrder2 是变量。
您可以创建一个批处理脚本来为设备添加所有的变量。附录 G 包括一个样本批处理脚本文件,它定义了附录 D 中的 sysprep.inf 文件的变量的值。
8. 对所需的设备执行工作模板
下一步是对设备执行工作模板。要手工给设备分配工作模板,可以使用 ADS 插件或 adsController 命令行工具。
一旦将设备连接到控制器,就可以右键单击该设备并单击“运行工作”。这将调用一个向导,该向导将带您完成选择要执行的正确工作模板的步骤。
一旦执行启动,您就可以通过单击 ADS 插件的左边窗格中的“运行工作”选项来监控工作进程。它会列出所有在序列 XML 文件中已经定义的任务。在集群创建完成之后,您可能需要根据您的要求来配置集群。您可以使用任何脚本来在 sysprep.inf 文件的 [guirunonce] 部分配置集群。
在经过少量的修改之后,您就可以将相同的序列文件 sysprep.inf 用于安装和配置第二个节点。您将需要修改为第二个节点(设备)的变量定义的值。例如,用于将节点添加到这个集群的集群命令、该节点的 IP 地址等等。
附录 A
这是一个简单的 sysprep.inf 文件,它可以应用于服务器集群的无人值守安装。通过使用这个配置文件,Mini-Setup 将创建一个名为 SV-CLUSTER 的集群,它带有一个节点 SV-NODE1,另外,Mini-Setup 还将给共享存储驱动器分配驱动器字母,并且创建一个名为 SVFileShare 的集群文件共享。
在您使用这个文件之前,需要将计算机名称、集群名称、用户数据、密码和 IP 地址替换成实际的。
[Unattended] OemSkipEula = Yes [GuiUnattended] AutoLogon = Yes AdminPassword = *** AdvServerType = Servernt OemSkipWelcome = 1 OemSkipRegional = 1 TimeZone = 20 [LicenseFilePrintData] AutoMode=PerSeat [UserData] ComputerName = SV-NODE1 FullName = "User" OrgName = "Organization" ProductKey = 11111-22222-33333-44444-55555 [Networking] [Identification] DomainAdmin = domain\user DomainAdminPassword = ***** JoinDomain = domain ;将可以使用两个网络适配器——Adapter01 和 Adapter02。 [NetAdapters] Adapter01 = params.Adapter01 Adapter02 = params.Adapter02 ;指定第一个网络适配器所用的网卡。 [params.Adapter01] netcardaddress = 0x0002A5D0510f ;指定第二个网络适配器所用的网卡。 [params.Adapter02] netcardaddress = 0x000476D5F57D ;安装 MS 网络的客户端。 [NetClients] MS_MSClient = params.MS_MSClient [params.MS_MSClient] ;只安装 TCP。 [NetProtocols] MS_TCPIP = params.MS_TCPIP [params.MS_TCPIP] ;TCP/IP 属性 AdapterSections = params.MS_TCPIP.Adapter01,params.MS_TCPIP.Adapter02 ;Adapter01 用于集群内通信。 [params.MS_TCPIP.Adapter01] DHCP = No IPAddress = 172.24.23.91 SpecificTo = Adapter01 SubnetMask = 255.255.0.0 WINS = No ;Adapter02 代表公用网络。 [params.MS_TCPIP.Adapter02] DefaultGateway = 157.5.8.1 DHCP = No IPAddress = 157.5.4.1 SpecificTo = Adapter02 SubnetMask = 255.255.252.0 DNSServerSearchOrder = 157.5.0.1,157.6.0.2 WINS = Yes WINSServerList = 157.5.0.1,157.5.1.2 [GuiRunOnce] ;请参见本文档的第 2.2.1 节以获得 AssignDriveLetters.bat 文件的示范文本。 Command0=%systemdrive%\scripts\AssisgnDriveLetters.bat Command1 = "%windir%\system32\cluster.exe /cluster:SV-CLUSTER /CREATE /NODE:SV-NODE1 /USER:domain\user /PASS:***** /IPADDR: 157.5.5.50" Command2 = "%systemdrive%\ClusterInstallFiles\createfs.vbs SV-CLUSTER ClusterGroup SVFileShareResource E:\ SVFileShare"
附录 B
CreateFS.vbs —— 创建集群文件共享的 Visual Basic 脚本 Const ResourceType = "File Share" Const UsageString = "Usage: createfs cluster group resourcename path sharename <remarks> <sharesubdirs>" Const BasicArgs = 3 ' 头三个参数将总是 cluster、group 和 resourcename Const MinArgs = 5 ' BasicArgs + path + sharename Const MaxArgs = 7 ' BasicArgs + path + sharename + <remarks> + <sharesubdirs> '---------------------------------------------------------------------------- '定义我们将在 PrivArgNameArray 中使用的专用属性 '并且定义 PrivArgArray 中的缺省值 '---------------------------------------------------------------------------- PrivArgNameArray = Array( "Path", "ShareName", "Remark", "ShareSubDirs" ) PrivArgArray = Array( "", "", "", 1 ) '---------------------------------------------------------------------------- ' 定义我们依赖的所有资源类型。我们将只 ' 添加该数组(如果有的话)和 ' 我们在我们的枚举中遇到的第一个数组中的每种类型的一个资源。当没有找到 ' 某种类型的资源时,没有错误抛出。由用户负责检验每种资源是否 ' 运作良好(例如,路径是指向我们所依赖的共享磁盘的) '---------------------------------------------------------------------------- Const NumberOfDeps = 3 DependencyArray = Array( "Physical Disk", "IP Address", "Network Name" ) Set oArgs = WScript.Arguments If oArgs.Count < MinArgs Or oArgs.Count > MaxArgs Then '---------------------------------------------------------------------------- '用法 '---------------------------------------------------------------------------- Wscript.Echo UsageString Else '---------------------------------------------------------------------------- '解析参数 '---------------------------------------------------------------------------- oClusterName = oArgs(0) oGroupName = oArgs(1) oResourceName = oArgs(2) For iCounter = 0 To oArgs.Count - BasicArgs - 1 If True = IsNumeric( oArgs( iCounter + BasicArgs )) Then PrivArgArray(iCounter) = CLng(oArgs(iCounter + BasicArgs)) Else PrivArgArray(iCounter) = oArgs(iCounter + BasicArgs) End If Next '---------------------------------------------------------------------------- '打开集群 '---------------------------------------------------------------------------- Set oCluster = CreateObject("MSCluster.Cluster") oCluster.Open (oClusterName) '---------------------------------------------------------------------------- '打开 resgroup 并添加新的资源 '---------------------------------------------------------------------------- Set oGroup = oCluster.ResourceGroups.Item(oGroupName) Set oNewResource = oGroup.Resources.CreateItem(oResourceName, ResourceType, 0) '---------------------------------------------------------------------------- '添加任何必需的依赖性 '---------------------------------------------------------------------------- Set coldeps = oNewResource.Dependencies For iCounter = 0 To NumberOfDeps - 1 For Each oResource In oGroup.Resources If oResource.Type.Name = DependencyArray(iCounter) Then coldeps.AddItem oResource Exit For End If Next Next '---------------------------------------------------------------------------- '设置新资源的专用属性 '---------------------------------------------------------------------------- Set colProperties = oNewResource.PrivateProperties For iCounter = 0 To MaxArgs - BasicArgs - 1 colProperties.Item(PrivArgNameArray(iCounter)).Value = PrivArgArray(iCounter) Next colProperties.SaveChanges '---------------------------------------------------------------------------- '清除 '---------------------------------------------------------------------------- Set oCluster = Nothing Set oGroup = Nothing Set oResourceName = Nothing Set iCounter = Nothing Set oNewResource = Nothing Set colProperties = Nothing Set coldeps = Nothing End If '---------------------------------------------------------------------------- '清除 '---------------------------------------------------------------------------- Set oArgs = Nothing Set PrivArgArray = Nothing Set PrivArgNameArray = Nothing Set DependencyArray = Nothing
附录 C
这是一个样本批处理文件,可以创建文件共享资源(使用 cluster.exe)。我们假定有一组已经包含了网络名称(Network Name)、物理磁盘(Physical Disk)资源。下面,您将看到对每一行的解释。下面的示例假定您一个名为“Disk Group 1”的组,带有“Disk X:”。
Creatfs.bat X: MD ClusterFS cluster. res "ClusterFS" /create /group:"Disk Group 1" /type:"File Share" cluster . res "ClusterFS" /priv path="X:\ClusterFS" cluster . res "ClusterFS" /priv Sharename=ClusFileShare cluster . res "ClusterFS" /priv Remark="This is a File Share" cluster . res "ClusterFS" /prop Description="This is a Clustered Share" cluster . res "ClusterFS" /priv security=Domain\User,grant,c:security cluster . res "ClusterFS" /priv ShareSubDirs=1 cluster . res "ClusterFS" /AddDep:"Disk X:" cluster . res "ClusterFS" /AddDep:"Network Name" cluster . res "ClusterFS" /On
以下是每一行所代表的含义:
cluster . res "ClusterFS" /Create /Group:"Disk Group 1" /Type:"File Share"
这会在名为“Disk Group 1”的集群组中创建文件共享资源。注意:默认集群组内外都不应有任何内容。
cluster . res "ClusterFS" /priv Path="X:\ClusterFS"
这会将到文件共享的本地路径设置为 X:\ClusterFS。请验证该路径存在并且是可访问的。
cluster . res "ClusterFS" /priv ShareName=ClusFileShare
这会设置资源的共享名称,也是客户端将用来连接的名称。
cluster . res "ClusterFS" /priv Remark="This is a File Share"
这会设置文件共享的备注。客户端在浏览虚拟服务器时将看到此备注。
cluster . res "ClusterFS" /prop Description="This is a Clustered Share"
这会在集群管理员中提供对资源的描述。此名称只能在 CluAdmin 中作为标识之用。
cluster . res "ClusterFS" /priv security=Domain\User,grant,c:security
这会给域“Domain”中的用户帐号“User”提供更改文件共享资源的共享级别的权限。
访问类型有授予(grant)、拒绝(deny)、设置(set)或撤销(revoke)。选择授予、拒绝、设置类型时,需要有访问掩码。访问掩码有“R”(代表读取)、“C”(代表更改)和“F”(代表完整)。
这还可以用来同时授予多个用户权限,下面是安全性开关参数的语法:
Security=Domain\User1,grant,RC,Domain\User2,revoke,everyone,set,F:security
cluster . res "ClusterFS" /priv ShareSubDirs=1
这会将文件共享设置为动态(可理解为“共享所有的子目录”)。如果您创建的是标准文件共享,则必须省略此行。
cluster . res "ClusterFS" /AddDep:"Disk X:"
这会使文件共享资源依赖于文件共享所驻留的磁盘 X:\ 的物理磁盘资源。
cluster . res "ClusterFS" /AddDep:"Network Name"
这会使文件共享资源依赖于网络名称资源。网络名称资源必须是已经存在的。
cluster . res "ClusterFS" /On
这会使新创建的文件共享资源联机。
附录 D
这是一个样本 ADS 序列文件,可以用于安装服务器集群。通过使用这个序列文件以及附录 F 中的 [sysprep.inf],Mini-Setup 将创建一个名为 mnhp11 集群,它带有一个节点 mnhp11n3,另外,Mini-Setup 还将给共享存储驱动器分配驱动器字母(将使用附录 C 中的 Creatfs.bat),并且创建名为 SVFileShare 的集群文件共享(将使用附录 B 中的 CreateFS.vbs)。 下面的文件的 <!-- 步骤 3 个性化 sysprep.inf 文件 --> 部分的所有变量($xxxx$ 之间的任何变量,比如产品键、域名、计算机名等等)都需要按照附录 G 中的描述进行定义。此外,在您可以使用这个文件之前,需要定义真实的名称以替换附录 G 中的集群名称、用户数据、密码和 IP 地址。
文件名:[da-deploy-image-form-servercluster.xml]
<?xml version="1.0" encoding="utf-8"?> <!-- 这个文件是 Microsoft ADS 样本的一部分。Microsoft Corporation 版权所有。保留所有权利。用于确定设备用途的样本序列目前正在运行部署代理,并且将其配置为把它连接到一个域。要预置的映像必须使用 sysprep.inf 进行捕获,它包含字符串 ^ADS_WINDOWS_PRODUCT_KEY^ 、 ^DomainAdminPassword^ 等等,与下面的个性化步骤中的一样。必须为与下面的个性化步骤中的一样的设备创建设备变量。要使用这个序列:将目标引导到部署代理中,然后对设备运行这个序列。 --> <!-- start sequence --> <sequence command="da-deploy-image-form-servercluster.xml" description="Deploy an image and configure the machine to join domain and form a cluster" xmlns="http://schemas.microsoft.com/ads/2003/sequence" version="1"> <!-- 步骤 1 在磁盘上创建单个 4999MB 分区 --> <task description="Partition the disk"> <command>/bmonitor/bmpart.exe</command> <parameters> <parameter>\device\harddisk0\partition0</parameter> <parameter>/init</parameter> <parameter>/C:4999</parameter> <parameter>/A</parameter> </parameters> </task> <!-- 步骤 2 下载映像 --> <task description="Download image"> <command>/imaging/imgbmdeploy.exe</command> <parameters> <parameter>3718Plain</parameter> <parameter>\device\harddisk0\partition1</parameter> <parameter>-r</parameter> <parameter>-client</parameter> </parameters> </task> <!-- 步骤 3 个性化 sysprep.inf 文件 --> <task description="Set sysprep custom info in the sysprep.inf file"> <command>/bmonitor/bmstrrep.exe</command> <parameters> <parameter>\device\harddisk0\partition1\sysprep\sysprep.inf</parameter> <parameter>^ProductKey^</parameter> <parameter>"$ProductKey$"</parameter> <parameter>^OEMDuplicatorstring^</parameter> <parameter>"$OEMDuplicatorstring$"</parameter> <parameter>^FullName^</parameter> <parameter>"$FullName$"</parameter> <parameter>^OrgName^</parameter> <parameter>"$OrgName$"</parameter> <parameter>^DomainAdmin^</parameter> <parameter>"$DomainAdmin$"</parameter> <parameter>^DomainAdminPassword^</parameter> <parameter>"$DomainAdminPassword$"</parameter> <parameter>^DomainName^</parameter> <parameter>"$DomainName$"</parameter> <parameter>^System_Admin_password^</parameter> <parameter>"$System_Admin_password$"</parameter> <parameter>^COMPUTER_NAME^</parameter> <parameter>"$Device.System.Name$"</parameter> <parameter>^ConnectionName1^</parameter> <parameter>"$ConnectionName1$"</parameter> <parameter>^netcardaddress1^</parameter> <parameter>"$netcardaddress1$"</parameter> <parameter>^DHCP1^</parameter> <parameter>"$DHCP1$"</parameter> <parameter>^IPAddress1^</parameter> <parameter>"$IPAddress1$"</parameter> <parameter>^SubnetMask1^</parameter> <parameter>"$SubnetMask1$"</parameter> <parameter>^WINS1^</parameter> <parameter>"$WINS1$"</parameter> <parameter>^ConnectionName2^</parameter> <parameter>"$ConnectionName2$"</parameter> <parameter>^netcardaddress2^</parameter> <parameter>"$netcardaddress2$"</parameter> <parameter>^DHCP2^</parameter> <parameter>"$DHCP2$"</parameter> <parameter>^IPAddress2^</parameter> <parameter>"$IPAddress2$"</parameter> <parameter>^SubnetMask2^</parameter> <parameter>"$SubnetMask2$"</parameter> <parameter>^DefaultGateway2^</parameter> <parameter>"$DefaultGateway2$"</parameter> <parameter>^DNSServerSearchOrder2^</parameter> <parameter>"$DNSServerSearchOrder2$"</parameter> <parameter>^WINSServerList2^</parameter> <parameter>"$WINSServerList2$"</parameter> <parameter>^WINS2^</parameter> <parameter>"$WINS2$"</parameter> <parameter>^CLUSTER_COMMAND_MOUNT^</parameter> <parameter>"$CLUSTER_COMMAND_MOUNT$"</parameter> <parameter>^CLUSTER_COMMAND^</parameter> <parameter>"$CLUSTER_COMMAND$"</parameter> <!-- <parameter>^AssignDriveLetters^</parameter> --> <!-- <parameter>"$AssignDriveLetters$"</parameter> --> <!-- <parameter>^FileShare^</parameter> --> <!-- <parameter>"$FileShare$"</parameter> --> </parameters> </task> <!-- 步骤 4 设置控制器 IP --> <task description="Set controller IP address"> <command>/bmonitor/bmsetreg.exe</command> <parameters> <parameter>-h:\device\harddisk0\partition1\windows\system32\config\system</parameter> <parameter>controlset001\control\bmss</parameter> <parameter>controlleripaddress</parameter> <parameter>reg_multi_sz</parameter> <parameter>$controller.system.adminipaddr{logcontent}lt;/parameter> </parameters> </task> <!-- 步骤 5 设置 BMDP 端口号 --> <task description="Set BMDP port number"> <command>/bmonitor/bmsetreg.exe</command> <parameters> <parameter>-h:\device\harddisk0\partition1\windows\system32\config\system</parameter> <parameter>controlset001\control\bmss</parameter> <parameter>bmdpipport</parameter> <parameter>reg_dword</parameter> <parameter>$controller.system.bmdpport{logcontent}lt;/parameter> </parameters> </task> <!-- 步骤 6 设置 BMCP 端口号 --> <task description="Set BMCP port number"> <command>/bmonitor/bmsetreg.exe</command> <parameters> <parameter>-h:\device\harddisk0\partition1\windows\system32\config\system</parameter> <parameter>controlset001\control\bmss</parameter> <parameter>bmcpipport</parameter> <parameter>reg_dword</parameter> <parameter>$controller.system.bmcpport{logcontent}lt;/parameter> </parameters> </task> <!-- 步骤 7 设置管理 MAC 地址 --> <task description="Set management MAC address"> <command>/bmonitor/bmsetreg.exe</command> <parameters> <parameter>-h:\device\harddisk0\partition1\windows\system32\config\system</parameter> <parameter>controlset001\control\bmss</parameter> <parameter>bindexcept</parameter> <parameter>reg_multi_sz</parameter> <parameter>$controller.system.adminmac{logcontent}lt;/parameter> </parameters> </task> <!-- 步骤 8 将公钥复制到目标 --> <task description="Copy public key certificate file to target"> <command>/bmonitor/bmfilexfer.exe</command> <parameters> <parameter>-d</parameter> <parameter>"c:\program files\Microsoft ADS\certificate\adsroot.cer"</parameter> <parameter>\device\harddisk0\partition1\windows\temp\adsroot.cer</parameter> </parameters> </task> <!-- 步骤 9 设置 BMSS 公钥认证 --> <task description="Set the BMSS public key certificate"> <command>/bmonitor/bmsetreg.exe</command> <parameters> <parameter>-h:\device\harddisk0\partition1\windows\system32\config\system</parameter> <parameter>-f</parameter> <parameter>-r</parameter> <parameter>controlset001\control\bmss\bmcpcertificates</parameter> <parameter>AgentCert</parameter> <parameter>reg_binary</parameter> <parameter>\device\harddisk0\partition1\windows\temp\adsroot.cer</parameter> </parameters> </task> <!-- 步骤 10 重启机器 --> <task doesReboot="true" timeout= "600" description="Reboot"> <command>/bmonitor/reboot</command> </task> <!-- 步骤 11 当 PXE 请求传入时,引导硬盘(启动 Mini-Setup) --> <task doesReboot="true" timeout= "600" description="Boot to hard disk"> <command>/pxe/boot-hd</command> </task> <!-- 步骤 12 在 Mini-Setup 的最后,机器将重启,因此,当 PXE 请求传入时,引导硬盘(启动新安装的操作系统) --> <task timeout= "600" description="Boot to hard disk"> <command>/pxe/boot-hd</command> </task> <!-- 步骤 13 将设备记录更新为以后始终引导硬盘 --> <!-- 如果已经将 ADS 安装到不同于“C:\program files\Microsoft ads”的文件夹,则需要 --> <!-- 更新 ADS 安装文件夹 --> <task description="Set default job template as boot to hard disk"> <command target="controller">C:\Program Files\Microsoft ADS\tools\adsdevice.wsf</command> <parameters> <parameter>-e</parameter> <parameter>$Device.System.Name{logcontent}lt;/parameter> <parameter>-jobtemplate</parameter> <parameter>boot-to-hd</parameter> </parameters> </task> </sequence>
附录 E
[boot-to-hd.xml] <?xml version="1.0" encoding="utf-8"?> <!-- 这个文件是 Microsoft ADS 样本的一部分。Microsoft Corporation 版权所有。保留所有权利。在工作模板中使用这个文件会导致设备启动,请退出 PXE,然后在下一次 PXE 启动时从下一个启动设备(通常为硬盘)中启动。 --> <!-- 启动序列 --> <sequence command="boot-to-hd.xml" description="PXE boot into hard disk" version="1" xmlns="http://schemas.microsoft.com/ads/2003/sequence"> <!-- 步骤 1 引导硬盘 --> <task description="Boot to hard disk"> <command>/pxe/boot-hd</command> </task> </sequence>
附录 F
下面是 sysprep.inf 文件,可以用于安装服务器集群(使用 ADS)。您可以使用附录 D 和 E 中定义的工作序列以及附录 G 中定义的变量。注意:您必须修改这些变量以满足您自己的需要。
[sysprep.inf] ;SetupMgrTag [Unattended] OemSkipEula=Yes InstallFilesPath=C:\sysprep\i386 TargetPath=\WINDOWS [GuiUnattended] AdminPassword="^System_Admin_password^" EncryptedAdminPassword=NO OEMSkipRegional=1 OEMDuplicatorstring="^OEMDuplicatorstring^" TimeZone=4 OemSkipWelcome=1 AutoLogon=Yes AutoLogonCount=1 [UserData] FullName="^FullName^" OrgName="^OrgName^" ComputerName="^COMPUTER_NAME^" ProductKey="^ProductKey^" [LicenseFilePrintData] AutoMode=PerSeat [Identification] DomainAdmin="^DomainAdmin^" DomainAdminPassword="^DomainAdminPassword^" JoinDomain="^DomainName^" [Networking] ; InstallDefaultComponents=Yes ;将可以使用两个网卡——Adapte401 和 Adapetr02 [NetAdapters] Adapter01=params.Adapter01 Adapter02=params.Adapter02 ;指定网络适配器 #1 所用的网卡 [params.Adapter01] ConnectionName="^ConnectionName1^" netcardaddress="^netcardaddress1^" ;指定网络适配器 #2 所用的网卡 [params.Adapter02] ConnectionName="^ConnectionName2^" netcardaddress="^netcardaddress2^" ;安装 MS 网络的客户端 [NetClients] MS_MSClient=params.MS_MSClient [params.MS_MSClient] ;只有 TCPIP [NetProtocols] MS_TCPIP=params.MS_TCPIP [params.MS_TCPIP] ;TCPIP 属性 AdapterSections=params.MS_TCPIP.Adapter01,params.MS_TCPIP.Adapter02 ;Adapter01 用于集群内通信 [params.MS_TCPIP.Adapter01] DHCP="^DHCP1^" IPAddress="^IPAddress1^" SpecificTo=Adapter01 SubnetMask="^SubnetMask1^" WINS="^WINS1^" ;Adapter02 用于公用网络 [params.MS_TCPIP.Adapter02] DefaultGateway="^DefaultGateway2^" SpecificTo=Adapter02 DHCP="^DHCP2^" IPAddress="^IPAddress2^" SubnetMask="^SubnetMask2^" DNSServerSearchOrder="^DNSServerSearchOrder2^" WINS="^WINS2^" WINSServerList="^WINSServerList2^" [TapiLocation] CountryCode=1 Dialing=Tone AreaCode=425 [Branding] BrandIEUsingUnattended=Yes [Proxy] Proxy_Enable=0 Use_Same_Proxy=0 [GuiRunOnce] ;在形成/加入集群之前装上所有的磁盘卷 Command0="^CLUSTER_COMMAND_MOUNT^" Command1=^AssignDriveLetters^ Command2="^CLUSTER_COMMAND^" Command3=^FileShare^ [sysprepcleanup]
附录 G
ADS 需要用户使用 ADS 插件输入这些变量。在执行集群安装的 XML 序列工作模板之前,用户需要为设备(将部署映像的系统)定义下面所有的变量。您还可以创建一个批处理文件来创建这些变量(使用下面列出的命令)。在运行序列模板之前执行批处理文件。
附带关联值的变量列表:OEMDuplicatorstring= Fresh install of Windows 2003 server with server cluster configured ProductKey=xxxxx-yyyyy-xxxxx-yyyyy-xxxxx FullName="wolfpack" OrgName="Microsoft" DomainAdmin=xx\yyyyyy DomainAdminPassword=xxxxx DomainName=xx.com System_Admin_password=xxxxxx ConnectionName1="Private" Netcardaddress1=0x00306E121879 DHCP1=No IPAddress1=10.11.25.14 SubnetMask1=255.255.0.0 WINS1=No ConnectionName2="Public" Netcardaddress2=0x00306E121878 DefaultGateway2=172.24.11.1 DHCP2=No IPAddress2=172.24.11.159 SubnetMask2=255.255.255.0 DNSServerSearchOrder2=172.24.10.2,172.24.0.2 WINS2=Yes WINSServerList2=157.55.254.201,157.55.254.203 CLUSTER_COMMAND_MOUNT= c:\windows\system32\mountvol /e CLUSTER_COMMAND=c:\windows\system32\cluster.exe /cluster:mnhp11 /create /node:mnhp11n3 /user:ct\wolfpack /pass:wolfpack /ipaddr:172.24.11.141 AssignDriveLetters=%systemdrive%\scripts\AssisgnDriveLetters.bat FileShare=%systemdrive%\scripts\createfs.bat Batch File: 本批处理文件使用 Adsdevice 命令创建变量。Syntax Adsdevice edit devicename setvar variablename valueforVariable [Variables.bat] Adsdevice /edit mnhp11n3 /setvar OEMDuplicatorstring "Fresh install of Windows 2003 server with server cluster configured" Adsdevice /edit mnhp11n3 /setvar ProductKey "xxxxx-yyyyy-xxxxx-yyyyy-xxxxx Adsdevice /edit mnhp11n3 /setvar FullName "wolfpack" Adsdevice /edit mnhp11n3 /setvar OrgName "Microsoft" Adsdevice /edit mnhp11n3 /setvar DomainAdmin "y\xxxxx" Adsdevice /edit mnhp11n3 /setvar DomainAdminPassword "xxxxx" Adsdevice /edit mnhp11n3 /setvar DomainName "xx.com" Adsdevice /edit mnhp11n3 /setvar System_Admin_password "xxxxxx" Adsdevice /edit mnhp11n3 /setvar ConnectionName1 "Private" Adsdevice /edit mnhp11n3 /setvar Netcardaddress1 "0x00306E121879" Adsdevice /edit mnhp11n3 /setvar DHCP1 "No" Adsdevice /edit mnhp11n3 /setvar IPAddress1 "10.11.26.11" Adsdevice /edit mnhp11n3 /setvar SubnetMask1 "255.255.0.0" Adsdevice /edit mnhp11n3 /setvar WINS1 "No" Adsdevice /edit mnhp11n3 /setvar ConnectionName2 "Public" Adsdevice /edit mnhp11n3 /setvar Netcardaddress2 "0x00306E121878" Adsdevice /edit mnhp11n3 /setvar DefaultGateway2 "172.24.11.1" Adsdevice /edit mnhp11n3 /setvar DHCP2 "No" Adsdevice /edit mnhp11n3 /setvar IPAddress2 "172.24.11.205" Adsdevice /edit mnhp11n3 /setvar SubnetMask2 "255.255.255.0" Adsdevice /edit mnhp11n3 /setvar DNSServerSearchOrder2 "172.24.10.2,172.24.0.2" Adsdevice /edit mnhp11n3 /setvar WINS2 "Yes" Adsdevice /edit mnhp11n3 /setvar WINSServerList2 "157.55.254.201,157.55.254.203" Adsdevice /edit mnhp11n3 /setvar CLUSTER_COMMAND_MOUNT "c:\windows\system32\mountvol /e" Adsdevice /edit mnhp11n3 /setvar CLUSTER_COMMAND "c:\windows\system32\cluster.exe /cluster:mnhp11 /create /node:mnhp11n3 /user:ct\wolfpack /pass:wolfpack /ipaddr:172.24.11.141" Rem ;请参见本文档的第 2.2.1 节以获得 AssignDriveLetters.bat 文件的样本文本 Adsdevice /edit mnhp11n3 /setvar AssignDriveLetters "%systemdrive%\scripts\AssisgnDriveLetters.bat" Rem ;请参见“配置集群”部分和附录 B 以获得 createfs.vbs Adsdevice /edit mnhp11n3 /setvar FileShare "%systemdrive%\scripts\createfs.bat"
回复Comments
作者:
{commentrecontent}