To interesujące pytanie ...
Nie wydaje mi się, że istnieje ostateczna odpowiedź, ale mogę podać kontekst historyczny, w jaki sposób najlepsze praktyki dotyczące tego tematu mogły się zmieniać w czasie.
Od 2007 roku musiałem obsługiwać tysiące maszyn wirtualnych z systemem Linux wdrożonych w różnych formach w środowiskach VMware. Moje podejście do wdrażania ewoluowało i miałem unikalne ( czasem niefortunne ) doświadczenie w dziedziczeniu i refaktoryzacji systemów zbudowanych przez innych inżynierów.
Dawne czasy...
Wcześniej (2007) moje wczesne systemy VMware były podzielone na partycje, tak jak moje systemy bez systemu operacyjnego. Po stronie VMware korzystałem z podzielonych plików o grubości 2 GB, aby utworzyć dane maszyny wirtualnej, i nawet nie myślałem o wielu VMDK, ponieważ cieszyłem się, że wirtualizacja może nawet działać!
Infrastruktura wirtualna ...
W ESX 3.5 i we wcześniejszych wydaniach ESX / ESXi 4.x (2009-2011) korzystałem z Linuksa, podzielonego na partycje jak zwykle na monolitycznych plikach VMDK wyposażonych w Thick . Konieczność wstępnej alokacji pamięci zmusiła mnie do myślenia o projektowaniu Linuksa w podobny sposób, jak w przypadku prawdziwego sprzętu. Tworzyłem 36 GB, 72 GB, 146 GB VMDK dla systemu operacyjnego, partycjonując zwykłe /, / boot, / usr, / var, / tmp, a następnie dodałem kolejny VMDK dla partycji „dane” lub „wzrost” (czy to / dom, / opt lub coś specyficznego dla aplikacji). Znów najsłabszy punkt w rozmiarach fizycznych dysków twardych w tej erze wynosił 146 GB, a ponieważ wstępna alokacja była wymagana (chyba że korzystałem z NFS), musiałem zachować ostrożność w kwestii miejsca.
Nadejście cienkiego zaopatrzenia
VMware opracowało lepsze funkcje w zakresie obsługi administracyjnej Thin w późniejszych wydaniach ESXi 4.x, a to zmieniło sposób, w jaki zacząłem instalować nowe systemy. Po dodaniu pełnego zestawu funkcji w wersji 5.0 / 5.1 nowy rodzaj elastyczności pozwolił na bardziej kreatywne projekty. Pamiętaj, że nadążało to za zwiększonymi możliwościami na maszynach wirtualnych, pod względem liczby vCPUS i ilości pamięci RAM, którą można było przypisać do poszczególnych maszyn wirtualnych. Więcej typów serwerów i aplikacji można wirtualizować niż w przeszłości. Ma to rację, ponieważ środowiska komputerowe zaczęły być całkowicie wirtualne.
LVM jest okropny ...
Kiedy pełna funkcjonalność dodawania na gorąco na poziomie maszyn wirtualnych była już dostępna i powszechna (2011-2012), pracowałem z firmą, która dążyła do utrzymania dyspozycyjności maszyn wirtualnych swoich klientów za wszelką cenę ( głupio ). Tak więc objęło to wzrost CPU / RAM VMware online i ryzykowne zmiany rozmiaru dysku LVM na istniejących VMDK. Większość systemów Linux w tym środowisku to pojedyncze konfiguracje VMDK z partycjami ext3 na szczycie LVM. Było to okropne, ponieważ warstwa LVM dodawała złożoności i niepotrzebnego ryzyka dla operacji. Na przykład brak miejsca w / usr może spowodować łańcuch złych decyzji, które ostatecznie oznaczały przywrócenie systemu z kopii zapasowych ... Było to częściowo związane z procesem i kulturą, ale nadal ...
Snobizm partycji ...
Skorzystałem z okazji, aby spróbować to zmienić. Jestem trochę snobem partycji w Linuksie i uważam, że systemy plików powinny być oddzielone na potrzeby monitorowania i potrzeb operacyjnych. Nie lubię także LVM, szczególnie w przypadku VMware i możliwości robienia tego, o co prosisz. Rozszerzyłem więc dodawanie plików VMDK na partycje, które potencjalnie mogą się powiększać. / opt, / var, / home mogą w razie potrzeby uzyskać własne pliki maszyn wirtualnych. I to byłyby surowe dyski. Czasami była to łatwiejsza metoda rozwijania konkretnej partycji niewymiarowej w locie.
Obamacare ...
Wraz z wdrożeniem bardzo głośnego klienta miałem za zadanie zaprojektować szablon referencyjny maszyny wirtualnej Linux, który zostałby użyty do stworzenia ich bardzo widocznego środowiska aplikacji. Wymagania bezpieczeństwa aplikacji wymagały unikalnego zestawu montowań , dlatego współpracowaliśmy z programistami, aby spróbować upchnąć partycje nierozwojowe w jednym VMDK, a następnie dodać osobne VMDK dla każdego montowania, który miał potencjał wzrostu lub miał określone wymagania (szyfrowanie, audyt itp.) Tak więc ostatecznie te maszyny wirtualne składały się z 5 lub więcej VMDK, ale zapewniały najlepszą elastyczność w zakresie przyszłej zmiany rozmiaru i ochrony danych.
Co robię dzisiaj ...
Dzisiaj moim ogólnym projektem dla systemu Linux i tradycyjnych systemów plików jest system operacyjny na jednym cienkim VMDK (podzielonym na partycje) i dyskretnym VMDK na cokolwiek innego. W razie potrzeby dodam na gorąco. W przypadku zaawansowanych systemów plików, takich jak ZFS, jest to jeden VMDK dla systemu operacyjnego, a drugi VMDK, który służy jako zpool ZFS i można go zmienić, wyrzeźbić w dodatkowych systemach plików ZFS itp.