Migawki gości KVM z libvirt

Migawki gości KVM z libvirt
Maszyny wirtualne mają wiele przypadków użycia, z których jednym jest pojemność maszyn wirtualnych do użycia jako maszyny testowe. Możesz eksperymentować w maszynie wirtualnej, zastosować łatki i przetestować aktualizacje przed zrobieniem tego samego w systemach produkcyjnych lub stacji roboczej. Możesz także użyć jednorazowych maszyn wirtualnych, które nie mają danych osobowych lub poufnych, w przypadku testowania złośliwego oprogramowania, tak jak większość społeczności bezpieczeństwa, upewnij się, że sieć VM jest odizolowana od hosta i LAN.

Jednak ponowne zainstalowanie systemu operacyjnego w maszynie wirtualnej staje się męczące. Utrzymuje twój przepływ pracy i dlatego potrzebujesz niezawodnego sposobu:

  1. Zrób migawkę maszyny wirtualnej w danym momencie.
  2. Mieć mechanizm użycia migawki do powrotu maszyny wirtualnej do wcześniejszego stanu.

Wcześniej omówiłem, jak migawki działają w VirtualBox i tym razem chciałem omówić migawki w Libvirt. Będę używał QEMU-KVM jako hiperwizora zaplecza do mojej instalacji libvirt. Twoja sprawa może się różnić, ale ogólna funkcjonalność i interfejs nie powinny być bardzo różne, ponieważ Libvirt stara się standaryzować interfejs frontend.

Jeśli nie znasz libvirt i qemu-kvm, oto przewodnik o tym, jak możesz skonfigurować KVM na debian.

Tworzenie migawki

Istnieje kilka sposobów, na które możesz robić i zarządzać migawkami maszyny wirtualnej. Aplikacje GUI, takie jak Virt-Manager i Ovirt, oferują funkcjonalność, a nawet możesz pisać niestandardowe skrypty do interfejsu z API Libvirt, które zarządzają całą gamą migawek dla Ciebie.

Będę jednak używał interfejsu wiersza poleceń Virsh, aby pokazać, w jaki sposób możesz zarządzać swoimi maszynami wirtualnymi i ich migawkami. To narzędzie ma prawie wszystkie domyślne instalacje libvirt i powinno być dostępne w szerokiej gamie dystrybucji.

Dla poniższych poleceń należy zastąpić nazwę mojej maszyny wirtualnej, VM1, faktyczną nazwą maszyny wirtualnej. Libvirt często odnosi się do wirtualnej maszyny i pojemników jako Domeny. Jeśli więc zobaczysz komunikat o błędzie sugerujący, powiedzmy: „Określ nazwę domeny”, musisz podać nazwę VM jako jeden z argumentów do polecenia. Użyj następującego polecenia, aby wymienić wszystkie maszyny wirtualne w ramach zarządzania Libvirt.

Lista $ Virsh -All

Aby zrobić migawkę maszyny wirtualnej, po prostu uruchom:

$ Virsh Snapshot-Create VM1

I wymienić wszystkie migawki danej maszyny wirtualnej, użyj polecenia:

$ Virsh Snapshot-List VM1
Stan czasu tworzenia nazwy
------------------------------------------------------------
1556533387 2019-04-29 15:53:07 +0530 Bieganie

Możesz zobaczyć, że utworzono migawkę. Domyślnie nazwa migawki to znacz czasowy tworzenia (liczba sekund od UNIX EPOCH). Kolumna czasu tworzenia pokazuje czas tworzenia w sposób czytelny ludzki, a kolumna stanowa pokazuje stan maszyny wirtualnej, gdy została mnotowna. Jako ta maszyna wirtualna działała, stan migawki również „działa”, ale to nie oznaczało, że sama migawka działa. Z czasem się nie zmieni. Ta funkcja jest również znana jako migawka na żywo i jest dość cenna, ponieważ pozwala zrobić migawkę maszyny wirtualnej bez żadnych przestojów. Przynajmniej goście KVM pracują dobrze z migawkami na żywo.

