Który lepszy format obrazu, surowy lub qcow2, może być użyty jako obraz podstawowy dla innych maszyn wirtualnych?

25

Korzystam z obrazu podstawowego i na podstawie tego tworzenia wielu maszyn wirtualnych. A teraz chcę wiedzieć, który jest lepszy, qcow2 lub raw, aby użyć go do obrazu podstawowego. Co więcej, czy możesz mi powiedzieć, czy jest jakaś zaleta korzystania z tej funkcji baseimage zamiast klonowania całego dysku. Szybkość może być jednym z czynników, ale jeśli chodzi o wydajność, czy jest jakiś problem z użyciem obrazu podstawowego, a następnie tworzeniem maszyn wirtualnych za pomocą tego obrazu podstawowego?

Edycja 1:

Przeprowadziłem kilka eksperymentów i dostałem wprowadź opis zdjęcia tutajwprowadź opis zdjęcia tutajwprowadź opis zdjęcia tutaj

Po pierwsze, gdy zarówno obraz podstawowy, jak i nakładka to qcow2. Po drugie, gdy obraz podstawowy jest surowy, ale nakładka to qcow2, aw trzecim przypadku daję indywidualny obraz dysku dla każdej maszyny wirtualnej. Zaskakujące jest to, że ostatni przypadek jest znacznie bardziej wydajny w porównaniu do pozostałych dwóch.

Zestaw doświadczalny: 
System operacyjny w obrazie bazowym: Ubuntu Server 14.04 64 bit.
System operacyjny: Ubuntu 12.04 64bit
RAM: 8 GB
Procesor: procesor Intel® Core ™ i5-4440 @ 3,10 GHz × 4 
Dysk: 500 GB 

Na osi x: liczba VM uruchomionych jednocześnie. Zaczynając od 1 i zwiększając do 15.

Na osi y: całkowity czas uruchomienia „x” liczby maszyn.

Na podstawie wykresów wydaje się, że oddanie pełnego obrazu dysku maszynie wirtualnej jest znacznie wydajniejsze niż inne 2 metody.

Edycja 2: wprowadź opis zdjęcia tutaj

Jest tak w przypadku, gdy dajemy indywidualny nieprzetworzony obraz każdej maszynie wirtualnej. Po wykonaniu opróżnienia pamięci podręcznej jest to wykres. Jest prawie podobny do surowego obrazu podstawowego + nakładka qcow.

Dzięki.

AB
źródło
1
Użyłbym surowego obrazu podstawowego i nakładki QED zamiast qcow2. QED jest szybszy niż qcow2 i jest mniej podatny na uszkodzenie ze względu na projekt.
Matt
@Matt skomentuj edytowane pytanie.
AB
Różnice w wydajności są interesujące. Czy możesz spróbować z Qed? może występować problem z rywalizacją / blokowaniem w implementacji qcow2. Wierzę, że ma pewne problemy, dlatego wymyślili qed.
Matt
1
@Matt Sprawdziłem za pomocą surowej nakładki baseimage-qed i surowej nakładki baseimage-qcow2. Ale w tym ustawieniu qed jest znacznie wolniejszy niż qcow2.
AB

Odpowiedzi:

18

W przypadku konkretnego przypadku użycia (obraz podstawowy + nakładka qcow2) preferowany jest format RAW:

  1. Jest szybszy: ponieważ nie ma powiązanych metadanych, jest tak szybki, jak to możliwe. Z drugiej strony Qcow2 ma dwie warstwy pośredniczości, które należy przekroczyć, aby trafić do rzeczywistych danych
  2. Ponieważ warstwa nakładki musi być plikiem Qcow2, nie tracisz zawsze użytecznej funkcji migawek (obrazy RAW same w sobie nie obsługują migawek)

Wybór między obrazem podstawowym + nakładką qcow2 a wieloma pełnymi kopiami zależy od priorytetu:

  1. Aby uzyskać absolutną wydajność, użyj fałszywych obrazów RAW. Ma to tę wadę, że nie obsługuje migawki, ponieważ w większości środowisk jest to zbyt wysoka cena do zapłacenia
  2. Aby uzyskać elastyczność i oszczędność miejsca, użyj podstawowych obrazów RAW + nakładek Qcow2.

