如何在XenServer中使用Python为VM添加DVD驱动器
我想在XenServer上通过Python给虚拟机添加一个DVD驱动器。我已经用Python创建了一个虚拟机,现在我想把主机上的DVD驱动器也连接到这个虚拟机上。为此,我需要为DVD驱动器创建一个VBD(虚拟块设备)。但是我不知道在VBD.Record中需要设置哪个属性。之前在连接磁盘时,我设置了VDI属性,然后就成功连接了。但对于DVD驱动器,我还没搞清楚需要设置哪个属性才能把这个光驱连接到XenServer上。请帮帮我……
3 个回答
0
使用Java给XenServer虚拟机添加光驱
首先,你需要连接到XenServer,并获取连接的变量。
public VBD makeCDDrive(VM vm) throws Exception {
VBD.Record vbdrecord = new VBD.Record();
vbdrecord.VM = vm;
vbdrecord.VDI = null;
vbdrecord.userdevice = "3";
vbdrecord.mode = Types.VbdMode.RO;
vbdrecord.type = Types.VbdType.CD;
vbdrecord.empty = true;
return VBD.create(connection, vbdrecord);
}
3
我不能直接帮你解决Python的部分,但我可以给你一些正确的命令行指令。
假设虚拟机(VM)已经有了DVD驱动器,你可以直接输入这些命令:
xe cd-list
xe vm-cd-insert uuid=... cd-name="xs-tools.iso"
xe vm-cd-eject uuid=...
.
.
如果你对vbd的内容感兴趣,下面的命令可以帮你找到DVD驱动器的vbd的uuid:
首先从一个单独的虚拟机开始。在XenCenter中弹出DVD。然后在命令行中连接到XenServer主机,运行:
xe vbd-list vm-uuid=...
如果虚拟机的DVD驱动器是空的,它的vdi-uuid会显示为<not in database>。这样你就可以准确找到你需要的vbd的uuid了!
想了解更多信息,可以查看这个链接:
http://docs.vmd.citrix.com/XenServer/5.0.0/1.0/en_gb/guest.html
2
我在我的博客上写过这个:
sr=session.xenapi.SR.get_by_name_label("DVD drives") record_dvd=session.xenapi.SR.get_record(sr[0]) VDI_dvd=record_dvd["VDIs"] vbdconnectcd={'VDI':VDI_dvd[0], 'VM':VM_ref, 'userdevice':"1", 'mode':"RO", 'type':"cd", 'bootable':True, 'unpluggable':True, 'empty':False, 'other_config':{}, 'qos_algorithm_type':'', 'qos_algorithm_params':{}} vbdref1=session.xenapi.VBD.create(vbdconnectcd)
这里的
VM_ref
是指我们想要添加DVD驱动器的新虚拟机的uuid
。每个物理DVD驱动器都有它自己的VDI,这个信息存储在它的属性里。我们可以获取这个VDI,并将它作为参数之一,来创建一个VBD,这样就可以把DVD驱动器和虚拟机连接起来。