VMware vSphere Web Services SDK编程指南(十二 虚拟机配置)- 12.2 创建虚拟机及虚拟机模板

来源:互联网 发布:mac mini a1176 t5550 编辑:程序博客网 时间:2024/05/18 03:08

12.2 创建虚拟机及虚拟机模板


要创建一个虚拟机,使用 Folder.CreateVM_Task 方法,该方法以 VirtualMachineConfigSpec 数据对象作为入参,VirtualMachineConfigSpec 允许你指定你所需创建虚拟机的属性。

如果你需要几个相同的虚拟机,你可以将一个现有的虚拟机转换为一个模板,并从模板中创建多个副本(克隆),你还可以通过直接克隆现有的虚拟机来创建多个虚拟机。

虚拟机是你 vSphere 环境下重要元素,通过调用 Folder.CreateVM_Task 来创建一个虚拟机,并通过使用 VirtualMachine 托管对象的属性和方法来配置虚拟机,大多数属性指向的数据对象作为这些方法的输入。下面的类图显示了其中一些属性和方法。

12.2.1 使用 VirtualMachineConfigSpec 创建虚拟机

使用 Folder.CreateVM_Task 方法通过指定虚拟机的属性创建虚拟机,你必须指定一个主机或一个资源池(或两者)。该虚拟机使用来自主机或资源池的 CPU 和内存资源。

调用 CreateVM_Task 方法

通过调用 Folder.CreateVM_Task 方法及下面的参数创建虚拟机:

■   _this – Folder 你想要放置虚拟机的位置

■   config – VirtualMachineConfigSpec 数据对象,指定了 CPU、内存、网络等,查看用 VirtualMachineConfigSpec 指定虚拟机属性

■   pool – Resource pool,用于虚拟机从中提取资源

■   host – HostSystem 托管对象,表示运行虚拟机的目标主机,如果你是在独立主机上调用该方法,可忽略该参数;如果目标主机是 VMware DRS 集群的一部分,那么这个参数是可选的;如果没有指定主机,系统将选择一个主机。


注意:所有对象必须位于相同的 datacenter。


用 VirtualMachineConfigSpec 指定虚拟机属性

虚拟机的实际定制是通过将 VirtualMachineConfigSpec 的属性作为一个参数传递给 Folder.CreateVM_Task 接口来实现的。

例如,你可以指定虚拟机的名称、启动选项、cpu数量和内存, 所有的 VirtualMachineConfigSpec 的属性都是可选的以支持增量改变。

下面从 VMCreate 示例程序截取的代码片段说明了如何定义一个 VirtualMachineConfigSpec 。

Example: 定义一个 VirtualMachineConfigSpec 数据对象

VirtualMachineConfigSpec vmConfigSpec = new VirtualMachineConfigSpec();...vmConfigSpec.setName(“MyVM”);vmConfigSpec.setMemoryMB(new Long(Integer.parseInt 500));vmConfigSpec.setNumCPUs(Integer.parseInt 4);vmConfigSpec.setGuestId(cb.get_option("guestosid"));...

在 VMware SDK 中的 SDK/samples/Axis/java/com/vmware/apputils/vim/VMUtils.java 示例定义了一个更加全面的虚拟机,它还包括软盘、CD-ROM、磁盘和虚拟网卡。

当创建虚拟机后,虚拟机文件就被添加到虚拟机的存储位置。查看虚拟机文件这节

额外的配置信息

VirtualMachineConfigInfo 和 VirtualMachineConfigSpec 对象提供了 extraConfig 属性用于额外的信息配置,extraConfig 属性是一个确认配置选项的 key/value 键值对数组,服务器为虚拟机将 extraConfig 选项存放子啊 .vmx 文件内。

随着 vSphere API 从版本到版本的演变,一个 extraConfig 选项可能成为一个标准配置属性,它是已定义的库存数据模型的一部分。在这种情况下,你必须使用标准数据模型属性来访问,不能使用 extraConfig 属性。

12.2.2 创建虚拟机模板

模板可以让你创建多个相同特性的虚拟机,如分配给 CPU 和内存的资源,或者虚拟硬件的类型。虚拟机模板是一个虚拟机,但不能启动,并且没有和资源池关联。

通过调用 VirtualMachine.MarkAsTemplate,你可以将任何关机的虚拟机转换成一个模板,在转换完之后,原始的虚拟机不再存在。你可以使用该模板去创建多个相同配置的克隆。

12.2.3 克隆虚拟机

克隆是虚拟机的副本,虚拟机和克隆两者主要的区别是 VirtualMachine.config.template 被设置为 true。

可以以下方式创建一个克隆:

