Szukam dobrych praktycznych zasad, aby zrozumieć, kiedy NIE należy wirtualizować maszyny.
Na przykład wiem, że w pełni związany z procesorem proces przy prawie 100% wykorzystaniu prawdopodobnie nie jest dobrym pomysłem na wirtualizację, ale czy ma sens uruchamianie czegoś, co wykorzystuje procesor przez większość czasu w „znacznej ilości” (powiedzmy 40 lub 50%)?
Kolejny przykład: jeśli zwirtualizuję 1000 maszyn, nawet jeśli są one używane tylko w niewielkim lub umiarkowanym stopniu, prawdopodobnie źle byłoby uruchomić je wszystkie na hoście z tylko 4 rdzeniami.
Czy ktoś może streścić wskazówki dotyczące wirtualizacji na podstawie obciążenia maszyny lub liczby komputerów-gości w porównaniu do zasobów hosta?
Zazwyczaj wirtualizuję na hostach Windows za pomocą VirtualBox lub VMWare, ale zakładam, że jest to dość ogólne pytanie.
Odpowiedzi:
Podsystem dyskowy. Jest to zazwyczaj najmniej dostępny zasób. Pamięć oczywiście, ale ta jest widoczna.
Ograniczenia podsystemu dyskowego działają na dwa sposoby. Jeśli system wykorzystuje dużo dyskowych operacji we / wy, inni goście zwalniają. Jeśli gość jest w produkcji, prawdopodobnie potrzebuje szybkiej odpowiedzi na zapytania internetowe. Może to być bardzo frustrujące, a także duży powód, dla którego nie wynająć sprzętu wirtualnego. Możesz zminimalizować ten problem, używając dedykowanych dysków.
Użycie tylko 512 MB pamięci w Gośćach powoduje umieszczenie całej pamięci podręcznej dysku na hoście. I nie jest równo podzielony między gości.
Nie martw się o procesory IO. W ten sposób wirtualizacja jest bardzo wydajna, często powiązana z wieloma procesami działającymi w tym samym systemie. Rzadko widuję systemy multi-xeon działające w 100% na procesorze.
edycja: literówki
źródło
Rzeczy, których nigdy nie umieściłem w maszynie wirtualnej:
Wszystko, co korzysta ze specyficznego sprzętu, którego nie można zwirtualizować: zwykle grafika, sporo sprzętowych modułów bezpieczeństwa, wszystko ze spersonalizowanymi sterownikami (na przykład sterowniki sieciowe specjalnego przeznaczenia).
Systemy z problemami z licencją. Niektóre opłaty za oprogramowanie na fizyczny procesor lub rdzeń, bez względu na to, ile ich przydzielono do maszyny wirtualnej. Zostaniesz trafiony w audycie, jeśli posiadasz licencję na oprogramowanie dla jednego rdzenia uruchomionego na maszynie wirtualnej na 32-rdzeniowym serwerze.
Rzeczy, których odradzałbym umieszczając maszynę wirtualną:
Oprogramowanie, które już stara się wykorzystać wszystkie zasoby w sprzęcie towarowym. Maszyny działające w ramach „dużych zbiorów danych”, takie jak hadoop, są zwykle zaprojektowane do pracy na goły metal.
Wszystko, co zostanie dokładnie dostrojone, aby wykorzystać zasoby. Kiedy naprawdę zaczniesz dostrajać bazę danych, maszyny wirtualne walczące o zasoby naprawdę wrzucą klucz do pracy.
Wszystko, co już ma duże wąskie gardło. Już nie gra dobrze ze sobą, prawdopodobnie nie będzie dobrze grał z innymi.
Jest kilka rzeczy, które są całkiem niesamowite do umieszczania w maszynach wirtualnych:
Wszystko, co spędza sporo czasu bezczynnie. Hosty narzędzi, takie jak poczta i DNS, mają trudności z wygenerowaniem wystarczającego obciążenia na nowoczesnym sprzęcie, aby zagwarantować serwery dedykowane.
Aplikacje, które same nie skalują się dobrze (lub łatwo). Starszy kod dość często należy do tej kategorii. Jeśli aplikacja nie rozszerzy się, aby zająć serwer, użyj wielu małych serwerów wirtualnych.
Projekty / aplikacje, które zaczynają się małe, ale rosną. Znacznie łatwiej jest dodawać zasoby do maszyny wirtualnej (a także przechodzić na nowszy, większy sprzęt), niż zaczynać od samego początku.
Ponadto nie jestem pewien, czy przesadzasz w umieszczaniu ogromnej liczby maszyn wirtualnych na jednym hoście, ale jeśli próbujesz uzyskać duży stosunek VM: HW, możesz zamiast tego rozważyć ESX, Xen, KVM. Poradzisz sobie znacznie lepiej niż używanie VMware lub virtualbox w systemie Windows.
źródło
Wydajność wirtualizacji ma dwa punkty.
Kto ma wspólne żelazne wąskie gardła? Jeśli jesteś zlokalizowany w środowisku zwirtualizowanym, jesteś bardzo zależny od uczciwości partnera hostingowego.
Myślę, że głównym pytaniem, jakie należy zadać surowej wydajności (szczególnie interaktywności), jest to, które części systemu wirtualizacji są emulowane. Różni się to w zależności od konfiguracji. Dysk i sieć to typowi kandydaci. Zasadniczo emulacja podwaja „koszt” wydajności wykonywania akcji, dlatego wszelkie opóźnienia sprzętowe należy liczyć dwukrotnie, a liczbę thruput o połowę.
źródło
Ostatecznie żadne obciążenie o wysokiej wydajności nie powinno być wirtualizowane. Wydajność wirtualizacji nie jest trywialna. Zobacz wyniki moich testów tutaj:
http://www.altechnative.net/2012/08/04/virtual-performance-part-1-vmware/
OTOH, jeśli chcesz skonsolidować wiele maszyn, które są w większości bezczynne przez cały czas, wirtualizacja jest rozwiązaniem.
źródło
Dobra odpowiedź od anttiR.
Ponadto systemy krytyczne czasowo. Po prostu stwierdziłem, że zgnilizna Hyper-V (VM powoli się opóźnia, wszystkie nowoczesne systemy operacyjne w VM robią to, często się resynchronizują) nie gra zbyt dobrze z niektórymi krytycznymi dla mnie aplikacjami, które rozwijam. Dodatkowo zamierzam użyć tam „dużej” jednostki centralnej i planuję zdobyć 12-rdzeniową maszynę tylko do tej aplikacji w produkcji.
źródło