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

简介:

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


7、跨主机克隆虚拟机

网上资料比较少,当时费了很大劲才成功的,与同一台主机上的虚拟机克隆有区别。

 
  1. /// <summary>   
  2. /// 从模板部署虚拟机  
  3. /// </summary>   
  4. public void Deploy()   
  5. {   
  6.     //模板路径,我们假设template100这个模板在另一台主机上 
  7.     //后续的几步都与同一台主机上克隆没有区别 
  8.     string templatePath = "DataCenter/vm/template100"
  9.     ManagedObjectReference templateRef = m_Service.FindByInventoryPath(m_Content.searchIndex, templatePath); 
  10.     ManagedObjectReference folderRef = m_Service.FindByInventoryPath(m_Content.searchIndex, "DataCenter/vm"); 
  11.     ManagedObjectReference poolRef = m_Service.FindByInventoryPath(m_Content.searchIndex, "DataCenter/host/host10/Resources"); 
  12.  
  13.     //此处开始是关键 
  14.     //获取目标host的引用,路径是“数据中心/host/主机名/资源名”,默认资源名与主机名相同 
  15.     ManagedObjectReference hostRef = m_Service.FindByInventoryPath(m_Content.searchIndex, "DataCenter/host/host10/host10"); 
  16.  
  17.     //还需要获取目标主机存储的引用,用到的RetrievePropertiesForSingleObject方法是自定义的,主要是封装一下服务上的RetrieveProperties方法 
  18.     //获取hostRef上的datastore属性,最终的dataRef就是存储对象的引用 
  19.     ObjectContent[] contents = RetrievePropertiesForSingleObject(hostRef, new string[] { "datastore" }); 
  20.     ManagedObjectReference[] datastores = (ManagedObjectReference[])contents[0].propSet[0].val; 
  21.     ManagedObjectReference dataRef = datastores[0]; 
  22.  
  23.     //指定位置参数 
  24.     VirtualMachineRelocateSpec vmRelocSpec = new VirtualMachineRelocateSpec(); 
  25.     vmRelocSpec.pool = poolRef; 
  26.     vmRelocSpec.datastore = dataRef;   //这个很重要 
  27.     vmRelocSpec.transform = VirtualMachineRelocateTransformation.sparse; 
  28.  
  29.     //指定复制相关参数,与同主机复制相同 
  30.     VirtualMachineCloneSpec vmCloneSpec = new VirtualMachineCloneSpec(); 
  31.     vmCloneSpec.template = true
  32.     vmCloneSpec.location = vmRelocSpec; 
  33.     vmCloneSpec.powerOn = true
  34.  
  35.     //还是调用CloneVM_Task来克隆虚拟机(异步),此处没有等待任务完成 
  36.     ManagedObjectReference taskRef = m_Service.CloneVM_Task(templateRef, folderRef, destName, vmCloneSpec); 
  37. }   
  38.  
  39. /// <summary> 
  40. /// 获取单一对象的属性  
  41. /// </summary> 
  42. /// <param name="obj">对象</param> 
  43. /// <param name="properties">属性集合</param> 
  44. /// <returns>内容集合</returns> 
  45. private ObjectContent[] RetrievePropertiesForSingleObject(ManagedObjectReference obj, string[] properties) 
  46.     PropertySpec[] pSpec = new PropertySpec[] { new PropertySpec() }; 
  47.     pSpec[0].type = obj.type; 
  48.     pSpec[0].all = false
  49.     pSpec[0].pathSet = properties; 
  50.  
  51.     ObjectSpec[] obSpec = new ObjectSpec[] { new ObjectSpec() }; 
  52.     obSpec[0].obj = obj; 
  53.     obSpec[0].skip = true
  54.  
  55.     PropertyFilterSpec spec = new PropertyFilterSpec(); 
  56.     spec.propSet = pSpec; 
  57.     spec.objectSet = obSpec; 
  58.  
  59.     ObjectContent[] contents = m_Service.RetrieveProperties(m_Collector, new PropertyFilterSpec[] { spec }); 
  60.  
  61.     return contents; 


未完待续……




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


