Citrix XenServer – restart zawieszonej maszyny wirualnej

Konrad Kowalski
Citrix XenServer

Raz na jakiś czas administrując Citrixowymi XenSerwerami możemy spotkać się z różnymi niestandardowymi problemami. Jedną z takich sytuacji może być zawieszona maszyna wirtualna (brak wirtualnej konsoli, brak połączenia z siecią, ogólny „brak kontaktu” 🙂 ).

Jeśli wszystkie znane nam próby przywrócenia maszyny zawiodły i jesteśmy pewni, że nie ma to związku z żadnym problemem hardware’owym/storage’owym możemy pokusić się o bardziej ryzykowne próby przywrócenia maszyny do życia. Jedną z czynności, którą możemy wykonać reset maszyny wirtualnej.

W pierwszej kolejności, możemy spróbować zrestartować maszynę za pomocą XenCenter.

Citrix XenCenter - niepowodzenie restartu

Ale jak to z XenCenter bywa, zazwyczaj przy niestandardowych problemach niewiele możemy zrobić. Powyższy komunikat informuję nas, że żądana operacja (np. restartu, force shutdown) nie może zostać wykonana ze względu na inną operację, która aktualnie trwa i dotyczy naszej maszyny wirtualnej. Musimy zalogować się na serwer poprzez SSH i wydać kilka komend z linni poleceń, która daje dużo większe możliwości niż nakładka w postaci XenCenter.

Zanim zaczniemy restartować/wyłączać maszynę, pierwsza rzeczą którą dobrze by było wykonać jest próba restartu toolstack’a:

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: OK                                          [  OK  ]
done.

Po restarcie toolstacka warto zajrzeć do XenCenter (połączenie powinno zostać zerwane), czasem po wykonaniu tej czynności udaje się uzyskać ekran maszyny wirtualnej.

Następnym krokiem jest upewnienie się czy, rzeczywiście nie ma aktywnych zadań dotyczących naszej VM:

xe task-list

Polecenie powinno zwrócić pusty wynik, lub nie powinno zawierać uuid’a naszej maszyny.

Aby poznać poznać uuid naszej maszyny wirtualnej należy wydać polecenie:

xe vm-list

:

uuid ( RO)           : b666ccf1-c77-d60c-44f6-6978abdb0fb
     name-label ( RW): Berlioz
    power-state ( RO): running

Jak widać nasza maszyna mimo, że nie działa posiada nadal status – uruchomiona.

Jeśli nadal nie możemy dokonać restartu maszyny przez XenCenter, możemy spróbować dokonać tego z linii komend. Do wyboru mamy dwa polecenia vm-reboot i vm-shutdown.

xe vm-reboot uuid=b666ccf1-c77-d60c-44f6-6978abdb0fb force=true
xe vm-shutdown uuid=b666ccf1-c77-d60c-44f6-6978abdb0fb force=true

W niektórych przypadkach obie mogą na niewiele się zdać:

Another operation involving the object is currently in progress
class: VM
object: b666ccf1-c77-d60c-44f6-6978abdb0fb (Berlioz)

Jeśli spotkamy się z taką sytuacją, możemy użyć polecenia list_domains

id |                               uuid |  state
10 | b666ccf1-c77-d60c-44f6-6978abdb0fb |      H

Po jego wykonaniu zapamiętujemy id naszej maszyny wirtualnej (w przykładzie ID=10).

Następnie wydajemy kolejno polecenia:

/opt/xensource/debug/destroy_domain -domid 10

a następnie

xe vm-reboot uuid=b666ccf1-c77-d60c-44f6-6978abdb0fb force=true

Po wykonaniu tych poleceń maszyna wirtualna powinna się zrestartować 🙂

Dodaj komentarz