A Red Hat Enterprise Linux alapú rendszerek (AlmaLinux, Rocky Linux) virtuális adatoptimalizálója, a VDO (Virtual Data Optimizer) blokkszinten, menet közben tömöríti és deduplikálja az adatokat. Így ugyanarra a lemezre több adat fér: különösen ott hatékony, ahol sok az ismétlődő tartalom, például virtuális gépek képfájljainál, mentéseknél vagy konténerképeknél.
Hogyan működik a VDO?
A VDO három lépésben dolgozza fel a lemezre írt blokkokat:
- Nullás blokkok kiszűrése: a csak nullákat tartalmazó blokkokat nem írja ki a lemezre, csak a metaadatokban jegyzi fel őket (thin provisioning).
- Deduplikáció: az ismétlődő blokkokat egyetlen példányban tárolja, a többi helyen csak hivatkozik rá.
- Tömörítés: a megmaradt blokkokat az LZ4 algoritmussal tömöríti.
A kötet ezért nagyobb logikai méretet mutathat, mint a mögötte lévő fizikai lemez. A tényleges helyfoglalást rendszeresen figyelni kell, mert ha a fizikai hely elfogy, az írások hibával leállnak.
VDO AlmaLinux és Rocky Linux 9 és 10 alatt (LVM-VDO)
A 9-es kiadásoktól a VDO az LVM része: a köteteket az lvcreate paranccsal kell létrehozni, a régi vdo kezelőprogram már nem érhető el. A lépéseket AlmaLinux 9.8 és 10.2 rendszeren próbáltuk ki.
Telepítse a szükséges csomagokat. AlmaLinux 9:
sudo dnf install lvm2 vdo kmod-kvdo
AlmaLinux 10:
sudo dnf install lvm2 vdo
AlmaLinux 10-en a VDO kernelmodulja már a kernel része, külön kmod-kvdo csomag nincs. Ha ott is a 9-es parancsot futtatja, a dnf „Unable to find a match: kmod-kvdo” hibával leáll, és a többi csomagot sem telepíti; ilyenkor a lvcreate --type vdo a /usr/bin/vdoformat: execvp failed hibát adja.
Hozzon létre egy kötetcsoportot az üres lemezen (itt /dev/sdb), majd benne egy VDO kötetet 100 GB fizikai és 300 GB logikai mérettel:
sudo pvcreate /dev/sdb
sudo vgcreate vg_vdo /dev/sdb
sudo lvcreate --type vdo --name vdo1 --size 100G --virtualsize 300G vg_vdo
A teszten egy 5 GB-os fizikai és 15 GB-os logikai méretű kötettel (--size 5G --virtualsize 15G) mindkét rendszeren hiba nélkül elkészült.
Formázza XFS fájlrendszerrel (a -K kapcsoló kihagyja a fölösleges blokkeldobást a formázáskor), és csatolja:
sudo mkfs.xfs -K /dev/vg_vdo/vdo1
sudo mkdir -p /mnt/vdo1
sudo mount /dev/vg_vdo/vdo1 /mnt/vdo1
Tartós csatoláshoz vegye fel az /etc/fstab fájlba:
/dev/vg_vdo/vdo1 /mnt/vdo1 xfs defaults 0 0
VDO AlmaLinux és Rocky Linux 8 alatt
Ezt a részt nem teszteltük, a Red Hat dokumentációját követi. A 8-as kiadásokon a VDO-nak még saját kezelőprogramja van (ez a 9-esben megszűnt):
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
A vdo list a létrehozott köteteket, a vdo status --name=my_vdo egy kötet részleteit mutatja. A 8-as rendszer 9-esre frissítése előtt a régi VDO köteteket LVM-VDO kötetté kell alakítani (lvm_import_vdo parancs).
A megtakarítás és a helyfoglalás ellenőrzése
Mindkét változatnál a vdostats parancs mutatja, mennyi fizikai helyet foglalnak az adatok, és mekkora a megtakarítás:
sudo vdostats --human-readable
A teszten a 15 GB-os kötetre hat példányban másolt dokumentáció 136 MB volt (du), a megtakarítás 91%. Ennek ellenére a 5 GB-os fizikai helyből 3 GB foglalt: ennyit maga a VDO köt le a deduplikációs indexnek és a metaadatoknak, már üres kötetnél is (AlmaLinux 9-en ugyanígy 3 GB volt). Kis köteten ezért a VDO-nak nincs értelme; sok ismétlődő adatot tartalmazó, nagyobb (legalább több tíz GB-os) köteten térül meg.
A Use% oszlop a fizikai hely telítettségét mutatja: ha 80% fölé emelkedik, bővítse a fizikai méretet (LVM-VDO esetén lvextend paranccsal), vagy töröljön adatot. A lemezhasználat általános ellenőrzéséről a du és df parancsokat bemutató cikk ír.
Mikor nem érdemes VDO-t használni?
Már tömörített adatoknál (videók, képek, ZIP-archívumok, titkosított fájlok) a VDO alig takarít meg helyet, viszont processzort és memóriát használ. Ilyenkor egy egyszerű kötet a jobb választás.
