繁体   English   中英

在Java中从vmware中的模板克隆vm时更改磁盘大小

[英]Change disk size while cloning vm from template in vmware in java

我对vmware非常陌生。 从模板创建虚拟机时,我需要更改硬盘大小。 基本上是克隆。 但是当我尝试执行时,它给我错误“ 指定的参数不是正确的device.key ”。

你能在这里帮我吗?

这是我的代码:

VirtualMachineRelocateSpec relocateSpec = new VirtualMachineRelocateSpec();
VirtualMachineCloneSpec cloneSpec = new VirtualMachineCloneSpec();
VirtualDeviceConfigSpec diskSpec = new VirtualDeviceConfigSpec();
diskSpec.setOperation(VirtualDeviceConfigSpecOperation.edit);
VirtualDisk vd = new VirtualDisk();
long diskSizeKB = 1000000;
int cKey = 1000;
vd.setCapacityInKB(diskSizeKB);
diskSpec.setDevice(vd);
vd.setControllerKey(cKey);
vd.setKey(1);
vd.setUnitNumber(2);
VirtualDiskFlatVer2BackingInfo diskfileBacking =  new VirtualDiskFlatVer2BackingInfo();
String fileName = "[TestDataStore]";
diskfileBacking.setFileName(fileName);
diskfileBacking.setDiskMode("persistent");
diskfileBacking.setThinProvisioned(true);
vd.setBacking(diskfileBacking);
relocateSpec.setDatastore(vmInstace.getDatastores()[0].getMOR());
relocateSpec.setHost(hostSystem.getMOR());
relocateSpec.setPool(resourcePool.getMOR());
cloneSpec.setPowerOn(false);
cloneSpec.setLocation(relocateSpec);
VirtualMachineConfigSpec vmSpec = new VirtualMachineConfigSpec();
vmSpec.setMemoryMB(4000L);
vmSpec.setNumCPUs(3);
vmSpec.setDeviceChange(new VirtualDeviceConfigSpec[] {diskSpec});
cloneSpec.setConfig(vmSpec);
Task task = vmInstace.cloneVM_Task((Folder) vmInstace.getParent(),"TestVM", cloneSpec);

VM的每个设备(磁盘,控制器等)都有自己的唯一密钥。 VM配置更改工作的方式是,您提供要更改的设备的key以及新配置。

在您的代码中,调用vd.setKey(1) ,VMware告诉您输入了无效的key

您从哪里获得值1? 如果我不得不猜测,它是任意选择的。 您将需要查看模板的配置,并从那里提取磁盘设备密钥。 然后在调用vd.setKey使用此密钥。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM