利用VMware Infrastructure SDK编程控制虚拟机集群(2)

简介:

接上回,继续整理针对虚拟机的各种操作。


5、创建与恢复快照

 
  1. /// <summary>  
  2. /// 创建快照 
  3. /// </summary>  
  4. public void CreateSnapshot()  
  5. {  
  6.     //虚拟机的资源路径,同前,本例是针对vm100打快照 
  7.     string path = "DataCenter/vm/vm100";  
  8.   
  9.     //根据虚拟机的资源路径获取资源的引用  
  10.     ManagedObjectReference vmRef = m_Service.FindByInventoryPath(m_Content.searchIndex, path);  
  11.     if(vmRef != null)  
  12.     {  
  13.         //调用服务实例上的CreateSnapshot_Task来创建虚拟机快照(异步),此处没有等待任务完成 
  14.         ManagedObjectReference taskRef = m_Service.CreateSnapshot_Task(vmRef, "SnapshotName""Description"truetrue);  
  15.     }  
  16.  
  17. /// <summary>  
  18. /// 恢复当前快照 
  19. /// </summary>  
  20. public void RevertToCurrentSnapshot()  
  21. {  
  22.     //虚拟机的资源路径,同前,本例是针对vm100恢复当前 
  23.     string path = "DataCenter/vm/vm100";  
  24.   
  25.     //根据虚拟机的资源路径获取资源的引用  
  26.     ManagedObjectReference vmRef = m_Service.FindByInventoryPath(m_Content.searchIndex, path);  
  27.     if(vmRef != null)  
  28.     {  
  29.         //调用服务实例上的RevertToCurrentSnapshot_Task来恢复虚拟机当前快照(异步),此处没有等待任务完成 
  30.         ManagedObjectReference taskRef = m_Service.RevertToCurrentSnapshot_Task(vmRef, null);  
  31.     }  
  32. }  


6、在同一台主机上从模板复制虚拟机

先要指出,模板本身也是虚拟机,以VI系统中它的类型就是VirtualMachine,只是有特殊属性标明它是模板,因此不能运行。

注意此方法要求源与目标在同一台主机上,后面会讲到如何在不同主机间复制。

 
  1. /// <summary>  
  2. /// 从模板部署虚拟机 
  3. /// </summary>  
  4. public void Deploy()  
  5. {  
  6.     //模板路径,与虚拟机相同,此例中模板名叫template100 
  7.     string templatePath = "DataCenter/vm/template100"
  8.     //根据路径获取此模板的引用 
  9.     ManagedObjectReference templateRef = m_Service.FindByInventoryPath(m_Content.searchIndex, templatePath); 
  10.     //folder的引用,即逻辑上存储新虚拟机的位置,固定是这样的 
  11.     ManagedObjectReference folderRef = m_Service.FindByInventoryPath(m_Content.searchIndex, "DataCenter/vm"); 
  12.     //资源池的引用,格式是“中心/host/主机名/Resources”,此例中我们将虚拟机部署到host10这台主机上 
  13.     ManagedObjectReference poolRef = m_Service.FindByInventoryPath(m_Content.searchIndex, "DataCenter/host/host10/Resources"); 
  14.  
  15.     //设置部署位置相关的参数 
  16.     VirtualMachineRelocateSpec vmRelocSpec = new VirtualMachineRelocateSpec(); 
  17.     vmRelocSpec.transform = VirtualMachineRelocateTransformation.sparse; 
  18.     vmRelocSpec.pool = poolRef; 
  19.  
  20.     //设定复制相关参数 
  21.     VirtualMachineCloneSpec vmCloneSpec = new VirtualMachineCloneSpec(); 
  22.     vmCloneSpec.template = false;        //新虚拟机不是模板 
  23.     vmCloneSpec.location = vmRelocSpec;  //存放位置 
  24.     vmCloneSpec.powerOn = true;          //部署完成后是否开机 
  25.  
  26.     //调用CloneVM_Task来克隆虚拟机(异步),此处没有等待任务完成 
  27.     ManagedObjectReference taskRef = m_Service.CloneVM_Task(templateRef, folderRef, vmName, vmCloneSpec); 
  28. }  


未完待续……




     本文转自 BoyTNT 51CTO博客,原文链接:http://blog.51cto.com/boytnt/1029417,如需转载请自行联系原作者


相关文章
|
2月前
|
虚拟化
vmware克隆虚拟机后没有ip地址的问题
解决vmware克隆虚拟机后没有内网ip的问题
|
3月前
|
SQL 存储 数据挖掘
【虚拟机数据恢复】VMware虚拟机文件被误删除的数据恢复案例
虚拟机数据恢复环境: 某品牌R710服务器+MD3200存储,上层是ESXI虚拟机和虚拟机文件,虚拟机中存放有SQL Server数据库。 虚拟机故障: 机房非正常断电导致虚拟机无法启动。服务器管理员检查后发现虚拟机配置文件丢失,所幸xxx-flat.vmdk磁盘文件和xxx-000001-delta.vmdk快照文件还在。服务器管理员在尝试恢复虚拟机的过程中,将原虚拟机内的xxx-flat.vmdk删除后新建了一个虚拟机,并分配了精简模式的虚拟机磁盘和快照数据盘,但原虚拟机内的数据并没有恢复。
【虚拟机数据恢复】VMware虚拟机文件被误删除的数据恢复案例
|
30天前
|
算法 虚拟化 C++
VMware虚拟机无法自适应和拖拽复制粘贴和共享目录问题
VMware虚拟机无法自适应和拖拽复制粘贴和共享目录问题
89 0
|
2天前
|
程序员 Linux KVM
【qemu虚拟化】将img镜像文件转换为VMware虚拟机
QEMU是一个开源的硬件虚拟化器,能在多种平台如x86、ARM、PowerPC上运行,支持虚拟化不同体系结构的操作系统。它具有硬件仿真、虚拟化支持、磁盘和网络仿真、快照回滚及可扩展性等特点。要使用QEMU,首先从[官网](https://www.qemu.org/download/)下载,然后通过命令行运行进行转换。转换后的vMDK文件可在VMware中导入,创建新的虚拟机进行使用。
38 1
【qemu虚拟化】将img镜像文件转换为VMware虚拟机
|
1月前
|
Linux 虚拟化 数据安全/隐私保护
使用VMware安装linux虚拟机
使用VMware安装linux虚拟机
使用VMware安装linux虚拟机
|
1月前
|
Ubuntu 安全 虚拟化
vmware虚拟机运行ubuntu等卡慢的解决办法
vmware虚拟机运行ubuntu等卡慢的解决办法
148 0
|
1月前
|
网络协议 Linux 开发工具
使用Xshell连接VMware上的Linux虚拟机
使用Xshell连接VMware上的Linux虚拟机
40 0
使用Xshell连接VMware上的Linux虚拟机
|
4天前
|
JavaScript Java Maven
云效产品使用常见问题之android sdk 构建出aar后,上传到私有maven仓库失败如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
3月前
|
安全 开发工具 Android开发
几个Flutter常见诊断错误与解决Android toolchain - develop for Android devices X Unable to locate Android SDK
几个Flutter常见诊断错误与解决Android toolchain - develop for Android devices X Unable to locate Android SDK
271 0
|
6月前
|
API 开发工具 Android开发
解决 Android App 上架 Google play后 ,签名变更,第三方sdk无法登录
解决 Android App 上架 Google play后 ,签名变更,第三方sdk无法登录
147 0