将 URL 挂载为 cdrom/iso KVM/QEMU

将 URL 挂载为 cdrom/iso KVM/QEMU

我正在寻找一种将 ISO 安装为 CD-ROM 的方法,根据 libvirt 文档(如下所述),这应该是可行的,此外,在下面提到的问题中也是如此。

我知道这个问题,然而它已有 4 年多历史了,却从未真正得出任何有效的结论。

我举的例子来自:http://libvirt.org/formatdomain.html#elementsDisks

</disk>
  <disk type='network' device='cdrom'>
    <driver name='qemu' type='raw'/>
    <source protocol="http" name="url_path">
      <host name="hostname" port="80"/>
    </source>
    <target dev='hde' bus='ide' tray='open'/>
    <readonly/>
  </disk>

我无法让它工作,我只是得到:

启动失败:无法从 CDROM 读取(代码 0003)

实际使用的 XML 片段:

<disk type='network' device='cdrom'>
    <driver name='qemu' type='raw'/>
    <source protocol="http" name="/debian-cd/current/amd64/iso-cd/debian-9.5.0-amd64-netinst.iso">
      <host name="mirror.bytemark.co.uk" port="80"/>
    </source>
    <target dev='hdb' bus='ide' tray='open'/>
    <readonly/>
  </disk>

libvirtd (libvirt) 3.9.0 QEMU 模拟器版本 2.10.0

有人可以提供任何帮助或建议吗?

我也尝试过将包括 fqdn 在内的完整路径放入 url_path 中,无论是否包含 http://

答案1

我发现问题在于,http 在 centos 7 中的 qemu-kvm-ev 软件包中被列入了黑名单

您只能使用 https

有效的 XML 示例为:

<disk type='network' device='cdrom'>
    <driver name='qemu' type='raw'/>
    <source protocol="https" name="/debian-cd/current/amd64/iso-cd/debian-9.5.0-amd64-netinst.iso">
      <host name="mirror.bytemark.co.uk" port="443"/>
    </source>
    <target dev='hdb' bus='ide' tray='open'/>
    <readonly/>
  </disk>

请注意,您不能使用 hdc,因为它似乎是为本地 ISO 或物理 cdrom 直通保留的。

答案2

我尝试在现有的 libvirt 4.1.0 系统中将其中一个运行到现有的 VM 上:

    <disk type='network' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source protocol='https' path='/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1804.iso'>
        <host name='mirrors.edge.kernel.org' port='443'/>
      </source>
      <target dev='sdc' bus='sata'/>
      <readonly/>
      <address type='drive' controller='0' bus='0' target='0' unit='2'/>
    </disk>

XML 验证失败。

error: XML document failed to validate against schema: Unable to validate doc against /usr/share/libvirt/schemas/domain.rng
Extra element devices in interleave
Element domain failed to validate content

我怀疑有人很久以前就写了这些例子,认为最终可能会添加这个功能,但实际上并没有。

这些例子下面的解释性文字指出:

protocol属性指定访问所请求映像的协议。可能的值是“nbd”、“iscsi”、“rbd”、“sheepdog”、“gluster”或“vxhs”。

qemu 手册页也没有暗示可能存在这样的功能。

我认为您只是看到了文档错误。

相关内容