W każdym razie znalazłem pliki Qcow2 dość kruche.

Do mojej produkcji hiperwizorów KVM używam zasadniczo dwóch różnych konfiguracji:

  1. gdzie wydajność wynosi 1. Używam woluminów LVM bezpośrednio podłączonych do maszyn wirtualnych i korzystam z możliwości migawek LVM do robienia spójnych kopii zapasowych
  2. gdzie mogę poświęcić trochę wydajności dla większej elastyczności, używam jednego, dużego LVM Thin Provisioned Volume + XFS + obrazy RAW

Inną możliwością jest użycie normalnego wolumenu LVM + obrazów XFS + RAW. Jedynym minusem jest to, że normalne (nie-cienkie) migawki LVM są bardzo wolne, a miganie zajętego normalnego wolumenu LVM zabije wydajność (na czas życia migawki). W każdym razie, jeśli planujesz używać tylko sporadycznych migawek, może to być prostszy i bezpieczniejszy zakład.

Niektóre odniesienia: wyjaśniono powolność operacji
we / wy
KVM na wydajności pamięci masowej RHEL 6 KVM oraz prelokację Qcow2 na platformie RHEL 6.1 i Fedora 16
wydajność pamięci masowej i ustawienia pamięci podręcznej w cienkim wolumenie LVM Red Hat Enterprise Linux 6.2

Shodanshok
źródło
Jak wspomniano powyżej: poszczególne obrazy RAW będą szybsze ze względu na brak warstw pośrednich. Pamiętaj jednak, że rezygnujesz z migawek (na poziomie obrazu) i zajmujesz mało miejsca. Co więcej, mam wrażenie, że twój trzeci wynik został wypaczony przez pamięć podręczną hosta. Dla pewności powtórz wszystkie testy, wydając „sync; echo 3> / proc / sys / vm / drop_caches” między każdym uruchomieniem.
shodanshok
Właściwie to myślałem tak samo. Ale potem pomyślałem, że w przypadku faktycznego użycia również będzie podążał tym samym przepływem.
AB
Niezupełnie: w tym środowisku testowym po prostu uruchamiasz swoje maszyny wirtualne, bez ich używania. W prawdziwym przypadku po uruchomieniu zostaną użyte maszyny wirtualne, zanieczyszczając pamięć podręczną. Ogólnie najlepiej jest porównywać z rozsądnym przypadkiem użycia.
shodanshok
Czy masz pojęcie, dlaczego buforowanie nie odgrywa tak dużej roli na wykresie 1 i wykresie 2, tj. Obraz podstawowy Qcow2 + nakładka Qcow2 i surowy obraz podstawowy + nakładka Qcow2.
AB
6

Uwaga: jeśli używasz Linuksa, możesz użyć rawi uzyskać te same korzyści, qcow2jeśli chodzi o rozmiar.

... Jeśli twój system plików obsługuje dziury (na przykład w ext2 lub ext3 w systemie Linux lub NTFS w systemie Windows), tylko zapisane sektory zarezerwują miejsce.

https://docs.fedoraproject.org/en-US/Fedora/18/html/Virtualization_Administration_Guide/sect-Virtualization-Tips_and_tricks-Using_qemu_img.html

nieprzetworzony format obrazu dysku (domyślnie). Może to być najszybszy format oparty na plikach. Jeśli twój system plików obsługuje dziury (na przykład w ext2 lub ext3 w systemie Linux lub NTFS w systemie Windows), tylko zapisane sektory zarezerwują miejsce. Użyj informacji qemu-img, aby uzyskać rzeczywisty rozmiar obrazu lub ls -ls w systemach Unix / Linux.

d hee
źródło
Słuszna uwaga! Ale wydaje się, że podczas tworzenia kopii zapasowej / kopiowania / kompresji używany jest cały rozmiar surowego pliku obrazu. 20 GB nieprzetworzonego pliku przydzielającego tylko 4 MB na dysku zostało spakowane do 20 MB
MrCalvin
To było dla mnie zupełnie nowe. Mam maszynę wirtualną w Proxmox VE z dyskiem wirtualnym 30 GB ... i widzę, że dysk ma rozmiar w systemie plików hosta. Ale system plików hosta ma ponad << 10 GB wykorzystania. Właśnie dlatego tego szukałem.
cljk