Niektóre obciążenia wymagają jednak zatrzymania maszyny wirtualnej, zanim zostanie ona mnóstwo. Zapewnia to, że dane w migawce są spójne i nie ma na wpół napisanego pliku ani brakujących danych. Jeśli obciążenie pracą w maszynie wirtualnej ma wysokie IO, prawdopodobnie musisz wyłączyć maszynę wirtualną przed utworzeniem migawki. Stwórzmy jeden w ten sposób.

$ virsh shutdown vm1

Domena VM1 jest zamykana

$ Virsh Snapshot-Create VM1

Snapshot domeny 1556533868 Utworzony

root@deb: ~# virsh migawka VM1
Stan czasu tworzenia nazwy
------------------------------------------------------------
1556533387 2019-04-29 15:53:07 +0530 Bieganie
1556533868 2019-04-29 16:01:08 +0530 Odcięcie
$ virsh start vm1
Domena VM1 rozpoczęła się

Jeśli chcesz wymienić migawki coś innego niż znacznik czasu, użyj polecenia:

$ virsh migawka-create-as vm1 --Name Snap1
Stan czasu tworzenia nazwy
------------------------------------------------------------
1556533387 2019-04-29 15:53:07 +0530 Bieganie
1556533868 2019-04-29 16:01:08 +0530 Odcięcie
Snap1 2019-05-02 22:27:48 +0530 Uruchomienie

Oczywiście nie musisz nazywać tego Snap1, możesz wybrać dowolną wygodną nazwę.

Odwracając się z migawki

Zrobić migawkę, nie ma sensu, jeśli nie możesz do niego wrócić. W przypadku, gdy musisz powrócić do migawki, po prostu użyj polecenia:

$ virsh migawka-revert $ vmname $ migshot-name

Nazwa może być znacznikiem czasu lub nazwa przypisana przez użytkownika podana do migawki.

Upewnij się, że w bieżącej maszynie wirtualnej nie ma żadnych ważnych danych lub jeśli ma coś ważnego, a następnie weź migawkę bieżącej maszyny wirtualnej, a następnie powróć do starszej migawki.

Korzyści z QCOW2

Mechanizm kopiowania plików QCOW2 pozwala każdej migawce zająć bardzo małą przestrzeń. Przestrzeń wykonana przez migawkę wzrasta z czasem, gdy uruchomiony obraz odbiega od migawki. Tak długo, jak nie przepisujesz dużej ilości danych, twoje migawki zajmie tylko kilka MB pamięci.

Oznacza to również, że migawki są również bardzo szybkie. Ponieważ mechanizm kopiowania na zapisanie musi po prostu zaznaczyć znacznik czasu, gdy zabrano migawkę. Bloki danych zapisane w pliku QCOW2 po migawce nie należą do niego, ale starsze. To jest tak proste. Moja ławka testowa wykorzystuje dysk twardy o pojemności 5400 obr./min, który w żadnym wypadku nie jest w szczycie jej wydajności, wciąż zajmuje mniej niż kilka sekund, aby zrobić migawkę VM na żywo na tym dysku.

Wniosek

Podobnie jak w przypadku większości narzędzi LIBVIRT i VIRSH, funkcja migawki zapewnia bardzo elastyczny interfejs z funkcjami klasy korporacyjnej, takimi jak migawki na żywo, a także korzyści płynące z mechanizmu kopiowania.

Domyślna konwencja nazewnictwa ułatwia również skorupce okresowe usuwanie starych migawek i zastąpienie ich nowszymi. Jeden z moich starszych artykułów na temat migawek OpenZFS i zasad migawki można również zastosować dla gościa KVM. Aby uzyskać więcej informacji na temat narzędzia migawki Virsh. Strona pomocy jest bardzo mała, precyzyjna i łatwa do zrozumienia.