Das ist eine interessante Frage ...
Ich glaube nicht, dass es eine endgültige Antwort gibt, aber ich kann einen historischen Kontext dazu geben, wie sich die Best Practices in Bezug auf dieses Thema im Laufe der Zeit geändert haben könnten.
Ich musste seit 2007 Tausende von Linux-VMs unterstützen, die in verschiedenen Formen in VMware-Umgebungen bereitgestellt wurden. Mein Ansatz für die Bereitstellung hat sich weiterentwickelt, und ich hatte die einzigartige ( manchmal unglückliche ) Erfahrung, von anderen Ingenieuren erstellte Systeme zu erben und umzugestalten.
Die alten Tage...
Damals (2007) waren meine frühen VMware-Systeme genauso partitioniert wie meine Bare-Metal-Systeme. Auf der VMware-Seite verwendete ich geteilte Dateien mit einer Dicke von 2 GB, um die Daten der VM zusammenzufassen, und dachte nicht einmal über die Idee mehrerer VMDKs nach, da ich nur froh war, dass die Virtualisierung überhaupt funktionieren konnte!
Virtuelle Infrastruktur ...
Mit ESX 3.5 und den frühen ESX / ESXi 4.x-Versionen (2009-2011) verwendete ich Linux, das wie gewohnt auf monolithischen Thick- bereitgestellten VMDK-Dateien partitioniert war . Da ich Speicher vorab zuweisen musste, musste ich über Linux-Design auf ähnliche Weise nachdenken wie über echte Hardware. Ich habe VMDKs mit 36 GB, 72 GB und 146 GB für das Betriebssystem erstellt, das übliche /, / boot, / usr, / var und / tmp partitioniert und dann ein weiteres VMDK für die Partition "data" oder "growth" hinzugefügt (unabhängig davon, ob dies / home, / opt oder etwas anwendungsspezifisches). Wiederum lag der Sweet-Spot bei den physischen Festplattengrößen in dieser Ära bei 146 GB, und da eine Vorbelegung erforderlich war (außer bei Verwendung von NFS), musste ich sparsam mit dem Speicherplatz umgehen.
Das Aufkommen von Thin Provisioning
VMware hat in späteren ESXi 4.x-Releases bessere Funktionen für Thin Provisioning entwickelt , und dies hat die Art und Weise geändert, in der ich mit der Installation neuer Systeme begonnen habe. Mit dem vollständigen Funktionsumfang von 5.0 / 5.1 ermöglichte eine neue Art der Flexibilität kreativere Designs. Wohlgemerkt, dies hat mit den erweiterten Funktionen auf virtuellen Maschinen Schritt gehalten, was die Anzahl der vCPUS und die Menge des Arbeitsspeichers anbelangt, die für einzelne VMs festgeschrieben werden können. Es könnten mehr Servertypen und Anwendungen virtualisiert werden als in der Vergangenheit. Dies ist richtig, als die Computerumgebungen anfingen, vollständig virtuell zu werden.
LVM ist schrecklich ...
Als die vollständige Hot-Add-Funktionalität auf VM-Ebene verfügbar und üblich war (2011-2012), arbeitete ich mit einer Firma zusammen, die sich bemühte, die Verfügbarkeit der VMs ihrer Kunden um jeden Preis zu gewährleisten ( dumm ). Also diese enthalten Online VMware CPU / RAM erhöht und riskant auf bestehenden VMDKs Ändern der Größe LVM - Platte. Die meisten Linux-Systeme in dieser Umgebung waren einzelne VMDK-Setups mit ext3-Partitionen auf LVM. Dies war schrecklich, da die LVM-Schicht die Komplexität und das unnötige Risiko für den Betrieb erhöht hat. Wenn beispielsweise in / usr nicht genügend Speicherplatz zur Verfügung steht, kann dies zu einer Reihe von Fehlentscheidungen führen, die letztendlich die Wiederherstellung eines Systems aus Sicherungskopien bedeuteten. Dies war teilweise prozess- und kulturbedingt, aber dennoch ...
Partition Snobismus ...
Ich habe diese Gelegenheit genutzt, um dies zu ändern. Ich bin ein bisschen wie ein Partitions-Snob in Linux und denke, dass Dateisysteme für Überwachungs- und Betriebsanforderungen getrennt werden sollten. Ich mag LVM auch nicht, besonders mit VMware und der Fähigkeit, das zu tun, wonach Sie fragen. Deshalb habe ich das Hinzufügen von VMDK-Dateien zu Partitionen erweitert, die möglicherweise größer werden könnten. / opt, / var, / home könnten bei Bedarf ihre eigenen virtuellen Maschinendateien abrufen. Und das wären rohe Scheiben. Manchmal war dies eine einfachere Methode, um bestimmte untergroße Partitionen im laufenden Betrieb zu erweitern.
Obamacare ...
Mit der Einbindung eines sehr hochkarätigen Clients wurde ich mit dem Entwurf der Linux-VM-Referenzvorlage beauftragt, die zum Erstellen ihrer äußerst sichtbaren Anwendungsumgebung verwendet werden sollte. Die Sicherheitsanforderungen der Anwendung erforderten einen eindeutigen Satz von Bereitstellungen. Daher arbeiteten die Entwickler daran, die nicht wachsenden Partitionen auf eine VMDK zu packen und dann für jede Bereitstellung, die Wachstumspotenzial oder spezifische Anforderungen hatte (Verschlüsselung, Auditing usw.) Letztendlich bestanden diese VMs aus 5 oder mehr VMDKs, boten jedoch die beste Flexibilität für zukünftige Größenänderungen und den Schutz von Daten.
Was ich heute mache ...
Heute ist mein allgemeines Design für Linux und traditionelle Dateisysteme das Betriebssystem auf einer dünnen VMDK (partitioniert) und diskrete VMDKs für alles andere. Ich werde nach Bedarf hinzufügen. Für erweiterte Dateisysteme wie ZFS ist es ein VMDK für das Betriebssystem und ein weiteres VMDK, das als ZFS-Zpool dient und in der Größe geändert, in zusätzliche ZFS-Dateisysteme umgewandelt usw. werden kann.