北京城乡建设和住房门户网站,长沙编程培训学校哪家好,网站搭建好后被移动宽带屏蔽怎么办,网站构成的作用需求介绍#xff1a; 之前已经使用pyvmomi库实现了虚拟机的自动备份#xff0c;不过由于备份的虚拟机都是较为重要的系统#xff0c;磁盘都是厚置备模式#xff0c;终于有一天#xff0c;备份目标的空间不够了#xff0c;导致几个虚拟机无法备份。在不想增加磁盘的情况下…需求介绍 之前已经使用pyvmomi库实现了虚拟机的自动备份不过由于备份的虚拟机都是较为重要的系统磁盘都是厚置备模式终于有一天备份目标的空间不够了导致几个虚拟机无法备份。在不想增加磁盘的情况下想着能不能把磁盘的厚置备模式改成thin精简模式是不是就可以节省空间了呢
过程介绍 pyvmomi的示例程序比较简单这个看起来不是很高级的需求竟然没有看了下手动操作克隆时是可以修改的就想着肯定是可以实现的。 从网上包括问了ChatGPT4.0 和文心都不太好使折腾了一天都有些气馁了。还是去翻官网文档说实话有些费劲vsphere的功能确实强但文档也确实复杂至少pyvmomi的是这样。 总结下
虚拟机克隆时的参数很简单主要配置参数都在CloenSpec这个对象中指定包括目标主机、存储、资源池等。在这个对象中主要有RelocateSpec 和 configSpec两个对象在这两个对象中都有deviceChange这个子对象是网上找到的资料主要修改的目标。
1. 首先官网说clonespec 的config 已经不用了。改用location下的deviechange。 2. RelocateSpec中的devicechange说明只有极少数配置可以改其他的都会被忽略。网上的大部分文章都是修改这个devicechange的所以都没有效果。 3. 上图中RelocateSpec中的disk 表明可以指定磁盘参数的。进去看下 RelocateSpec的disk参数是一个vim.vm.RelocateSpec.DiskLocator的列表而DiskLocator对象包含有diskID、diskBackingINfo等信息diskbakcingInfo对象中的VirtualDiskFlatVer2BackingInfo中有thinProvisioned参数来指定磁盘格式。 感觉就像是俄罗斯套娃一个对象包含着另外的对象一层层的你不知道需要的参数在那一层的口袋里。
4. 这里还遇到一个难题就是DiskLocator对象中的diskId参数怎么指定 问了ChatGPT4.0 和文心一言给出的例子是将设备出现的顺序当成diskId系统一直报错说diskId指定不对。 还是ChatGPT4 好一些 直接提示了diskId是virtualdisk设备的key属性不是排序和索引。 把事情搞清楚了问题就简单了
1. 通过源VM的设备信息获取到有多少个磁盘并获取对应的key值作为diskLocator的diskId参数。 for device in source_vm_inst.config.hardware.device: if isinstance(device, vim.vm.device.VirtualDisk): diskId device.key
2. 对每个磁盘组装一个diskLocator对象 disk_locator vim.vm.RelocateSpec.DiskLocator() disk_locator.datastore datestore #这个也是必选参数就是目标VM的存储对象 disk_locator.diskId device.key disk_locator.diskBackingInfo vim.vm.device.VirtualDisk.FlatVer2BackingInfo() disk_locator.diskBackingInfo.thinProvisioned True disk_change.append(disk_locator)
3. 定义cloneSpec和relocateSPec对象将参数注入进去 clone_spec vim.vm.CloneSpec() relocate_spec vim.vm.RelocateSpec() relocate_spec.disk disk_change # 将磁盘的配置信息注入到relocatespec的disk参数中 clone_spec.location relocate_spec # 将relocatespec配置信息注入clonespec中。
4. 剩下的事情就是交给Clone Task去完成克隆任务然后查看克隆后的虚拟机磁盘是否已经是精简模式。 最后 chatGPT 4.0 真的很强可以看到给的代码大部分直接可用下一个10年就是AI的时代错过了互联网错过了移动互联网不要错过AI。