La formazione ufficiale Red Hat

VDO Virtual Data Optimizer per la migliore gestione dello spazio disco con la De-Duplica su RHEL8 e CentOS8

Fabio Felici
Fabio Felici
RHCE
Ti piacerebbe diventare anche tu uno di noi e
pubblicare i tuoi articoli nel blog degli RHCE italiani?

Virtual Data Optimizer (VDO) – RHEL8/CentOS8


Con Virtual Data Optimizer ( VDO ) in RHEL8 e CentOS8 introduciamo un concetto di partizionamento di un volume a livello logico, un volume VDO provvede ad una riduzione in linea dei dati in Linux offrendo un sistema di Deduplicazione, Compressione e Thin Provisioning.

Con questa tecnologia, è possibile scambiare risorse CPU / RAM con spazio su disco. La disponibilità di VDO è uno dei risultati dell’acquisizione di Permabit Technology Corporation da parte di Red Hat nel 2017. Il codice è disponibile negli RPM di origine e vengono stabiliti progetti a monte.

Requisiti

VDO richiede spazio di archiviazione sia per i metadati VDO che per l’indice di deduplicazione UDS effettivo.

UDS Kernel Module (uds)

L’indice UDS fornisce le basi del prodotto VDO. Per ogni nuovo pezzo di dati, determina rapidamente se quel pezzo è identico a qualsiasi pezzo di dati precedentemente memorizzato. Se l’indice trova corrispondenza, il sistema di archiviazione può quindi fare riferimento internamente all’item esistente per evitare di memorizzare le stesse informazioni più di una volta.
L’indice UDS viene eseguito all’interno del kernel come modulo del kernel uds.

VDO scrive due tipi di metadati nella memoria fisica sottostante:

  • Il primo tipo viene ridimensionato in base alle dimensioni fisiche del volume VDO e utilizza circa 1 MB per ogni 4 GB di memoria fisica più 1 MB aggiuntivo per slab. Il secondo tipo si ridimensiona con la dimensione logica del volume VDO e consuma circa 1,25 MB per ogni 1 GB di memoria logica, arrotondato per eccesso al slab più vicino.
  • L’indice UDS è memorizzato nel gruppo di volumi VDO ed è gestito dall’istanza VDO associata. La quantità di memoria richiesta dipende dal tipo di indice e dalla quantità di RAM allocata all’indice. Per ogni 1 GB di RAM, un indice UDS denso utilizzerà 17 GB di memoria e un indice UDS sparso utilizzerà 170 GB di memoria.

VDO Volume

In RHEL8 e CentOS8 VDO utilizza un dispositivo a blocchi come archivio di backup, che può includere un’aggregazione di archiviazione fisica costituita da uno o più dischi, partizioni o persino file flat. Quando un volume VDO viene creato da uno strumento di gestione della memoria, VDO riserva spazio dal volume sia per un indice UDS che per il volume VDO, che interagiscono insieme per fornire spazio di archiviazione deduplicato agli utenti e alle applicazioni.

Slabs

La memoria fisica del volume VDO è divisa in un numero di slabs, ognuna delle quali è una regione contigua dello spazio fisico. Tutte le slabs per un determinato volume avranno le stesse dimensioni, che possono essere qualsiasi potenza di 2 multipli di 128 MB fino a 32 GB. La dimensione predefinita della slab è di 2 GB per facilitare la valutazione di VDO su sistemi di test più piccoli. Un singolo volume VDO può avere fino a 8096 slabs. Pertanto, nella configurazione predefinita con slabs da 2 GB, la memoria fisica massima consentita è di 16 TB. Quando si utilizzano slabs da 32 GB, la memoria fisica massima consentita è di 256 TB. Almeno un’intera slab è riservata da VDO per i metadati e pertanto non può essere utilizzata per l’archiviazione dei dati utente. La dimensione della slab non ha alcun effetto sulle prestazioni del volume VDO.

Installazione VDO

In RHEL8 e CentOS8 VDO necessità di due RPM:

  • vdo
  • kmod-kvdo

Usare dnf package manager per installare gli RPM necessari

# dnf install vdo kmod-kvdo -y

Creazione di un volume VDO

Creazione di un volume per un block device. Nota che più VDO possono essere creati con differenti device nella stessa macchina, ma bisognerà un nome e device differente per ogni istanza VDO nel sistema.

