Thick- und Thin-Provisioning: Was ist der Unterschied?
In diesem Artikel werden wir uns eingehend mit dem Aspekt der Speicher-Vorabzuweisung bei den Einstellungen für virtuelle Festplatten befassen und herausfinden, was „Thick Provisioning“ und „Thin Provisioning“ sind, worin sie sich unterscheiden und welche dieser Arten der Speicher-Vorabzuweisung für Ihre Infrastruktur besser geeignet ist.
Thick Provisioning
Thick Provisioning ist eine Art der Speicher-Vorabzuweisung. Beim Thick Provisioning wird die gesamte Speicherkapazität der virtuellen Festplatte bereits bei ihrer Erstellung auf dem physischen Speicher vorab zugewiesen. Eine virtuell mit Thick Provisioning bereitgestellte Festplatte belegt von Beginn an den gesamten ihr im Datenspeicher zugewiesenen Speicherplatz, sodass dieser Speicherplatz für andere virtuelle Maschinen nicht mehr zur Verfügung steht.
Es gibt zwei Unterarten von thick-provisioned virtuellen Festplatten:
- Eine
Lazy zeroed diskist eine Festplatte, die ihren gesamten Speicherplatz bereits zum Zeitpunkt ihrer Erstellung beansprucht; dieser Speicherplatz kann jedoch noch alte Daten auf dem physischen Speichermedium enthalten. Diese alten Daten werden weder gelöscht noch überschrieben, sodass sie „auf Null gesetzt“ werden müssen, bevor neue Daten in die Blöcke geschrieben werden können. Dieser Festplattentyp lässt sich schneller erstellen, weist jedoch bei den ersten Schreibvorgängen aufgrund der erhöhten IOPS (Eingabe-/Ausgabeoperationen pro Sekunde) für neue Blöcke eine geringere Leistung auf; - Eine
Eager zeroed diskist eine Festplatte, die bereits zum Zeitpunkt ihrer Erstellung den gesamten benötigten Speicherplatz belegt, wobei der Speicherplatz vollständig von allen früheren Daten auf dem physischen Medium bereinigt wird. Das Erstellen von „Eager Zeroed“-Festplatten dauert länger, da die gesamte Festplatte mit Nullen überschrieben wird, ihre Leistung ist jedoch bei den ersten Schreibvorgängen höher. Dieser Untertyp der thick-provisioned virtuellen Festplatte unterstützt Clustering-Funktionen wie Fehlertoleranz.

Aus Gründen der Datensicherheit ist „Eager Zeroing“ bei thick-provisioned virtuellen Festplatten üblicher als „Lazy Zeroing“. Warum? Wenn Sie eine VMDK löschen, werden die Daten auf dem Datenspeicher nicht vollständig gelöscht; die Blöcke werden lediglich als verfügbar markiert, bis das Betriebssystem sie überschreibt. Wenn Sie auf diesem Datenspeicher eine virtuelle Festplatte mit „Eager Zeroing“ erstellen, wird der Festplattenbereich vollständig gelöscht (d. h. mit Nullen überschrieben), wodurch verhindert wird, dass Personen mit böswilligen Absichten die früheren Daten wiederherstellen können – selbst wenn sie spezielle Software von Drittanbietern verwenden.
Thin Provisioning
Thin Provisioning ist eine weitere Art der Speicher-Vorabzuweisung. Eine virtuell mit Thin Provisioning bereitgestellte Festplatte belegt zunächst nur den benötigten Speicherplatz und wächst im Laufe der Zeit entsprechend dem Bedarf.
Wenn Sie beispielsweise eine neue, thin-provisioned virtuelle Festplatte mit 30 GB erstellen und 10 GB an Dateien darauf kopieren, beträgt die Größe der resultierenden VMDK-Datei 10 GB, während Sie bei Verwendung einer thick-provisioned Festplatte eine 30-GB-VMDK-Datei erhalten hätten.