相关文章
|
13天前
|
存储 虚拟化
【2025最新】 神奇!VMware Workstation Pro虚拟机还原与删除功能,让你轻松应对各种场景!
删除和还原VMware虚拟机的操作步骤如下: **删除虚拟机:** 1. 选择要删除的虚拟机,右键点击并选择“移除”。 2. 这仅从列表中移除虚拟机,并未彻底删除。需前往VMware默认存储路径(如 `D:\VMware\data`),找到对应虚拟机文件夹并删除。 **还原虚拟机:** 1. 若误删虚拟机列表项目,可通过右键点击空白处,选择“打开”,找到保存虚拟机的路径文件夹。 2. 选择被删除虚拟机对应的 `.vmx` 配置文件并打开,即可在列表中恢复该虚拟机。 总结:VMware虚拟机可用于模拟多种操作系统和开发环境,掌握删除与还原技巧可提高使用效率。
60 8
【2025最新】 神奇!VMware Workstation Pro虚拟机还原与删除功能,让你轻松应对各种场景!
|
13天前
|
虚拟化
【2025最新】VMware Workstation Pro 虚拟机基础配置教程,方便你的神操作!
VMware Workstation Pro 是一款强大的虚拟化工具,本文简要介绍其基本配置与操作。安装后,用户可以通过“编辑菜单 &gt; 首选项”设置虚拟机保存路径、是否显示托盘图标等全局配置。新建虚拟机时,需选择操作系统类型、配置处理器、内存、网络和硬盘等参数。建议根据主机硬件性能合理分配资源,避免过度占用。创建完成后,用户可加载 ISO 镜像文件安装所需操作系统。通过这些步骤,您可以轻松搭建并管理多个虚拟环境。
65 8
【2025最新】VMware Workstation Pro 虚拟机基础配置教程,方便你的神操作!
|
13天前
|
存储 编解码 虚拟化
【2025最新】VMware Workstation Pro 虚拟机配置与安装VMware Tools 感受它的强大~
VMware Tools 是 VMware 虚拟机中自带的一种增强工具,能够显著提升虚拟机的性能和用户体验。它提供了优化的显卡驱动程序、文件共享与拖放功能、时间同步以及跨虚拟机和宿主机的复制粘贴功能。安装 VMware Tools 可以让虚拟机在 VMware 平台上运行得更加高效,并且对于老旧系统(如 Win98、Win2000、WinXP)也能提供必要的驱动支持。每个虚拟机都需要独立安装与其操作系统版本相匹配的 VMware Tools,以确保最佳兼容性和性能表现。
55 6
【2025最新】VMware Workstation Pro 虚拟机配置与安装VMware Tools 感受它的强大~
|
13天前
|
Web App开发 安全 Linux
【独家揭秘2025】VMware Workstation Pro虚拟机:免费安装教程大放送,一键解锁操作系统模拟神器!
VMware Workstation Pro 是由威睿(VMware)公司开发的一款功能强大的桌面虚拟化软件,允许用户在同一台物理计算机上同时运行多个操作系统,如Windows、..
47 2
【独家揭秘2025】VMware Workstation Pro虚拟机:免费安装教程大放送,一键解锁操作系统模拟神器!
|
4月前
|
Ubuntu 网络安全 虚拟化
VMware虚拟机ping不通原因排查及分析
下面以 VMware 虚拟机为例进行介绍。
2514 3
|
4月前
|
存储 SQL 数据库
虚拟化数据恢复—Vmware虚拟机误还原快照的数据恢复案例
虚拟化数据恢复环境: 一台虚拟机从物理机迁移到ESXI虚拟化平台,迁移完成后做了一个快照。虚拟机上运行了一个SQL Server数据库,记录了数年的数据。 ESXI虚拟化平台上有数十台虚拟机,EXSI虚拟化平台连接了一台EVA存储,所有的虚拟机都存放在EVA存储上。 虚拟化故障: 工组人员误操作将数年前迁移完成后做的快照还原了,也就意味着虚拟机状态还原到数年前,近几年数据都被删除了。 还原快照相当于删除数据,意味着部分存储空间会被释放。为了不让这部分释放的空间被重用,需要将连接到这台存储的所有虚拟机都关掉,需要将不能长时间宕机的虚拟机迁移到别的EXSI虚拟化平台上。
161 50
|
9月前
|
Unix Linux 虚拟化
虚拟机VMware知识积累
虚拟机VMware知识积累
|
5月前
|
安全 虚拟化 数据中心
Xshell 连接 VMware虚拟机操作 截图和使用
Xshell 连接 VMware虚拟机操作 截图和使用
143 4
|
5月前
|
Linux 虚拟化
vmware虚拟机安装2024(超详细)
vmware虚拟机安装2024(超详细)
555 6
|
5月前
|
虚拟化 网络虚拟化 网络架构
虚拟机 VMware Workstation 16 PRO 的网络配置
虚拟机 VMware Workstation 16 PRO 的网络配置
175 2

热门文章

最新文章