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.
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