Я переношу кучу виртуальных машин со старой машины на новую. В старой версии использовались собственные сценарии и логические тома lvm, в новой - libvirt и простые файлы. Конфиги довольно единообразны, но некоторые из виртуальных машин работают безупречно на новой машине, в то время как я просто не могу заставить работать другие. Симптомом является то, что после загрузки начального ramdisk я вижу экран, на котором в BIOS указано «Загрузка с жесткого диска».
Хороший vm на старой машине:
/usr/bin/qemu-system-x86_64 -enable-kvm -cpu host -name airesisdb -smp 1 -m 1024 -vnc 127.0.0.1:10 -monitor telnet:127.0.0.1:10010,server,nowait -daemonize -localtime -usb -usbdevice tablet -net tap,ifname=vm-airesisdb,script=no -net nic,macaddr=02:13:37:00:00:10,model=virtio -rtc base=utc,clock=host,driftfix=slew -pidfile /var/run/kvm/airesisdb.pid -boot c -drive index=0,media=disk,if=virtio,boot=on,file=/dev/vg/airesisdb,cache=writeback -drive index=1,media=disk,if=virtio,file=/dev/vg/airesisdb_2,cache=writeback
"Плохая виртуальная машина" на старой машине (там отлично работает):
/usr/bin/qemu-system-x86_64 -enable-kvm -cpu host -name tomcat -smp 1 -m 1024 -vnc 127.0.0.1:12 -monitor telnet:127.0.0.1:10012,server,nowait -daemonize -localtime -usb -usbdevice tablet -net tap,ifname=vm-tomcat,script=no -net nic,macaddr=02:13:37:00:00:12,model=virtio -rtc base=utc,clock=host,driftfix=slew -pidfile /var/run/kvm/tomcat.pid -boot c -drive index=0,media=disk,if=virtio,boot=on,file=/dev/vg/tomcat,cache=writeback
Файл libvirt xml хорошей виртуальной машины на новой машине:
<domain type='kvm' id='34'>
<name>airesisdb</name>
<uuid>c591e02e-44f4-0098-4656-fb0acca557fb</uuid>
<memory unit='KiB'>1048576</memory>
<currentMemory unit='KiB'>1048576</currentMemory>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='i686' machine='pc-1.1'>hvm</type>
<boot dev='cdrom'/>
</os>
<features>
<acpi/>
</features>
<cpu mode='host-model'>
<model fallback='allow'/>
</cpu>
<clock offset='localtime'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/usr/bin/kvm</emulator>
<disk type='block' device='disk'>
<driver name='qemu' type='raw' cache='writeback'/>
<source dev='/var/vm-storage/airesisdb'/>
<target dev='vda' bus='virtio'/>
<alias name='virtio-disk0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</disk>
<disk type='block' device='disk'>
<driver name='qemu' type='raw' cache='writeback'/>
<source dev='/var/vm-storage/airesisdb_2'/>
<target dev='vdb' bus='virtio'/>
<alias name='virtio-disk1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</disk>
<controller type='usb' index='0'>
<alias name='usb0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
</controller>
<interface type='network'>
<mac address='52:54:00:74:65:bd'/>
<source network='public'/>
<target dev='vm-airesisdb'/>
<model type='virtio'/>
<alias name='net0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<input type='tablet' bus='usb'>
<alias name='input0'/>
</input>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='5905' autoport='yes'/>
<video>
<model type='cirrus' vram='9216' heads='1'/>
<alias name='video0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
<memballoon model='virtio'>
<alias name='balloon0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</memballoon>
</devices>
<seclabel type='none'/>
</domain>
Плохой vm на новой машине, плохо себя ведёт:
<domain type='kvm' id='46'>
<name>tomcat</name>
<uuid>12059a28-ad19-a4fe-fa71-0af26b8cbb3e</uuid>
<memory unit='KiB'>1048576</memory>
<currentMemory unit='KiB'>1048576</currentMemory>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='i686' machine='pc-1.1'>hvm</type>
<boot dev='cdrom'/>
</os>
<features>
<acpi/>
</features>
<cpu mode='host-model'>
<model fallback='allow'/>
</cpu>
<clock offset='localtime'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/usr/bin/kvm</emulator>
<disk type='block' device='disk'>
<driver name='qemu' type='raw' cache='writeback'/>
<source dev='/var/vm-storage/tomcat'/>
<target dev='vda' bus='virtio'/>
<alias name='virtio-disk0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</disk>
<disk type='block' device='disk'>
<driver name='qemu' type='raw' cache='writeback'/>
<source dev='/var/vm-storage/tomcat'/>
<target dev='vdb' bus='virtio'/>
<alias name='virtio-disk1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</disk>
<controller type='usb' index='0'>
<alias name='usb0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
</controller>
<interface type='network'>
<mac address='52:54:00:4b:18:31'/>
<source network='private'/>
<target dev='vm-tomcat'/>
<model type='virtio'/>
<alias name='net0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<input type='tablet' bus='usb'>
<alias name='input0'/>
</input>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='5906' autoport='yes'/>
<video>
<model type='cirrus' vram='9216' heads='1'/>
<alias name='video0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
<memballoon model='virtio'>
<alias name='balloon0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</memballoon>
</devices>
<seclabel type='none'/>
</domain>
Хороший vm запускает это внутри:
Linux airesisdb 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
Плохой vm запускает это внутри:
Linux sso.edemokraciagep.org 3.16.0-60-generic #80~14.04.1-Ubuntu SMP Wed Jan 20 13:37:48 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
старая хост-машина запускает это:
Linux 81.7.14.91 4.0.0-sabayon #1 SMP Fri Apr 17 08:09:22 UTC 2015 x86_64 AMD Phenom(tm) II X6 1055T Processor AuthenticAMD GNU/Linux
новая хост-машина запускает это:
Linux adanarancs 3.2.0-4-amd64 #1 SMP Debian 3.2.73-2+deb7u2 x86_64 GNU/Linux
ii libvirt-bin 0.9.12.3-1+deb7u1 amd64 programs for the libvirt library
ii libvirt0 0.9.12.3-1+deb7u1 amd64 library for interfacing with different virtualization systems
Я пробовал разные функции, режимы процессора, загружал разные ядра с разными параметрами, но безуспешно.
Есть идеи, что может быть причиной проблемы?
В своем сообщении вы используете -cpu host
как на старой, так и на новой машине.
Хотя, как правило, это не должно быть проблемой при миграции виртуальных машин, особенно если на новой машине установлен ЦП той же марки, что и на старой.
Однако в некоторых случаях это может вызвать проблемы.
Вы можете попробовать вручную указать тип ЦП на новой машине для типа ЦП, который соответствует старой машине, или найти тип ЦП на старой машине, который работает, а затем использовать его на новой машине.
Вы можете не получить все преимущества нового оборудования новой машины таким образом, но, по крайней мере, виртуальная машина будет работать на новой машине, и если вы выберете правильный тип процессора, он должен, по крайней мере, быть на одном уровне. со старой машиной.