IRQL_NOT_LESS_OR_EQUAL após mover o convidado do Windows XP para o novo host da máquina virtual

1

Eu tenho dois Virtual Machine Servers, ambos são máquinas de 64 bits de especificação similar, mesmo processador, etc. Ambos estão executando o KVM com discos baseados em LVM. Uma máquina está usando o CentOS 6 Minimal como o SO Host, a outra usa o Ubuntu Server 11.04.

Mudei os discos da máquina convidada usando dd sobre ssh, enquanto os convidados estavam desligados.

Eu posso mover as máquinas convidadas do servidor Ubuntu entre os dois hosts e elas funcionam muito bem em ambos. Minha máquina de convidado de Windows foi criada no anfitrião de Ubuntu e corre bem lá, mas adquire o Erro de Tela Azul imediatamente em inicializar quando eu tento executar isto no anfitrião de CentOS.

O erro é lado a lado: IRQL_NOT_LESS_OR_EQUAL e diz:

STOP: 0x0000000A (0x00001016, 0x00000002, 0x00000000, 0x804F8FEC)

As informações de suporte da Microsoft parecem indicar um problema de hardware e sugerem coisas como atualizações do BIOS e remoção de componentes do computador. Obviamente, esse não é o problema aqui, já que o hardware é virtualizado.

Eu tentei mover o disco de convidado novamente para garantir que os dados não foram danificados durante a movimentação, mas isso não resolveu o problema.

Alguém mais encontrou esse problema ao tentar mover máquinas convidadas do Windows entre hosts KVM? Existe alguma coisa que possa ser feita para permitir que o Windows se mova suavemente de uma máquina para outra?

Meu entendimento é que, com o hardware virtualizado, o sistema vê os mesmos dispositivos de hardware em qualquer máquina e, portanto, pode usar os mesmos drivers, pois o hardware real está oculto no sistema operacional. Existem exceções para isso, onde os drivers podem ser um problema? E por último, existe alguma maneira (além de uma reinstalação completa do Windows) para se recuperar deste problema?

ATUALIZAÇÃO:

Definição da máquina XML:

<domain type='kvm'>
  <name>xpvm2</name>
  <uuid>6ddec00b-9f00-29ad-5197-98264c24cabf</uuid>
  <memory>1048576</memory>
  <currentMemory>1048576</currentMemory>
  <vcpu>1</vcpu>
  <os>
    <type arch='x86_64' machine='rhel6.2.0'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <pae/>
  </features>
  <clock offset='localtime'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/libexec/qemu-kvm</emulator>
    <disk type='block' device='disk'>
      <driver name='qemu' type='raw'/>
      <source dev='/dev/mapper/mainvg-vm_xpvm2'/>
      <target dev='hda' bus='ide'/>
      <address type='drive' controller='0' bus='0' unit='0'/>
    </disk>
    <controller type='ide' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <interface type='bridge'>
      <mac address='52:54:00:f8:3a:21'/>
      <source bridge='br0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    <serial type='pty'>
      <target port='0'/>
    </serial>
    <console type='pty'>
      <target type='serial' port='0'/>
    </console>
    <input type='tablet' bus='usb'/>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='-1' autoport='yes'/>
    <video>
      <model type='vga' vram='9216' heads='1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
    <memballoon model='virtio'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </memballoon>
  </devices>
</domain>

UPDATE 2

ps -ef | grep qemu (broken into lines for readability)

Máquina CentOS:

qemu      9742     1 99 Feb18 ?        22:51:48 /usr/libexec/qemu-kvm
-S -M rhel6.2.0 -enable-kvm
-m 1024
-smp 1,sockets=1,cores=1,threads=1
-name xpvm2
-uuid 6ddec00b-9f00-29ad-5197-98264c24cabf
-nodefconfig
-nodefaults
-chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/xpvm2.monitor,server,nowait
-mon chardev=charmonitor,id=monitor,mode=control
-rtc base=localtime
-> -no-shutdown
-drive file=/dev/mapper/mainvg-vm_xpvm2,if=none,id=drive-ide0-0-0,format=raw
-device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1
-> -netdev tap,fd=28,id=hostnet0
-device rtl8139,netdev=hostnet0,id=net0,mac=52:54:00:f8:3a:21,bus=pci.0,addr=0x3
-chardev pty,id=charserial0
-device isa-serial,chardev=charserial0,id=serial0
-usb
-device usb-tablet,id=input0
-vnc 127.0.0.1:5
-vga std
-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x4
-> root     23564  9518  0 17:38 pts/0    00:00:00 grep qemu

