我升级到 Ubuntu 12.04.1,现在 libvirt(通过 open nebula)成功运行了 vms,但他们没有找到 2 个驱动器(特别是引导驱动器)。一个是“hd”,另一个是“cdrom”。
机器启动但失败并显示类似“boot media not found hd”的内容(这是在 vnc 终端中,我没有将输出复制到任何地方,所以这不是逐字的消息)。
我尝试使用新版本的 qemu(通过 vmbuilder)构建一个新磁盘,这台新机器与旧机器有同样的问题。
万一它很重要(我不明白为什么会这样)我正在使用开放星云来管理机器。
任何日志中都没有任何相关内容:syslog、libvirtd、oned。也就是说,当机器启动时,没有任何有趣/异常的报告。
版本
libvirt 0.9.8-2ubuntu17.4
qemu-kvm1.0+noroms-0ubuntu14.3
libvirt xml 配置部分(相关)
<os>
<type arch='x86_64' machine='pc-1.0'>hvm</type>
<boot dev='hd'/>
</os>
...
<devices>
<emulator>/usr/bin/kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/one//203/images/disk.0'/>
<target dev='sda' bus='scsi'/>
<alias name='scsi0-0-0'/>
<address type='drive' controller='0' bus='0' unit='0'/>
</disk>
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw'/>
<source file='/var/lib/one//203/images/disk.1'/>
<target dev='sdc' bus='scsi'/>
<readonly/>
<alias name='scsi0-0-2'/>
<address type='drive' controller='0' bus='0' unit='2'/>
</disk>
<controller type='scsi' index='0'>
<alias name='scsi0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</controller>
<memballoon model='virtio'>
<alias name='balloon0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</memballoon>
...
</devices>
libvirt/qemu 日志包含
2012-11-25 22:19:24.328+0000: starting up
LC_ALL=C PATH=/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/sbin:/bin QEMU_AUDIO_DRV=none /usr/bin/kvm -S -M pc-1.0 -enable-kvm -m 256 -smp 1,sockets=1,cores=1,threads=1 -name one-204 -uuid 4be6c276-19e8-bdc2-e9c9-9ca5352f2be3 -nodefconfig -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/one-204.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc -no-shutdown -device lsi,id=scsi0,bus=pci.0,addr=0x5 -drive file=/var/lib/one//204/images/disk.0,if=none,id=drive-scsi0-0-0,format=qcow2 -device scsi-disk,bus=scsi0.0,scsi-id=0,drive=drive-scsi0-0-0,id=scsi0-0-0,bootindex=1 -drive file=/var/lib/one//204/images/disk.1,if=none,media=cdrom,id=drive-scsi0-0-2,readonly=on,format=raw -device scsi-disk,bus=scsi0.0,scsi-id=2,drive=drive-scsi0-0-2,id=scsi0-0-2 -netdev tap,fd=18,id=hostnet0 -device rtl8139,netdev=hostnet0,id=net0,mac=02:00:c0:a8:00:68,bus=pci.0,addr=0x3 -netdev tap,fd=19,id=hostnet1 -device rtl8139,netdev=hostnet1,id=net1,mac=02:00:ad:f0:1b:94,bus=pci.0,addr=0x4 -usb -vnc 0.0.0.0:204 -vga cirrus -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x6
kvm: -device rtl8139,netdev=hostnet0,id=net0,mac=02:00:c0:a8:00:68,bus=pci.0,addr=0x3: pci_add_option_rom: failed to find romfile "pxe-rtl8139.rom"
kvm: -device rtl8139,netdev=hostnet1,id=net1,mac=02:00:ad:f0:1b:94,bus=pci.0,addr=0x4: pci_add_option_rom: failed to find romfile "pxe-rtl8139.rom"
这与QEMU Bug #485251 有关。
qemu 和 kvm scsi 总线支持有问题。只需将 vm 更改为使用 virtio(对于 opennebula,这意味着将上下文驱动器前缀从“s”更改为“v”,即“vda”)。