Tutoriel Linux

Zainstaluj agenta gościa QEMU w maszynie wirtualnej Debian Proxmox

Débutant6 min de lecture

Twoja maszyna wirtualna Debian uruchamia się, jej sieć działa, ale Proxmox wciąż wyświetla „Guest Agent not running” lub nie zwraca żadnych informacji. Zaznaczenie opcji QEMU Guest Agent w interfejsie nie wystarcza, aby nawiązać wymianę z gościem.

QEMU Guest Agent instaluje demon w Debianie i tworzy kanał zarządzania między maszyną wirtualną a hostem. Sprawdzisz obie strony, a następnie zlokalizujesz problem z konfiguracją, usługą lub urządzeniem, nie modyfikując sieci maszyny wirtualnej.

Komunikacja między Proxmox a maszyną wirtualną Debian z QEMU Guest Agent
Kanał zarządzania między hostem Proxmox a maszyną wirtualną Debian z QEMU Guest Agent.

Do czego służy QEMU Guest Agent w Proxmox ?

Maszyna wirtualna może działać normalnie bez agenta. Proxmox widzi wtedy maszynę wirtualną, ale nie ma takiego samego poziomu informacji o systemie Debian, który działa wewnątrz.

QEMU Guest Agent uruchamia qemu-ga w gościu. Demon wymienia się informacjami z hypervisorem za pośrednictwem urządzenia virtio-serial, które zazwyczaj wystawione jest w Debianie pod adresem /dev/virtio-ports/org.qemu.guest_agent.0. Proxmox może w ten sposób żądać informacji od maszyny wirtualnej, organizować czystą operację zamykania oraz koordynować zamrożenie, a następnie odmrożenie systemu plików podczas niektórych kopii zapasowych lub zrzutów stanu.

Dokumentacja oficjalna Proxmox oraz QEMU opisują ten ciąg hosta, kanał wirtualny i demon gościa. Agent nie zastępuje ani sterownika sieci VirtIO, ani DHCP, ani mostu, ani zapory.

Aktywacja agenta po stronie Proxmox przed dotknięciem Debiana

Najpierw zatrzymaj maszynę wirtualną, jeśli planujesz zmodyfikować jej konfigurację sprzętową. W interfejsie Proxmox otwórz maszynę wirtualną Debian, przejdź do Opcje, edytuj QEMU Guest Agent, a następnie aktywuj opcję. Sprawdź również VMID wyświetlany w interfejsie : będzie on używany tylko na hoście Proxmox.

Radziłbym sprawdzić tę opcję po stronie Proxmox przed zainstalowaniem pakietu w Debianie. W ten sposób oddzielisz brak kanału wirtualnego od braku prostej usługi.

Odpowiednik w linii poleceń podany przez Proxmox jest następujący :

qm set VMID --agent 1

Zastąp VMID numerycznym identyfikatorem swojej maszyny wirtualnej. Ta akcja aktywuje opcję po stronie hosta. Nie uruchamia usługi Debian i nie dowodzi obecności kanału virtio-serial.

Jeśli ustawienie zostało właśnie dodane i urządzenie nie pojawia się w gościu, wykonaj kontrolowane zatrzymanie, a następnie uruchomienie maszyny wirtualnej. Nie zakładaj, że hot plug będzie dostępny we wszystkich konfiguracjach.

Instalacja i uruchomienie qemu-guest-agent w Debianie

Otwórz terminal w maszynie wirtualnej Debian. Aktualizacja indeksu APT pozwoli uniknąć pracy z przestarzałymi metadanymi :

sudo apt-get update
sudo apt-get install qemu-guest-agent

Następnie sprawdź jednostkę systemd zamiast od razu wykonywać restart :

sudo systemctl status qemu-guest-agent --no-pager

Powinieneś uzyskać znaną usługę i stan active (running). Jeśli jest zainstalowana, ale nieaktywna, uruchom ją, a następnie włącz jej automatyczne uruchamianie w Debianie :

sudo systemctl start qemu-guest-agent
sudo systemctl enable qemu-guest-agent

Przeczytaj ponownie systemctl status po tych działaniach. Wiadomość o błędzie jest bardziej użyteczna niż kolejne identyczne próby. Instalacja pakietu nie wpływa na kartę sieciową, most ani konfigurację IP.

Sprawdzenie kanału virtio-serial w maszynie wirtualnej

Aktywna usługa może czekać na urządzenie, którego maszyna wirtualna nie przedstawia. Sprawdź używaną przez QEMU Guest Agent ścieżkę :

ls -l /dev/virtio-ports/org.qemu.guest_agent.0

Plik powinien być obecny. Jeśli go brakuje, ponowna instalacja pakietu nic nie rozwiąże. Najpierw sprawdź opcję QEMU Guest Agent w Proxmox, a następnie konfigurację sprzętową maszyny wirtualnej. Kontrolowane zatrzymanie i uruchomienie mogą być konieczne po wprowadzeniu zmian.