Máquina Ubuntu:

    105       1616     1  7 17:46 ?        00:00:14 /usr/bin/kvm -S -M pc-0.14
-enable-kvm
-m 1024
-smp 1,sockets=1,cores=1,threads=1
-name xpvm2
-uuid 6ddec00b-9f00-29ad-5197-98264c24cabf
-nodefconfig
-nodefaults
-chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/xpvm2.monitor,server,nowait
-> -mon chardev=charmonitor,id=monitor,mode=readline
-rtc base=localtime
-> -boot c
-drive file=/dev/mapper/mainvg-vm_xpvm2,if=none,id=drive-ide0-0-0,format=raw
-device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0
-> -netdev tap,fd=18,id=hostnet0
-device rtl8139,netdev=hostnet0,id=net0,mac=52:54:00:f8:3a:21,bus=pci.0,addr=0x3
-chardev pty,id=charserial0
-device isa-serial,chardev=charserial0,id=serial0
-usb
-device usb-tablet,id=input0
-> -vnc 127.0.0.1:0
-vga std
-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x4
-> myname      1626  1493  0 17:49 pts/0    00:00:00 grep --color=auto qemu

UPDATE 3:

Eu substituí o sistema operacional Ubuntu com o CentOS na máquina original. De volta ao host original, mas com o CentOS agora, a VM XP ainda não inicializa. Isso me leva a acreditar que o problema está relacionado à compatibilidade do CentOS com o Ubuntu, e não à compatibilidade do Hardware do Host. Ainda não faço ideia do que tentar.

    
por Nick 12.02.2012 / 17:09

3 respostas

1

Esse código de parada, com o primeiro parâmetro configurado para algo relativamente pequeno (neste caso, 0x1016) significa que algum código em execução no modo kernel, provavelmente um driver de dispositivo, tentou acessar o endereço de memória virtual 0x1016. Isso realmente só acontece quando esse código usa um ponteiro nulo (que é inválido) e, em seguida, adiciona alguma quantidade de deslocamento a esse, neste caso, 0x1016. Isso é quase certamente um bug de driver de dispositivo, causado pela mudança da VM de um ambiente para outro similar e relacionado, mas diferente.

Sugiro que você mova a VM de volta ao ambiente original e remova todos os drivers paravirtualizados. Em seguida, tente movê-lo. Se funcionar, reaplique os drivers paravirtualizados do novo ambiente.

    
por 20.02.2012 / 01:12
1

Eu vi esse erro toda vez que eu desliguei minha máquina virtual win7 do QEMU / KVM. E finalmente foi por causa do parâmetro arch. Eu mudo minha configuração xml de arch = i686 para arch = x86_64. Então eu poderia desligar essa máquina virtual. Espero que isso seja útil para você.

    
por 14.05.2013 / 10:16
0

Meu palpite é que o erro está vindo do tipo de máquina. Você tem:

<os>
  <type arch='x86_64' machine='rhel6.2.0'>hvm</type>
  <boot dev='hd'/>
</os>

Mas eu não acho que o Ubuntu possa rodar este tipo de máquina.

recursos do virsh | grep rhel

Isso é nulo na minha máquina Ubuntu. Possivelmente, altere isso para outro tipo de máquina do Windows que esteja na lista de recursos do ubuntu. Execute os recursos do virsh, procure em

<guest>
  <os_type>hvm</os_type>
  <arch name='x86_64'>

As minhas são:

  <os>
    <type arch='x86_64' machine='pc-0.12'>hvm</type>
    <boot dev='hd'/>
  </os>
    
por 20.02.2012 / 00:51