Thin-provisioned virtuelle Festplatten lassen sich schnell erstellen und sind nützlich, um Speicher zu sparen. Die Leistung einer Thin-Provisioned-Festplatte ist nicht höher als die einer Lazy-Zeroed-Thick-Provisioned-Festplatte, da bei beiden Festplattentypen vor dem Schreiben von Daten in einen neuen Block Nullen geschrieben werden müssen. Beachten Sie, dass die Größe der Festplatte nicht automatisch verringert wird, wenn Sie Ihre Daten von einer Thin-Provisioned-Festplatte löschen. Dies liegt daran, dass das Betriebssystem lediglich die Einträge aus der Dateitabelle löscht, die auf den Dateikörper im Dateisystem verweisen; es markiert die Blöcke, die zu „gelöschten“ Dateien gehörten, als frei und zugänglich für das Schreiben neuer Daten. Aus diesem Grund erscheint das Entfernen von Dateien sofort erfolgt. Handelte es sich um eine vollständige Löschung, bei der die Blöcke, die von den gelöschten Dateien belegt waren, mit Nullen überschrieben würden, würde dies etwa genauso lange dauern wie das Kopieren der betreffenden Dateien. Siehe die vereinfachte Abbildung unten.

Probleme, die bei der Verwendung von Thin-Provisioned-Festplatten auftreten können
Die Verwendung von Thin-Provisioned-Festplatten verläuft nicht immer reibungslos. Es gibt einige Probleme, die Sie kennen und auf deren Bewältigung Sie vorbereitet sein sollten.
Betrachten wir ein Beispiel, das die Virtuellen Maschinen unbrauchbar macht. Nehmen wir beispielsweise einen 20-GB-Datenspeicher, auf dem drei Virtuelle Maschinen laufen. Jede virtuelle Maschine verfügt über einen Thin-Provisioning-Datenträger mit einer maximalen Größe von 10 GB. (Diese Vorgehensweise wird als „Overprovisioning“ bezeichnet – wir weisen virtuellen Datenträgern mehr Speicherplatz zu, als sie physisch belegen können. Dies wird häufig so gehandhabt, da es Ihnen ermöglicht, die Skalierung des Systems durchzuführen, indem Sie bei Bedarf weiteren physischen Speicher hinzufügen.) Die Größe jeder virtuellen Festplatte wächst mit dem Hinzufügen von Daten, bis auf dem Datenspeicher kein freier Speicherplatz mehr vorhanden ist. Die Situation wird kritisch, wenn auf dem Datenspeicher nur noch 1 GB freier Speicherplatz übrig ist, beispielsweise wenn VM1 8 GB, VM2 7 GB und VM3 4 GB belegt.
Herkömmliche Methoden zum Löschen von Dateien innerhalb virtueller Maschinen tragen nicht dazu bei, die Thin-Provisioned-Festplatten zu verkleinern. Wenn mehr als 1 GB neuer Daten in eine dieser virtuellen Maschinen geschrieben wird, fallen alle drei aus, und Sie müssen eine oder mehrere der virtuellen Maschinen auf einen anderen Datenspeicher migrieren, um ihren Betriebszustand wiederherzustellen.
So verringern Sie die Größe einer Thin-Provisioned-Festplatte nach dem Löschen von Dateien
Um die VMDK-Dateigröße Ihrer Thin-Provisioned-Festplatten zu verringern, müssen Sie wissen, wie Sie die Blöcke, die zuvor von den gelöschten Daten belegt waren, mit Nullen überschreiben. Sehen wir uns an, wie das funktioniert. Hinweis: Das Verkleinern von Festplatten ist nur möglich, wenn die Virtuellen Maschinen keine Schnappschüsse enthalten. Seien Sie bitte vorsichtig und führen Sie die Befehle auf eigene Verantwortung aus. Sichern Sie immer alle wichtigen Daten, bevor Sie Festplattenoperationen durchführen.
Verkleinerung von Thin-Provisioned-VMware-Festplatten unter Linux
Betrachten wir ein Beispiel: Wir haben eine VMDK-Datei mit einer Größe von 10.266.496 KB (10 GB) (die Größe haben wir ermittelt, indem wir das Verzeichnis auf dem Datenspeicher aufgerufen haben, in dem sich unsere virtuelle Maschine befindet) und möchten die virtuelle Festplatte verkleinern, auf der das Linux-Gastbetriebssystem installiert ist. Wir können versuchen, nicht benötigte Dateien auf dieser virtuellen Festplatte zu löschen. Allerdings setzt Linux die Blöcke nach dem Löschen von Dateien nicht automatisch auf Null; dies müssen Sie selbst vornehmen. Dazu können Sie das Dienstprogramm „ dd “ (Datenduplikator) zum Kopieren und Konvertieren von Daten verwenden. Dieses Tool ist auf allen Linux-Systemen verfügbar.
Hinweis: Bevor Sie das Dienstprogramm „ dd “ ausführen, müssen Sie sicherstellen, dass der Datenspeicher über genügend Kapazität verfügt (bei einem ESXi-Server können Sie die Speicherkapazität beispielsweise im Abschnitt „Speicher“ des vSphere-Clients überprüfen – gehen Sie dazu auf Configuration > Storage).
Verwenden wir nun das Dienstprogramm „ dd “.
-
Zunächst überprüfen wir den freien Speicherplatz auf einer virtuellen Linux-Maschine mit dem Befehl „
df -h“:root@test-virtual-machine:/# df -hIn der Konsole erhalten wir folgende Ausgabe:
Filesystem Size Used Avail Use% Mounted on
udev 469M 0 469M 0% /dev
tmpfs 99M 6,3M 92M 7% /run
/dev/sda7 17G 8,8G 6,4G 58% /
tmpfs 491M 116K 491M 1% /dev/shm
tmpfs 5,0M 4,0K 5,0M 1% /run/lock
tmpfs 491M 0 491M 0% /sys/fs/cgroup
/dev/sda1 945M 121M 760M 14% /boot
/dev/sda6 3,7G 13M 3,5G 1% /var/log
tmpfs 99M 36K 99M 1% /run/user/1000Aus dieser Ausgabe geht hervor, dass die Partition „
/“ (Root) 8,8 GB an Dateien enthält. -
Löschen wir nun einige Gigabyte an unnötigen Dateien in der Root-Partition. Folgendes sehen wir in der Konsole, wenn wir den Befehl
df -h /ausführen:Filesystem Size Used Avail Use% Mounted on
/dev/sda7 17G 4,7G 11G 31% /Somit enthält unsere Root-Partition nun 4,7 GB an Dateien. Wenn wir jedoch in das Verzeichnis wechseln, in dem sich unsere VMDK-Datei befindet, sehen wir, dass ihre Größe immer noch 10.266.496 KB (10 GB) beträgt.
-
Nun werden wir den freien Speicherplatz mit Nullen füllen (in unserem Fall füllen wir 10 GB von den verfügbaren 11 GB). Zunächst geben wir
cdein, gefolgt vom Namen des Verzeichnisses, in dem die Partition, die mit Nullen gefüllt werden soll, eingebunden ist (in unserem Fall ist diescd /, da wir zur Root-Partition navigieren möchten). Nach dem Ausführen des folgenden Befehls passen wir die Variablen an unsere Bedürfnisse an: `dd bs=1M count=10240 if=/dev/zero of=zero` In diesem Befehl: `
dd` kann nur als Superuser ausgeführt werden. `- ` `
bs` legt die Größe des Blocks fest (beispielsweise würde `bs=1M` eine Größe des Blocks von 1 Megabyte ergeben). ` - ` `
count` gibt die Anzahl der zu kopierenden Blöcke an (die Standardeinstellung für `dd` ist, dass der Vorgang endlos fortgesetzt wird oder bis die Eingabe erschöpft ist). In unserem Fall beträgt der freie Speicherplatz, den wir mit Nullen füllen möchten, 10.240 MB, sodass die Anzahl der 1-Megabyte-Blöcke 10240 beträgt. -
ifsteht für „Eingabedatei“. Hier sollten Sie die Quelle angeben, aus der Sie Daten kopieren möchten. In unserem Fall ist dies/dev/zero– eine spezielle Datei (ein Pseudogerät), die so viele Nullzeichen bereitstellt, wie Sie daraus lesen möchten. ofsteht für „Ausgabedatei“. Hier legen Sie das Ziel fest, in das Sie Ihre Daten schreiben bzw. einfügen möchten (in unserem Fall lautet der Name der Dateizero).
Nach Ausführung des obigen Befehls wächst die Größe unserer VMDK-Datei. Dies ist die Ausgabe, die wir nach erfolgreicher Ausführung des Befehls sehen:
10240+0 records in
10240+0 records out
10737418240 bytes (10 GB) copied, 59,4348 s, 181 MB/s
Command has been completed successfully.Die Größe unserer VMDK-Datei beträgt nun also 11.321.856 KB (10,8 GB), was bedeutet, dass sie angewachsen ist. Wenn wir zudem den Befehl
df -h /erneut ausführen, sehen wir Folgendes:Filesystem Size Used Avail Use% Mounted on
/dev/sda7 17G 15G 569M 97% /Dies bedeutet, dass fast die gesamte Root-Partition (d. h. 97 %) belegt ist. Das liegt daran, dass wir den größten Teil des zuvor „verfügbaren“ Speicherplatzes mit Nullen gefüllt haben. Nun ist unsere dünn bereitgestellte virtuelle Festplatte bereit, verkleinert zu werden.
Hinweis: Um die Verkleinerung durchzuführen, ist die Installation von VMware Tools erforderlich.
-
Bei virtuellen Maschinen, die auf VMware ESXi oder VMware Arbeitsstation laufen, führen wir die folgenden beiden Befehle im Linux-Gastbetriebssystem aus.a) Um sicherzustellen, dass die Partition der Festplatte verfügbar ist, führen wir den Befehl aus:
root@test-virtual-machine:/# vmware-toolbox-cmd disk list
Dies ist die Ausgabe, die wir in unserem Fall sehen (d. h., wir sehen die Liste der verfügbaren Partitionen):
/
/boot
/var/log
Die Root-Partition ist vorhanden, sodass wir fortfahren können.b) Um die Partition zu verkleinern, führen wir den folgenden Befehl aus:
root@test-virtual-machine:/# vmware-toolbox-cmd disk shrink /
Dies ist die Ausgabe, die wir in unserem Fall sehen:
Please disregard any warnings about disk space for the duration of shrink process.
Progress: 100 [===========>]
Disk shrinking complete.Nun beträgt die Größe unserer verkleinerten VMDK-Datei 5.323.456 KB (das entspricht 5,08 GB – deutlich weniger als die zuvor vorhandenen 10,8 GB).
Hinweis: Wenn Ihre virtuelle Maschine auf einem ESXi-Server läuft, können Sie nach dem Füllen der Blöcke mit Nullen die folgenden Schritte ausführen:
- Schalten Sie die Virtuelle Maschine aus oder trennen Sie die virtuelle Festplatte, die Sie verkleinern möchten.
- Verbinden Sie sich mit dem SSH-Client mit dem ESXi-Host.
- Navigieren Sie zu „
Virtual Machine Folder“. - Überprüfen Sie die Festplattennutzung mit „
du -h“. - Führen Sie „
vmkfstools -K test-virtual-machine.vmdk“ aus. - Überprüfen Sie die Festplattennutzung erneut mit „
du -h“.
Verkleinern von Thin-Provisioned-VMware-Festplatten unter Windows
Wie unter Linux werden auch unter Windows Blöcke nach dem Löschen von Dateien nicht automatisch auf Null gesetzt. Um den freien Speicherplatz der Zielfestplatten auf Ihrer virtuellen Windows-Maschine auf Null setzen zu können, müssen Sie SDelete – ein kostenloses Dienstprogramm aus der Sysinternals-Suite von Microsoft – herunterladen und die Dateien aus dem heruntergeladenen Archiv in c:program filessdelete
entpacken. Führen Sie anschließend die folgenden Schritte aus:
- Führen Sie
cmd -
aus. Wechseln Sie in das Verzeichnis, in dem sich
SDeletebefindet. In unserem Fall ist dies:cd c:program filessdelete -
Verwenden Sie für jede Partition in der Konsole den Befehl
sdelete -z. In unserem Fall sieht das so aus:sdelete -z c:
sdelete -z d:
Diese Befehle setzen den freien Speicherplatz auf Ihrer Thin-Provisioned-Festplatte auf Null, indem sie den ungenutzten Speicherplatz auf den angegebenen Partitionen auffüllen. Warten Sie einige Minuten, bis der Vorgang fertiggestellt ist. Ihre VMDK-Datei wird während des Vorgangs auf ihre maximale Größe erweitert.
-
Stellen Sie sicher, dass VMware Tools auf Ihrer virtuellen Windows-Maschine installiert sind. Standardmäßig werden VMware Tools unter
c:program filesvmwarevmware toolsinstalliert. Navigieren Sie zu diesem Verzeichnis, indem Sie Folgendes eingeben:
cd c:program filesvmwarevmware tools -
Um die verfügbaren Festplattenpartitionen anzusehen, geben Sie Folgendes ein:
vmwaretoolboxcmd disk list -
Verkleinern Sie die gewünschten Festplattenpartitionen. In unserem Fall haben wir folgende Befehle ausgeführt:
vmwaretoolboxcmd disk shrink c:
vmwaretoolboxcmd disk shrink d:
Warten Sie, bis das Programm die Verkleinerung der Festplatte fertiggestellt hat.
Sie können diese Methode für Virtuelle Maschinen verwenden, die auf VMware ESXi oder VMware Workstation laufen.
VMware Storage Distributed Resource Scheduler
Oben haben wir eine Lösung zum manuellen Verkleinern von Thin-Provisioned-Festplatten erwähnt. Es gibt jedoch noch eine weitere Möglichkeit, Ihre virtuellen Festplatten (sowohl Thin-Provisioned- als auch Thick-Provisioned-Festplatten) zu verwalten, wenn Sie einen Datenspeicher-Cluster in VMware vSphere verwenden. VMware bietet eine automatische Migration virtueller Festplatten innerhalb des Datenspeicher-Clusters an, um eine Überlastung des Festplattenspeichers, auf dem thin-provisionierte virtuelle Festplatten liegen, zu vermeiden und die E/A-Ressourcen auszugleichen.
Wenn Sie mehr als einen gemeinsam genutzten Datenspeicher auf dem ESXi-Server eingebunden haben, können Sie den Storage Distributed Resource Scheduler (Storage DRS) einrichten. Storage DRS ist eine intelligente Funktion von vCenter Server zum effizienten Management von VMFS- und NFS-Speicher, die die automatische Platzierung und Migration von Festplatten von Virtuellen Maschinen ermöglicht. Sie können Storage DRS auch in den manuellen Modus versetzen, wenn Sie Migrationsempfehlungen lieber manuell genehmigen möchten.
Führen Sie die folgenden Schritte aus, um Storage DRS zu aktivieren:
- Navigieren Sie im vSphere Web Client zum Datenspeicher-Cluster.
- Rufen Sie
vCenter > Datastore Clustersauf. - Wählen Sie Ihren Datenspeicher-Cluster aus und klicken Sie auf
Manage > Settings > Services > Storage DRS. - Klicken Sie auf „
Edit“. - Konfigurieren Sie die Automatisierungseinstellungen, die I/O-bezogenen Funktionen und die erweiterten Optionen nach Bedarf.