In questa casistica sostituire:

  • vdo-name: Con il nome del VDO che vogliamo ( es. vdo01 )
  • block-device: Con il nome del device persistente scelto ( es. /dev/disk/by-id/scsi-3600508b1001c264ad2af21e903ad031f)
  • logical-size: Con l’ammontare del Logical Storage che il VDO presenta:
    • Per le VM attive o l’archiviazione del contenitore, utilizzare una dimensione logica pari a dieci volte la dimensione fisica del dispositivo a blocchi. Ad esempio, se il dispositivo a blocchi ha una dimensione di 1TB, utilizzare qui 10TB.
    • Per object storage, utilizzare una dimensione logica pari a tre volte la dimensione fisica del dispositivo a blocchi. Ad esempio, se il dispositivo a blocchi ha una dimensione di 1TB, utilizzare 3TB qui.
# vdo create \
--name=vdo-name \
--device=block-device \
--vdoLogicalSize=logical-size

Creazione del filesystem

Creazione di un normale file system ext4 o xfs:

  • Per un file system XFS:
# mkfs.xfs -K /dev/mapper/vdo_name
  • Per un file system EXT4:
# mkfs.ext4 -E nodiscard /dev/mapper/vdo_name

Eseguire il mount del file system con la creazione di una directory ( es. /mnt/vdo_name ):

# mkdir -m 1777 /mnt/vdo_name
# mount /dev/mapper/vdo_name /mnt/vdo_name

Mount Automatico in fase di Bootstrap:

In RHEL8 e CentOS8 per configurare il file system per essere montato automaticamente, abbiamo a disposizione due modalità:

  1. Scrivere il classico punto di mount automatica nel file /etc/fstab
  2. Creare un Systemd Mount Unit File con un nome del file appropriato

Se si decide di usare il file di configurazione /etc/fstab aggiungere le seguenti linee a seconda del tipo di File System:

  • Per un file system XFS:
/dev/mapper/vdo_name /mnt/vdo_name xfs defaults,_netdev,x-systemd.device-timeout=0,x-systemd.requires=vdo.service 0 0
  • Per un file system EXT4:
/dev/mapper/vdo_name /mnt/vdo_name ext4 defaults,_netdev,x-systemd.device-timeout=0,x-systemd.requires=vdo.service 0 0

Se si decide invece di usare un Systemd Mount Unit File, bisogna creare un file di configurazione per systemd con questa dicitura:

# vim /etc/systemd/system/mnt-vdo_name.mount

Con il seguente contenuto:

[Unit]
Description = VDO unit file to mount file system
name = vdo_name.mount
Requires = vdo.service
After = multi-user.target
Conflicts = umount.target

[Mount]
What = /dev/mapper/vdo_name
Where = /mnt/vdo_name
Type = xfs

[Install]
WantedBy = multi-user.target

Sostituire vdo_name con il nome del vostro VDO. E’ disponibile un esempio di un file systemd unit in /usr/share/doc/vdo/examples/systemd/VDO.mount.example

Monitorare VDO

Poiché VDO è Thin Provisioned, il file system e le applicazioni percepiranno soltanto lo Spazio Logico in uso e non saranno consapevoli di quello fisico disponibile effettivo. L’occupazione totale può essere monitorata usando vdostats:

# vdostats --human-readable
Device 		        1K-blocks Used 	  Available 	Use% 	Space saving%
/dev/mapper/node1osd1   926.5G 	  21.0G   905.5G 	2% 	73%
/dev/mapper/node1osd2   926.5G 	  28.2G   898.3G 	3% 	64%

Quando lo spazio fisico di un volume VDO sarà in fase di esaurimento, VDO riporterà un warning nel system log, come questo:

Feb 18 14:13:39 system lvm[13863]: Monitoring VDO pool vdo_name.
Feb 18 14:27:39 system lvm[13863]: WARNING: VDO pool vdo_name is now 80.69%
full.
Feb 18 14:28:19 system lvm[13863]: WARNING: VDO pool vdo_name is now 85.25%
full.
Feb 18 14:29:39 system lvm[13863]: WARNING: VDO pool vdo_name is now 90.64%
full.
Feb 18 14:30:29 system lvm[13863]: WARNING: VDO pool vdo_name is now 96.07% full.

Importante

Monitorare lo spazio fisico sui volumi VDO per evitare situazioni di spazio insufficiente. L’esaurimento dei blocchi fisici potrebbe comportare la perdita di dati scritti di recente e non riconosciuti sul volume VDO.

Se vuoi approfondire questo tema puoi farlo!

Questo tema viene approfondito nei nostri corsi ufficiali Red Hat RH134 e relativo esame di certificazione EX200 per la RHCSA.


“Con l’aggiunta degli strumenti di deduplicazione e compressione dei dati di Permabit a Red Hat Enterprise Linux, Red Hat sarà pronta a supportare queste organizzazioni nel tentativo di ottenere un’impronta di archiviazione più efficiente per alimentare l’innovazione aziendale.”

JIM TOTTONVICE PRESIDENT AND GENERAL MANAGER, RED HAT
Info about author
Fabio Felici

Fabio Felici