Nadal jestem nowy w ZFS. Korzystam z Nexenta, ale myślę o przejściu na OpenIndiana lub Solaris 11 Express. W tej chwili zastanawiam się nad wirtualizacją serwera ZFS jako gościa w ESXi, Hyper-V lub XenServer (jeszcze nie zdecydowałem, który z nich - pochylam się w kierunku ESXi dla obsługi VMDirectPath i FreeBSD).
Głównym powodem jest to, że wydaje mi się, że mam wystarczającą ilość zasobów do obejścia, że mogę z łatwością jednocześnie obsługiwać 1-3 inne maszyny wirtualne. Głównie Windows Server. Być może również VM Linux / BSD. Chciałbym, aby zwirtualizowany serwer ZFS hostował wszystkie dane dla innych maszyn wirtualnych, aby ich dane mogły być przechowywane na fizycznie oddzielnych dyskach od dysków ZFS (montowanie jako iscsi lub nfs).
Serwer ma obecnie AMD Phenom II z 6 rdzeniami całkowitymi (2 odblokowane), 16 GB pamięci RAM (maksymalnie) i LSI SAS 1068E HBA z (7) dyskami SATA II 1 TB (planowanie na RAIDZ2 z hot spare). Mam także (4) dyski SSD SATA II o pojemności 32 GB podłączone do płyty głównej. Mam nadzieję, że dubluję dwa dyski SSD do kopii lustrzanej rozruchu (dla wirtualnego hosta) i pozostawiam pozostałe dwa dyski SSD dla ZIL i L2ARC (dla gościa ZFS VM). Chcę dodać dwa dodatkowe dyski do przechowywania gości VM i przydzielić wszystkie siedem bieżących dysków jako pamięć ZFS. Uwaga: Ta płyta ma nie mieć wsparcia IOMMU jak 880G nie obsługuje, ale mam takie 890FX płytę, która ma IOMMU jeśli to robi ogromną różnicę.
Moje pytania to:
1) Czy mądrze jest to zrobić? Nie widzę żadnych oczywistych wad (co sprawia, że zastanawiam się, dlaczego nikt inny o tym nie wspominał). Wydaje mi się, że mógłbym mieć olbrzymi nadzór i nie chciałbym się do tego angażować, przesuwać wszystkie moje dane tylko po to, aby przejść do fubar z drobnych szczegółów, które mi umknęły.
2) Wydajność wirtualnego gościa ZFS? Jestem skłonny wziąć niewielki spadek wydajności, ale pomyślałem, że jeśli gość VM ma pełny dostęp do dysków, przynajmniej wydajność dysku I / O będzie znikoma (w porównaniu z uruchomieniem ZFS bez wirtualizacji) . Czy ktoś może z tym porozmawiać na podstawie hostingu serwera ZFS jako gość VM?
Odpowiedzi:
Zbudowałem wiele takich „zintegrowanych” konfiguracji pamięci ZFS. Początkowo zainspirowany doskonałymi postami na Ubiquitous Talk , moje rozwiązanie ma nieco inne podejście do projektowania sprzętu, ale daje wynik w postaci enkapsulowanej zwirtualizowanej pamięci ZFS.
Aby odpowiedzieć na pytania:
Ustalenie, czy jest to mądre podejście, naprawdę zależy od twoich celów. Co próbujesz osiągnąć Jeśli masz technologię (ZFS) i szukasz dla niej aplikacji, to zły pomysł. Lepiej jest użyć odpowiedniego sprzętowego kontrolera RAID i uruchomić maszyny wirtualne na lokalnej partycji VMFS. To ścieżka najmniejszego oporu. Jeśli jednak masz konkretny powód, dla którego chcesz korzystać z ZFS (replikacja, kompresja, bezpieczeństwo danych, przenośność itp.), Jest to zdecydowanie możliwe, jeśli chcesz włożyć wysiłek.
Wydajność zależy w dużej mierze od projektu, niezależnie od tego, czy korzystasz z systemu bez systemu operacyjnego, czy wirtualnego. Użycie PCI-passsthrough (lub AMD IOMMU w twoim przypadku) jest niezbędne, ponieważ zapewniasz swojemu ZFS VM bezpośredni dostęp do kontrolera pamięci masowej SAS i dysków. Tak długo, jak maszyna wirtualna ma przydzieloną odpowiednią ilość pamięci RAM i procesora, wydajność jest prawie natywna. Oczywiście Twój projekt basenu ma znaczenie. Proszę rozważyć lustra w porównaniu z RAID Z2. ZFS skaluje się między vdevs, a nie liczbą dysków .
Moja platforma to VMWare ESXi 5, a moim preferowanym systemem operacyjnym obsługującym ZFS jest NexentaStor Community Edition .
To jest mój
domowyserwer . Jest to HP ProLiant DL370 G6 z ESXi na wewnętrznej karcie SD. Dwa dublowane dyski 72 GB w środku są połączone z wewnętrznym kontrolerem RAID Smart Array P410 i tworzą wolumin VMFS. Ten wolumin zawiera maszynę wirtualną NexentaStor. Pamiętaj, że maszyna wirtualna ZFS musi żyć gdzieś na stabilnym magazynie.Do klatki napędów dołączony jest kontroler SAS LSI 9211-8i z sześcioma dyskami SATA 1 TB po prawej stronie. Jest przekazywany do maszyny wirtualnej NexentaStor, dzięki czemu Nexenta może widzieć dyski jako konfigurację RAID 1 + 0. Dyski są dyskami el-cheapo Western Digital Green WD10EARS , odpowiednio dopasowanymi do zmodyfikowanego pliku
zpool
binarnego.W tej instalacji nie używam urządzenia ZIL ani żadnej pamięci podręcznej L2ARC.
Maszyna wirtualna ma 6 GB pamięci RAM i 2 przydzielone vCPU. W ESXi, jeśli użyjesz przepustowości PCI, zostanie utworzona rezerwacja pamięci dla pełnej ilości przydzielonej pamięci RAM maszyny wirtualnej.
Daję NexentaStor VM dwa interfejsy sieciowe. Jeden dotyczy zarządzania ruchem. Drugi jest częścią osobnego przełącznika vSwitch i ma interfejs vmkernel (bez zewnętrznego łącza w górę). Umożliwia to maszynie wirtualnej zapewnienie pamięci masowej NFS, którą można zamontować za pomocą sieci ESXi za pośrednictwem sieci prywatnej. Możesz łatwo dodać interfejs łącza zwrotnego, aby zapewnić dostęp do hostów zewnętrznych.
Zainstaluj nowe maszyny wirtualne w eksportowanym magazynie danych ZFS. Pamiętaj, aby ustawić parametry „Uruchamianie / wyłączanie maszyny wirtualnej” w ESXi. Chcesz, aby maszyna wirtualna pamięci masowej uruchomiła się przed systemami-gośćmi i zamknęła się jako ostatnia.
Oto wyniki bonnie ++ i iozone z przebiegu bezpośrednio na maszynie wirtualnej NexentaStor. Kompresja ZFS jest wyłączona, aby test pokazał bardziej powiązane liczby, ale w praktyce zawsze powinna być włączona domyślna kompresja ZFS (nie gzip) .
# bonnie++ -u root -n 64:100000:16:64
# iozone -t1 -i0 -i1 -i2 -r1m -s12g
To jest wykres NexentaStor DTrace pokazujący IOPS i prędkości transferu maszyny wirtualnej pamięci podczas uruchomienia testowego. 4000 IOPS i 400+ megabajtów / sekundę jest całkiem rozsądne w przypadku dysków o niższej jakości. (jednak duży rozmiar bloku)
Inne notatki.
źródło