- Klicken Sie auf „
OK“, um den Vorgang zum Fertigstellen durchzuführen.
Wenn in Ihrer vSphere-Umgebung keine Datenspeichercluster vorhanden sind, führen Sie die folgenden Schritte aus, um einen neuen Datenspeichercluster zu erstellen und einzurichten:
- Navigieren Sie im vSphere Web Client zu „
vCenter > Datacenters“. - Klicken Sie mit der rechten Maustaste auf Ihr Rechenzentrum und wählen Sie „
New Datastore Cluster“. - Geben Sie den Namen Ihres Datenspeicher-Clusters ein und aktivieren Sie das Kontrollkästchen neben „
"Turn On Storage DRS"“. - Wählen Sie die gewünschten Automatisierungseinstellungen, I/O-bezogenen Funktionen und erweiterten Optionen aus.
- Klicken Sie auf „
OK“, um den Vorgang zum Fertigstellen durchzuführen.
Fazit
In diesem Blogbeitrag haben wir die verschiedenen Arten virtueller Festplatten betrachtet und deren Vor- und Nachteile abgewogen, um die Unterschiede zwischen Thick- und Thin-Provisioning besser zu verstehen. „Eager zeroed“-Thick-Provisioning-Festplatten bieten die beste Leistung und Sicherheit, erfordern jedoch ausreichend freien Speicher und ihre Erstellung nimmt viel Zeit in Anspruch. „Lazy zeroed“-Thick-Provisioning-Festplatten zeichnen sich durch kurze Erstellungszeiten aus, bieten jedoch nicht die gleiche Geschwindigkeit wie „Eager zeroed“-Festplatten und sind weniger sicher. Thin-Provisioning-Festplatten sind die beste Wahl, um zum Zeitpunkt der Festplattenerstellung Speicher im Datenspeicher zu sparen.
Sie können eine virtuelle Festplatte mit einer größeren maximalen Größe als dem Ihnen zur Verfügung stehenden physischen Speicherplatz erstellen („Overprovisioning“) und später weiteren physischen Speicher hinzufügen. Beachten Sie jedoch: Wenn der physische Speicherplatz voll ist und die „Thin-Provisioned“-Festplatte nicht vergrößert werden kann, um weitere Daten aufzunehmen, werden Ihre Virtuellen Maschinen unbrauchbar – vergessen Sie also nicht, den freien Speicherplatz im Auge zu behalten. Wir haben außerdem Methoden zum Verkleinern von Thin-Provisioned-Festplatten in VMware behandelt, falls Sie lieber keinen zusätzlichen Speicher hinzufügen möchten und den belegten Speicher reduzieren müssen.