Sunday, February 26, 2012

MV do XEN "presa" num estado qualquer


A Máquina Virtual (designada por MV daqui em diante) em questão, estava "presa" depois de uma ou duas tentativas forçadas de restart ou shutdown, tentativas estas sem efeito obviamente.

Comecei a investigar segundo indicação dum colega e amigo e a solução passou por meter a mão na massa em vez de tentar resolver alguma coisa pelo interface de gestão (inútil nestes casos diga-se de passagem... OK, não totalmente serviu para ver em que máquina física a MV estava a correr). Entrei no virtualizador em que a MV estava a "correr" e passei a executei o seguinte:

[root@SERVER-XEN-B ~]# xe vm-list
(...)
uuid ( RO)           : 1234mpf4-aa00-bb11-cc22-abcdefghijkl
     name-label ( RW): MV-005 - lampserver.mpf.local
    power-state ( RO): running
(...)
[root@SERVER-XEN-B ~]# vm-reset-powerstate 1234mpf4-aa00-bb11-cc22-abcdefghijkl
-bash: vm-reset-powerstate: command not found 

(sim, enganei-me e pus esta linha aqui de propósito, para se lembrarem de quantas vezes nos enganamos a executar certas operações pois muitas vezes os erros excedem as tentativas bem sucessidas; era bom que estas operações não tivessem erros e fossem tão linares quanto o que por vezes é escrito aqui)

[root@SERVER-XEN-B ~]# xe vm-reset-powerstate 1234mpf4-aa00-bb11-cc22-abcdefghijkl
Error: This operation is extremely dangerous and may cause data loss. This operation must be forced (use --force).
[root@SERVER-XEN-B ~]# xe vm-reset-powerstate 1234mpf4-aa00-bb11-cc22-abcdefghijkl  --force
Error: Unknown field '1234mpf4-aa00-bb11-cc22-abcdefghijkl'
[root@SERVER-XEN-B ~]# xe vm-reset-powerstate vm=1234mpf4-aa00-bb11-cc22-abcdefghijkl  --force
The operation could not be performed because a domain still exists for the specified VM.

[root@SERVER-XEN-B ~]# /opt/xensource/bin/list_domains
id |                                 uuid |  state
 0 | 1234mpf4-aa00-bb11-cc22-444444444444 |     R
 1 | 1234mpf4-aa00-bb11-cc22-333333333333 |    B
33 | 1234mpf4-aa00-bb11-cc22-555555555555 |    B H
34 | 1234mpf4-aa00-bb11-cc22-111111111111 |    B H
37 | 1234mpf4-aa00-bb11-cc22-abcdefghijkl |      H <= esta!!!
39 | 1234mpf4-aa00-bb11-cc22-222222222222 |    B
[root@SERVER-XEN-B ~]#

[root@SERVER-XEN-B ~]# /opt/xensource/debug/destroy_domain -domid 37
[root@SERVER-XEN-B ~]# /opt/xensource/bin/list_domains
id |                                 uuid |  state
id |                                 uuid |  state
 0 | 1234mpf4-aa00-bb11-cc22-444444444444 |     R
 1 | 1234mpf4-aa00-bb11-cc22-333333333333 |    B
33 | 1234mpf4-aa00-bb11-cc22-555555555555 |    B H
34 | 1234mpf4-aa00-bb11-cc22-111111111111 |    B H
39 | 1234mpf4-aa00-bb11-cc22-222222222222 |    B
[root@SERVER-XEN-B ~]#

[root@SERVER-XEN-B ~]# xe vm-start vm=1234mpf4-aa00-bb11-cc22-abcdefghijkl
Error code: SR_BACKEND_FAILURE_46
Error parameters: , The VDI is not available [opterr=VDI c123890c-b123-4zx5-924y-x000an000a0a already attached RW],

ainda andei às voltas a ver se era alguma operação relacionada com os VDIs da Máquina em questão mas rapidamente concluí que poderiam ser tarefas por executar.

