如何在XenServer中使用Python为VM添加DVD驱动器

4 投票
3 回答
5615 浏览
提问于 2025-04-16 23:28

我想在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驱动器和虚拟机连接起来。

撰写回答