■   如果你不再需要一个虚拟机的特定实例,但是想要将虚拟机的配置作为一个模板,可以使用 VirtualMachine.MarkAsTemplate 方法,该方法设置 config.template 属性为 true,并禁用虚拟机。

■   如果你想用一个存在的虚拟机作为模板,而且保留该虚拟机,就调用 VirtualMachine.CloneVM_Task 方法创建一个虚拟机的副本。

如果你使用 VirtualMachine.CloneVM_Task 方法,你可以定制确定的克隆属性,通过当你调用该方法所传入 VirtualMachineCloneSpec 数据对象中指定。

下面 VMClone.java 中的代码片段说明了如何定制一个克隆并为其指定一个新位置。

Example: Cloning a Virtual Machine

VirtualMachineCloneSpec cloneSpec = new VirtualMachineCloneSpec();VirtualMachineRelocateSpec relocSpec = new VirtualMachineRelocateSpec();cloneSpec.setLocation(relocSpec);cloneSpec.setPowerOn(false);cloneSpec.setTemplate(false);String clonedName = cloneName;ManagedObjectReference cloneTask= service.cloneVM_Task(vmRef, vmFolderRef, clonedName, cloneSpec);

VirtualMachine.CloneVM_Task 方法以源虚拟机、目标 folder、name 及 VirtualMachineCloneSpec 作为参数。

VirtualMachineCloneSpec 数据对象包括位置、电源状态、该克隆是否作为模板。反过来,位置是一个 VirtualMachineRelocateSpec 数据对象,指定目标位置(数据存储、磁盘和主机或资源池),在磁盘上执行的任何转换。

12.2.4 模板转换为虚拟机

可以将一个模板更改为一个操作虚拟机。

■   要将模板转换为虚拟机,在模板上调用 MarkAsVirtualMachine 方法,必须为虚拟机指定一个资源池及主机(可选的),主机和资源池必须在同一个资源池下,当该操作完成,模板不再存在。

■   要保留模板,在模板上通过调用 CloneVM_Task 方法克隆模板,在 VirtualMachineCloneSpec (该方法的 spec 参数),设置 template 属性为 false。

12.2.5 访问虚拟机信息

当你创建完一个虚拟机后,可以通过 VirtualMachineConfigInfo 属性获取有关该虚拟机的信息,查阅 API 参考手册 获取完整列表。

检查默认文件

当你创建完一个虚拟机后,在 VirtualMachineConfigSpec.files 属性中指定的目录内就生成了若干文件,相关文件如下表。

虚拟机文件列表

文件 示例用法 文件描述 文件格式 .vmx vmname.vmx 虚拟机配置文件 ASCII .vmxf vmname.vmxf 其他虚拟机配置文件 ASCII .vmdk vmname.vmdk 虚拟磁盘文件 ASCII .flat.vmdk vmname.flat.vmdk 以二进制格式预分配的虚拟磁盘 Binary .vswp vmname.vswp Swap 文件 .nvram vmname.nvram 非易失性内存(Non-volatile RAM),存储虚拟机BIOS 信息 .vmss vmname.vmss 虚拟机挂起文件 .log vmware.log 虚拟机日志文件 ASCII #.log Vmware-#.log Old虚拟机日志文件, # 从1开始 ASCII .vmtx vmname.vmtx 虚拟机临时文件 ASCII

如果你使用快照,下面的其他文件可能是可用的。查阅 Snapshots.

虚拟机快照文件

文件 示例用法 文件描述 .vmsd vmname.vmsd 虚拟机快照文件 .vmsn vmname.vmsn 虚拟机快照数据文件 **.delta.vmdk **.delta.vmdk 快照差异文件。随着快照的增多,先前的数字扩展增大 **.vmdk vmname.**.vmdk 快照元数据 -Snapshot#.vmsn vmname-Snapshot#.vmsn 虚拟机内存快照,快照大小和虚拟机最大内存相等

检查默认设备

当创建虚拟机时,同时也创建了一系列的默认设备,基于与你的SDK相关的硬件版本,你可以使用 EnvironmentBrowser.QueryConfigOption 方法查看这些设备。例如,默认创建的 IDE 控制器。这些默认的许多设备中都包含无法更改的属性。

但是,你可以添加下列可选设备到默认设备集:VirtualSerialPort、 VirtualParallelPort、VirtualFloppy、VirtualCdrom、VirtualUSB、VirtualEthernetCard、VirtualDisk 和 VirtualSCSIPassthrough。


注意:不要试着使用 VirtualMachineConfigSpec.deviceChange 方法(在添加设备到虚拟机小节内)改变默认设备属性,因为 deviceChange 方法不适用于默认的设备属性。




原文:
VMware vSphere 6.5 Documentation Center:Creating Virtual Machines and Virtual Machine Templates

阅读全文
0 0
原创粉丝点击