Verifiquei a lista e percebi logo que era mesmo isto pois isto foram tentativas infrutíferas de ligação à consola via interface de gestão.

[root@SERVER-XEN-B ~]# xe task-list
uuid ( RO)                : mpf0ba00-0e0d-0a0f-ac00-000c0cb00000
          name-label ( RO): Connection to VM console
    name-description ( RO):
              status ( RO): pending
            progress ( RO): 0.000


uuid ( RO)                : mpf0ba00-0e0d-0a0f-ac00-000c0cb00023
          name-label ( RO): Connection to VM console
    name-description ( RO):
              status ( RO): pending
            progress ( RO): 0.000


uuid ( RO)                : mpf0ba00-0e0d-0a0f-ac00-000c0cb000xx
          name-label ( RO): Connection to VM console
    name-description ( RO):
              status ( RO): pending
            progress ( RO): 0.000

[root@SERVER-XEN-B ~]# xe task-cancel uuid=mpf0ba00-0e0d-0a0f-ac00-000c0cb000xx
[root@SERVER-XEN-B ~]# xe task-cancel uuid=mpf0ba00-0e0d-0a0f-ac00-000c0cb00023
[root@SERVER-XEN-B ~]# xe task-cancel uuid=mpf0ba00-0e0d-0a0f-ac00-000c0cb00000

tentei cancelar as tarefas sem sucesso... ainda tentei fazer o mesmo com a opção force=true activada com o mesmo resultado: insucesso!

[root@SERVER-XEN-B ~]# xe task-list
uuid ( RO)                : mpf0ba00-0e0d-0a0f-ac00-000c0cb00000
          name-label ( RO): Connection to VM console
    name-description ( RO):
              status ( RO): pending
            progress ( RO): 0.000


uuid ( RO)                : mpf0ba00-0e0d-0a0f-ac00-000c0cb00023
          name-label ( RO): Connection to VM console
    name-description ( RO):
              status ( RO): pending
            progress ( RO): 0.000


uuid ( RO)                : mpf0ba00-0e0d-0a0f-ac00-000c0cb000xx
          name-label ( RO): Connection to VM console
    name-description ( RO):
              status ( RO): pending
            progress ( RO): 0.000

[root@SERVER-XEN-B ~]# man xe-toolstack-restart
No manual entry for xe-toolstack-restart
[root@SERVER-XEN-B ~]# xe-toolstack-restart
Stopping xapi: ..                                          [  OK  ]
Stopping the v6 licensing daemon:                          [  OK  ]
Stopping the memory ballooning daemon:                     [  OK  ]
Stopping perfmon:                                          [  OK  ]
Stopping the fork/exec daemon:                             [  OK  ]
Stopping the multipath alerting daemon:                    [  OK  ]
Starting the multipath alerting daemon:                    [  OK  ]
Starting the fork/exec daemon:                             [  OK  ]
Starting perfmon:                                          [  OK  ]
Starting the memory ballooning daemon:                     [  OK  ]
Starting the v6 licensing daemon:                          [  OK  ]
Starting xapi: .....start-of-day complete.                 [  OK  ]
done.

(pelos vistos ficou done para mim também como podem confirmar abaixo pois deixaram de existir tarefas pendentes)

[root@SERVER-XEN-B ~]# xe task-list
[root@SERVER-XEN-B ~]#

Depois disto fiz um start à VM através da interface de gestão (podê-lo-ão fazer pela linha de comandos também, julgo não haver problema algum) e a máquina voltou ao ar e está agora a verificar o estado dos discos e pouco depois deve voltar ao seu estado normal de funcionamento.

Provavelmente precisarão de fazer um connect à pool de virtualizaçào no sistema de gestão do Xen pois este depois do xe-toolstack restart perde ligação com o sistema de virtualização.

Espero que isto ajude alguém como me ajudou a mim, isto é um composto das minhas tentativas e de dois ou três tutoriais muito bons que encontrei online ao que se pode juntar alguma sorte também (esta conta sempre mal porque as coisas podem sempre correr diferentes do esperado).


No comments:

Post a Comment