Navidezni optimizator podatkov sistemov na osnovi Red Hat Enterprise Linux (AlmaLinux, Rocky Linux), VDO (Virtual Data Optimizer), podatke stiska in deduplicira na ravni blokov, sproti. Tako na isti disk spravi več podatkov: posebej učinkovit je tam, kjer je veliko ponavljajoče se vsebine, na primer pri slikah navideznih računalnikov, varnostnih kopijah ali slikah vsebnikov.
Kako deluje VDO?
VDO bloke, zapisane na disk, obdela v treh korakih:
- Izločanje ničelnih blokov: blokov, ki vsebujejo le ničle, ne zapiše na disk, temveč jih le zabeleži v metapodatkih (thin provisioning).
- Deduplikacija: ponavljajoče se bloke hrani v enem samem izvodu, na drugih mestih pa se le sklicuje nanj.
- Stiskanje: preostale bloke stisne z algoritmom LZ4.
Nosilec zato lahko kaže večjo logično velikost od fizičnega diska za njim. Dejansko zasedenost je treba redno spremljati, ker se pisanja ustavijo z napako, ko fizičnega prostora zmanjka.
VDO v AlmaLinux in Rocky Linux 9 in 10 (LVM-VDO)
Od izdaj 9 je VDO del LVM: nosilce je treba ustvariti z ukazom lvcreate, stari upravljalni program vdo ni več na voljo. Korake smo preizkusili v sistemih AlmaLinux 9.8 in 10.2.
Namesti potrebne pakete. AlmaLinux 9:
sudo dnf install lvm2 vdo kmod-kvdo
AlmaLinux 10:
sudo dnf install lvm2 vdo
V AlmaLinux 10 je modul jedra VDO že del jedra, ločenega paketa kmod-kvdo ni. Če tudi tam zaženeš ukaz za 9, se dnf ustavi z napako „Unable to find a match: kmod-kvdo” in ne namesti niti drugih paketov; takrat lvcreate --type vdo vrne napako /usr/bin/vdoformat: execvp failed.
Na praznem disku (tu /dev/sdb) ustvari skupino nosilcev, v njej pa nosilec VDO s fizično velikostjo 100 GB in logično velikostjo 300 GB:
sudo pvcreate /dev/sdb
sudo vgcreate vg_vdo /dev/sdb
sudo lvcreate --type vdo --name vdo1 --size 100G --virtualsize 300G vg_vdo
V preizkusu je bil nosilec s fizično velikostjo 5 GB in logično velikostjo 15 GB (--size 5G --virtualsize 15G) v obeh sistemih ustvarjen brez napak.
Formatiraj ga z datotečnim sistemom XFS (stikalo -K pri formatiranju preskoči nepotrebno zavrženje blokov) in ga priklopi:
sudo mkfs.xfs -K /dev/vg_vdo/vdo1
sudo mkdir -p /mnt/vdo1
sudo mount /dev/vg_vdo/vdo1 /mnt/vdo1
Za trajni priklop ga dodaj v datoteko /etc/fstab:
/dev/vg_vdo/vdo1 /mnt/vdo1 xfs defaults 0 0
VDO v AlmaLinux in Rocky Linux 8
Tega dela nismo preizkusili, sledi dokumentaciji Red Hat. V izdajah 8 ima VDO še lasten upravljalni program (ta je v 9 izginil):
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
vdo list pokaže ustvarjene nosilce, vdo status --name=my_vdo pa podrobnosti nosilca. Pred nadgradnjo sistema 8 na 9 je treba stare nosilce VDO pretvoriti v nosilce LVM-VDO (ukaz lvm_import_vdo).
Preverjanje prihranka in zasedenosti
Pri obeh različicah ukaz vdostats pokaže, koliko fizičnega prostora zasedajo podatki in kolikšen je prihranek:
sudo vdostats --human-readable
V preizkusu je bila dokumentacija, šestkrat kopirana na 15-GB nosilec, velika 136 MB (du), prihranek pa 91 %. Kljub temu so od 5 GB fizičnega prostora zasedeni 3 GB: toliko VDO sam veže za indeks deduplikacije in metapodatke, že pri praznem nosilcu (v AlmaLinux 9 enako 3 GB). Na majhnem nosilcu zato VDO nima smisla; povrne se na večjem nosilcu (vsaj nekaj deset GB) z veliko ponavljajočimi se podatki.
Stolpec Use% kaže zasedenost fizičnega prostora: če se dvigne nad 80 %, povečaj fizično velikost (pri LVM-VDO z ukazom lvextend) ali izbriši podatke. O splošnem preverjanju porabe diska piše članek o ukazih du in df.
Kdaj se VDO ne splača uporabiti?
Pri že stisnjenih podatkih (videoposnetkih, slikah, arhivih ZIP, šifriranih datotekah) VDO skoraj ne prihrani prostora, porablja pa procesor in pomnilnik. Takrat je boljša izbira preprost nosilec.
