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

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 属性中指定的目录内就生成了若干文件,相关文件如下表。

虚拟机文件列表

文件示例用法文件描述文件格式
.vmxvmname.vmx虚拟机配置文件ASCII
.vmxfvmname.vmxf其他虚拟机配置文件ASCII
.vmdkvmname.vmdk虚拟磁盘文件ASCII
.flat.vmdkvmname.flat.vmdk以二进制格式预分配的虚拟磁盘Binary
.vswpvmname.vswpSwap 文件
.nvramvmname.nvram非易失性内存(Non-volatile RAM),存储虚拟机BIOS 信息
.vmssvmname.vmss虚拟机挂起文件
.logvmware.log虚拟机日志文件ASCII
#.logVmware-#.logOld虚拟机日志文件, # 从1开始ASCII
.vmtxvmname.vmtx虚拟机临时文件ASCII

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

虚拟机快照文件

文件示例用法文件描述
.vmsdvmname.vmsd虚拟机快照文件
.vmsnvmname.vmsn虚拟机快照数据文件
**.delta.vmdk**.delta.vmdk快照差异文件。随着快照的增多,先前的数字扩展增大
**.vmdkvmname.**.vmdk快照元数据
-Snapshot#.vmsnvmname-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
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值