Jeśli ścieżka istnieje, ale Proxmox wciąż nie otrzymuje odpowiedzi, przeczytaj ostatnie komunikaty usługi :

sudo journalctl -u qemu-guest-agent --no-pager -n 50

Manpage oficjalne Debiana dla qemu-ga dokumentuje również /etc/qemu/qemu-ga.conf i transport virtio-serial. Zachowaj tę ścieżkę dla błędów wyraźnie związanych z demonem lub jego kanałem, a nie dla problemów z adresem IP.

Testowanie odpowiedzi z hosta Proxmox

Uwaga: status active (running) w Debianie potwierdza istnienie usługi, a nie odpowiedzi otrzymywanych przez hosta. Aby sprawdzić składnię dostępną w Twojej wersji Proxmox, rozpocznij na hoście od tego preflight :

qm help agent

Ta pomoc powinna potwierdzić dokładną formę, której oczekuje Twoja instalacja. Następnie uruchom tylko tą formę qm agent, która pojawiła się w tym preflight, z odpowiednim VMID. Nie podaję tu zakładanej podkomendy : może się ona różnić w zależności od wersji narzędzia, a wymyślona komenda nie stanowi testu.

Oczekiwanym wynikiem jest odpowiedź informacyjna zgodna z maszyną wirtualną wyświetlaną w Proxmox. Porównaj ją ze stanem agenta w interfejsie. Widoczny adres IP może pomóc, ale nie wystarczy, aby udowodnić pełne działanie kanału zarządzania.

Naprawa problemu w odpowiedniej warstwie

Kiedy wiele objawów wygląda podobnie, ta tabela zapobiega reinstalacji Debiana, gdy urządzenie brakuje po stronie maszyny wirtualnej.

ObjawPrawdopodobna warstwaPolecenie lub kontrolaMinimalna akcja
Opcja nieaktywnaProxmoxOpcje maszyny wirtualnejAktywuj QEMU Guest Agent, a następnie zrestartuj maszynę wirtualną, jeśli kanał się nie pojawi.
Jednostka nieznanaDebiansystemctl status qemu-guest-agentZainstaluj pakiet za pomocą APT, a następnie sprawdź stan usługi.
Usługa w błędzieDebiansystemctl status i journalctlPrzeczytaj pierwszy błąd przed jakimkolwiek nowym uruchomieniem.
Urządzenie nieobecnevirtio-serialls -l /dev/virtio-ports/org.qemu.guest_agent.0Popraw opcję lub sprzęt wirtualny po stronie Proxmox, a następnie wykonaj cykl zatrzymania i uruchomienia.

Jeśli agent odpowiada z hosta, ale maszyna wirtualna wciąż nie ma sieci, zatrzymaj diagnozowanie QEMU Guest Agent w tym miejscu. Łączność dotyczy mostu, interfejsu wirtualnego lub Debiana. Post Przywrócenie sieci maszyny wirtualnej Proxmox, od mostu do gościa opisuje ten ciąg bez mieszania obu problemów.

Jeśli kontrola wykazuje usterkę mostu na hoście, użyj zamiast tego Tworzenie mostu Proxmox bez utraty dostępu do serwera. Nie modyfikuj mostu, aby naprawić niezidentyfikowanego agenta : obie warstwy komunikują się, ale nie pełnią tej samej roli.

Walidacja zatrzymania i kopii zapasowych bez nadmiernych obietnic

Ważna odpowiedź z hosta pozwala następnie kontrolować oczekiwane korzyści. Wykonaj kontrolowane zatrzymanie gościa z Proxmox, a następnie sprawdź zadanie i dzienniki hosta. Maszyna wirtualna powinna zatrzymać się czysto, zamiast doznać przymusowego wyłączenia.

Aby wykonać kopię zapasową lub zrzut stanu, który wykorzystuje zamrożenie systemu plików, sprawdź także komunikaty o zadaniach. Zamrożenie i odmrożenie poprawiają spójność systemu plików. Nie zapewniają jednak spójności aplikacyjnej dla wszystkich baz danych : baza danych musi nadal przejść przez swoje własne procedury tworzenia kopii zapasowych.

Oto cztery dowody, które należy zgromadzić przed uznaniem instalacji za zakończoną :

  • opcja QEMU Guest Agent jest aktywna po stronie Proxmox ;
  • pakiet i usługa są obecne w Debianie ;
  • urządzenie virtio-serial istnieje pod oczekiwaną ścieżką ;
  • host otrzymuje odpowiedź po preflight qm help agent i odpowiednim teście dostosowanym do wersji.

Kanał jest uznawany za zweryfikowany, gdy te cztery kontrole się pokrywają. Jeśli odpowiada, pozostaw sieć w spokoju : nie brakuje agenta do naprawy mostu.