Jak działa migawka maszyny wirtualnej?

16

Korzystając z oprogramowania do obrazowania dysków od ponad dekady, myślę, że zadziwiające jest, że maszyny wirtualne można migać i przywracać w ciągu kilku sekund, podczas gdy obrazowanie dysku często zajmuje godziny.

Mogę wykonać migawkę maszyny wirtualnej, zainstalować ją ponownie na innym systemie operacyjnym, a następnie wykonać przywracanie i jakoś magicznie w ciągu kilku sekund moja stara maszyna wirtualna wróci do stanu, w jakim była poprzednio.

Jak to się może stać? Co host maszyny wirtualnej faktycznie robi z maszyną wirtualną, co umożliwia?

Matias Nino
źródło

Odpowiedzi:

16

Podczas tworzenia migawki wszystkie zmiany dokonane na początkowym obrazie dysku wirtualnego nie są tak naprawdę dokonywane na samym obrazie, ale są zapisywane w nowym pliku dyskowym (migawka). Ta akcja jest tak szybka, ponieważ nie ma potrzeby kopiowania całego obrazu dysku wirtualnego, ponieważ działa na zasadzie kopiowania przy zapisie (tylko zmienione, tzn. Zapisane bloki są zapisywane do obrazu migawkowego). Zwróć uwagę, że obraz migawki rośnie wraz ze zmianą coraz większej ilości danych na oryginalnym obrazie dysku wirtualnego (który pozostaje niezmieniony w momencie wykonania migawki). Najprawdopodobniej będzie znacznie mniejszy niż oryginalny obraz, ale w najgorszym przypadku będzie miał dokładnie ten sam rozmiar (jeśli wszystkie bloki zostaną zmienione).

Za pomocą tego nowego obrazu migawki można wykonać dwie czynności:

  1. Odrzuć migawkę : bardzo szybka akcja. Menedżer maszyny wirtualnej po prostu usuwa plik obrazu migawki i przywraca kontrolę na oryginalnym obrazie dysku lub niektórych poprzednich migawkach
  2. Scal migawkę : menedżer maszyny wirtualnej scala zmienione bloki (tj. Obraz migawki) z oryginalnym obrazem. Ta czynność zajmie trochę czasu w zależności od tego, ile zmieniło się bloków oryginalnego obrazu. Ponownie najgorszym scenariuszem jest nadpisanie całego oryginalnego obrazu na wypadek, gdyby wszystkie bloki oryginalnego obrazu zostały zapisane po utworzeniu migawki.

Wszystkie opisane powyżej procedury działają również w przypadku wielu migawek. W takim przypadku oryginalny obraz może być jedną migawką, a kolejna migawka może odnosić się do bloku na tej (pierwszej) migawce. W ten sposób możesz mieć wiele migawek, które możesz łatwo odrzucić lub scalić.

ipozgaj
źródło
1
odrzuć migawkę, podobnie jak każdy proces usuwania obrazu, może faktycznie być dość powolny, jeśli masz włączone czyszczenie po usunięciu. Jest to funkcja bezpieczeństwa polegająca na wyczyszczeniu miejsca używanego przez obraz lub migawkę przed zwolnieniem go do użycia przez inne maszyny wirtualne, w przeciwnym razie, przy użyciu odczytu bloków niskiego poziomu, możliwe będzie odczytanie danych z poprzedniej maszyny wirtualnej. Każde rozwiązanie do wirtualizacji, które nie ma tej funkcji, ma ogromną lukę w zabezpieczeniach
dyasny
Próbowałem wyjaśnić scenariusz tworzenia wielu migawek i sposobu, w jaki zmiany są zachowywane przy każdej migawce. Zobacz to krótkie wyjaśnienie dotyczące działania migawek VMware: cubicrace.com/2012/02/...
Piyush Chordia,
5

Dzięki migawce oprogramowanie do wirtualizacji musi śledzić cztery rzeczy: stan procesora, pamięć RAM, konfigurację (ile kart sieciowych na maszynie wirtualnej?) I dysk. Ignoruję pierwsze trzy rzeczy, ponieważ nie są to ogromne ilości danych, oprogramowanie może po prostu tworzyć kopie stosunkowo niewielkich struktur danych i przechowywać je w pliku. Pozostawia to tylko migawkę dysku do wyjaśnienia.

Po pierwsze, maszyna wirtualna postrzega jako dysk twardy tak naprawdę tylko zestaw plików w systemie plików hosta. Aby wykonać migawkę, oprogramowanie maszyny wirtualnej bierze dysk maszyny wirtualnej w określonym momencie, zachowuje go, otwiera nowy pusty plik dysku i wykonuje schemat kopiowania przy zapisie przy każdym kolejnym dostępie do dysku.

Powiedzmy, że twój plik dyskowy to BigVM.disk. Wykonujesz migawkę, a teraz oprogramowanie VM zmienia nazwę dysku na BigVM-s1.disk, a następnie tworzy nowy pusty BigVM.disk. Gdy maszyna wirtualna jest uruchomiona, wszystkie żądania odczytu przechodzą przez BigVM.disk. Jeśli w tym pliku nie ma wpisu dotyczącego części dysku, której chce maszyna wirtualna, zwracane są dane z BigVM-s1.disk. Podczas zapisu dane są zapisywane w BigVM.disk zamiast BigVM-s1.disk. Przyszły odczyt do tego samego sektora zwróci dane z BigVM.disk zamiast oryginalnej migawki zawartej w BigVM-s1.disk. BigVM-s1.disk zawiera stan dysku twardego maszyny wirtualnej od momentu utworzenia migawki, podczas gdy BigVM.disk zawiera wszystkie różnice na dysku od czasu tej migawki.

Co się stanie, gdy przywrócisz starszą migawkę? Oprogramowanie VM wyrzuca zawartość BigVM.disk i zaczyna od nowa, z nowym pustym BigVM.disk, który wciąż wskazuje na BigVM-s1.disk.

kbyrd
źródło
2

Zapisuje tylko różnice w plikach zmienione od momentu wykonania migawki, a nie cały dysk maszyny wirtualnej. Podobnie jak unix diff i łatka, z wyjątkiem bardziej wyrafinowanej wersji, która różni się na poziomie binarnym i zna inne szczegóły twojej maszyny wirtualnej.

Ian Kelling
źródło
1

Przynajmniej w migawkach VMware dzieje się tak, że migawka jest w zasadzie sygnałem dla VMX do uruchomienia nowego punktu kontrolnego zapisu dysku i stanu komputera. W zależności od tego, czy maszyna wirtualna jest wyłączona, czy włączona, przywracanie migawki może po prostu obejmować jedynie nukanie wszystkiego, co wydarzyło się poza tym punktem kontrolnym. W przeciwnym razie wszystkie sektory dysku maszyny Wirtualnej stają się kopiowane podczas zapisu, co oznacza, że ​​po przywróceniu migawki na gorąco trzeba tylko przepisać sektory, które zmieniły się od momentu wykonania migawki. Dlatego to jest szybsze.

joshk0
źródło
-1

Praca z migawkami VMware i ich wewnętrznymi objaśnieniami jest najlepiej wyjaśniona @ http://www.pcclm.com/2012/02/virtual-machine-snapshots-in-vmware.html

Piyush Chordia
źródło
3
Witamy w ServerFault! Chociaż zachęcamy do tworzenia linków do zewnętrznych materiałów referencyjnych, oczekujemy również, że każda odpowiedź będzie kompletna, nawet jeśli linki zostaną zerwane w przyszłości. Możesz zredagować tę odpowiedź i dodać dodatkowe szczegóły.
Skyhawk