Der virtuelle Datenoptimierer (VDO – Virtual Data Optimizer) von Systemen auf Basis von Red Hat Enterprise Linux (AlmaLinux, Rocky Linux) komprimiert und dedupliziert Daten auf Blockebene im laufenden Betrieb. Auf diese Weise passen mehr Daten auf dieselbe Festplatte: Dies ist besonders dort effizient, wo viele sich wiederholende Inhalte vorliegen, beispielsweise bei Image-Dateien virtueller Maschinen, Backups oder Container-Images.
Wie funktioniert VDO?
VDO verarbeitet die auf die Festplatte geschriebenen Blöcke in drei Schritten:
- Filterung von Blöcken, die ausschließlich Nullen enthalten: Blöcke, die nur Nullen enthalten, werden nicht auf die Festplatte geschrieben, sondern lediglich in den Metadaten vermerkt (Thin Provisioning).
- Deduplizierung: Wiederholende Blöcke werden nur in einer einzigen Kopie gespeichert, an den übrigen Stellen wird lediglich darauf verwiesen.
- Komprimierung: Die verbleibenden Blöcke werden mit dem LZ4-Algorithmus komprimiert.
Das Volume kann daher eine größere logische Größe aufweisen als die dahinterstehende physische Festplatte. Der tatsächliche Speicherplatzverbrauch muss regelmäßig überwacht werden, da Schreibvorgänge fehlschlagen, sobald der physische Speicherplatz erschöpft ist.
VDO unter AlmaLinux sowie Rocky Linux 9 und 10 (LVM-VDO)
Ab Version 9 ist VDO Teil von LVM: Die Volumes müssen mit dem Befehl „lvcreate“ erstellt werden; das alte vdo-Verwaltungsprogramm ist nicht mehr verfügbar. Wir haben die Schritte auf den Systemen AlmaLinux 9.8 und 10.2 getestet.
Installieren Sie die erforderlichen Pakete. AlmaLinux 9:
sudo dnf install lvm2 vdo kmod-kvdo
AlmaLinux 10:
sudo dnf install lvm2 vdo
Unter AlmaLinux 10 ist das VDO-Kernelmodul bereits Teil des Kernels; es gibt kein separates „kmod-kvdo“-Paket. Wenn Sie dort ebenfalls den Befehl „9“ ausführen, bricht „dnf“ mit der Fehlermeldung „Unable to find a match: kmod-kvdo“ ab und installiert auch die übrigen Pakete nicht; in diesem Fall gibt „lvcreate --type vdo“ den Fehler „/usr/bin/vdoformat: execvp failed“ aus.
Erstellen Sie eine Volume-Gruppe auf der leeren Festplatte (hier /dev/sdb) und anschließend darin ein VDO-Volume mit einer physischen Größe von 100 GB und einer logischen Größe von 300 GB:
sudo pvcreate /dev/sdb
sudo vgcreate vg_vdo /dev/sdb
sudo lvcreate --type vdo --name vdo1 --size 100G --virtualsize 300G vg_vdo
Der Test mit einem Volume von 5 GB physischer und 15 GB logischer Größe (--size 5G --virtualsize 15G) wurde auf beiden Systemen fehlerfrei durchgeführt.
Formatieren Sie die Festplatte mit dem XFS-Dateisystem (die Option -K verhindert das unnötige Löschen von Blöcken während der Formatierung) und hängen Sie sie ein:
sudo mkfs.xfs -K /dev/vg_vdo/vdo1
sudo mkdir -p /mnt/vdo1
sudo mount /dev/vg_vdo/vdo1 /mnt/vdo1
Für eine dauerhafte Einbindung fügen Sie bitte folgenden Eintrag in die Datei „/etc/fstab“ ein:
/dev/vg_vdo/vdo1 /mnt/vdo1 xfs defaults 0 0
VDO unter AlmaLinux und Rocky Linux 8
Dieser Abschnitt wurde von uns nicht getestet und folgt der Red-Hat-Dokumentation. In den Versionen 8 verfügt VDO noch über ein eigenes Verwaltungsprogramm (dies wurde in Version 9 abgeschafft):
sudo dnf install vdo kmod-kvdo
sudo vdo create --name=my_vdo --device=/dev/sdb --vdoLogicalSize=100G
sudo mkfs.xfs -K /dev/mapper/my_vdo
sudo udevadm settle
sudo mount /dev/mapper/my_vdo /mnt
Der Befehl „vdo list“ listet die erstellten Volumes auf, während „vdo status --name=my_vdo“ die Details eines Volumes anzeigt. Vor dem Upgrade von System 8 auf System 9 müssen die alten VDO-Volumes in LVM-VDO-Volumes umgewandelt werden (Befehl „lvm_import_vdo“).
Überprüfung der Reservierung und der freien Kapazitäten
Bei beiden Varianten zeigt der Befehl „vdostats“ an, wie viel physischen Speicherplatz die Daten belegen und wie hoch die Einsparung ist:
sudo vdostats --human-readable
Im Test betrug die Größe der in sechs Kopien auf das 15-GB-Volume kopierte Dokumentation 136 MB (nach du), was einer Einsparung von 91 % entspricht. Dennoch wurden von den 5 GB physischem Speicherplatz 3 GB belegt: Diese Menge beansprucht das VDO selbst für den Deduplizierungsindex und die Metadaten, selbst bei einem leeren Volume (unter AlmaLinux 9 waren es ebenfalls 3 GB). Auf kleinen Volumes macht der Einsatz von VDO daher keinen Sinn; erst auf größeren Volumes (mit mindestens mehreren zehn GB), die viele sich wiederholende Daten enthalten, zahlt sich der Einsatz aus.
Die Spalte „Use%“ zeigt die Auslastung des physischen Speicherplatzes an: Wenn der Wert über 80 % steigt, erweitern Sie bitte den physischen Speicherplatz (bei LVM-VDO mit dem Befehl „lvextend“) oder löschen Sie Daten. Informationen zur allgemeinen Überprüfung der Festplattenauslastung finden Sie in dem Artikel, in dem die Befehle „du“ und „df“ vorgestellt werden.
Wann ist die Verwendung von VDO nicht empfehlenswert?
Selbst bei bereits komprimierten Daten (Videos, Bilder, ZIP-Archive, verschlüsselte Dateien) spart VDO kaum Speicherplatz, beansprucht jedoch Rechenleistung und Arbeitsspeicher. In solchen Fällen ist ein einfaches Volume die bessere Wahl.
