Kvm-Virtualization

libvirt 升級導致 vms 看不到驅動器(找不到啟動媒體)

  • April 16, 2013

我升級到 Ubuntu 12.04.1,現在 libvirt(通過 open nebula)成功執行 vms,但他們沒有找到 2 個驅動器(特別是引導驅動器)。一個是“hd”,另一個是“cdrom”。

機器啟動但失敗並顯示類似“boot media not found hd”的資訊(這是在 vnc 終端中,我沒有將輸出複製到任何地方,所以這不是逐字消息)。

我嘗試使用新版本的 qemu(通過 vmbuilder)建構一個新磁碟,這台新機器與舊機器有同樣的問題。

萬一這很重要(我不明白為什麼會這樣),我正在使用開放星雲來管理機器。

任何日誌中都沒有相關內容:sysloglibvirtdoned。也就是說,當機器啟動時,沒有任何有趣/異常的報告。

版本

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 錯誤 #485251 有關

qemu 和 kvm scsi 匯流排支持存在問題。只需將 vm 更改為使用 virtio(對於 opennebula,這意味著將上下文驅動器前綴從“s”即“vda”更改為“v”)。

引用自:https://serverfault.com/questions/452317