Thick Provisioning e Thin Provisioning: Qual è la Differenza?

In questo articolo, esamineremo in dettaglio l’aspetto di pre-assegnazione dell’archiviazione delle impostazioni del disco virtuale e scopriremo cos’è il thick provisioning e il thin provisioning, qual è la differenza tra essi e quale di questi tipi di pre-assegnazione dell’archiviazione è migliore per l’infrastruttura.

Prova NAKIVO Backup & Replication:

Vincitore del Premio d’Oro “Best of VMworld 2018” per la Protezione dei Dati

Thick Provisioning

Il thick provisioning spesso è un tipo di pre-assegnazione dell’archiviazione. Con il thick provisioning, l’intera capacità di archiviazione su un disco virtuale viene pre-assegnata nella memoria fisica quando viene creato il disco virtuale. Un disco virtuale con il thick provisioning consuma tutto lo spazio assegnato nel datastore fin dall’inizio, quindi lo spazio non è disponibile per l’uso da parte di altre macchine virtuali.

Esistono due sottotipi di dischi virtuali con thick provisioning:

  • Un disco Lazy Zeroed è un disco che occupa tutto il suo spazio al momento della sua creazione, ma questo spazio potrebbe contenere alcuni vecchi dati sul supporto fisico. Questi vecchi dati non vengono cancellati o sovrascritti, quindi è necessario “azzerarli” prima che i nuovi dati possano essere scritti sui blocchi. Questo tipo di disco può essere creato più rapidamente, ma le sue prestazioni saranno inferiori per le prime scritture a causa dell’aumento di IOPS (operazioni di input / output al secondo) per i nuovi blocchi;
  • Un disco Eager Zeroed è un disco che riceve tutto lo spazio richiesto al momento della sua creazione e lo spazio viene pulito da eventuali dati precedenti sul supporto fisico. La creazione di dischi eager zeroed richiede più tempo, poiché gli zeri vengono scritti sull’intero disco, ma le loro prestazioni sono più veloci durante le prime scritture. Questo sottotipo di disco virtuale con thick provisioning supporta funzionalità di clustering, come la tolleranza agli errori.

Thick provisioning

Per motivi di sicurezza dei dati, l’azzeramento eager è più comune dell’azzeramento lazy con dischi virtuali con thick-provisioning. Perché? Quando si elimina un VMDK, i dati sul datastore non vengono completamente cancellati; i blocchi vengono semplicemente contrassegnati come disponibili, finché il sistema operativo non li sovrascrive. Se si crea un disco virtuale azzerato lazy su questo datastore, l’area del disco verrà completamente pulita (cioè azzerata), impedendo a chiunque con cattive intenzioni di recuperare i dati precedenti, anche se utilizzano software di terze parti specializzato.

Thin Provisioning

Il thin provisioning è un altro tipo di pre-assegnazione dell’archiviazione. Un disco virtuale con thin provisioning occupa solo lo spazio di cui ha bisogno inizialmente e cresce con il tempo in base alla domanda.

Ad esempio, se vuoi creare un nuovo disco virtuale da 30 GB con thin provisioning e vi  copierai 10 GB di file, la dimensione del file VMDK risultante sarà di 10 GB, mentre avresti un file VMDK da 30 GB se avessi scelto di utilizzare un disco con thick provisioning.

Thin Provisioning

I dischi virtuali con thin provisioning sono veloci da creare e utili per risparmiare lo spazio di archiviazione. Le prestazioni di un disco con thin provisioning non sono più elevate di quelle di un disco lazy zeroed con thick provisioning, perché per entrambi questi tipi di dischi devono essere scritti zeri prima di scrivere dati in un nuovo blocco. Si noti che quando si eliminano i dati da un disco virtuale con thin provisioning, la dimensione del disco non viene ridotta automaticamente. È perché il sistema operativo elimina solo gli indici dalla tabella dei file che fanno riferimento al corpo del file nel sistema di file; contrassegna i blocchi che appartenevano ai file “cancellati” come liberi e accessibili per vi scrivere i nuovi dati. Questo è il motivo per cui vediamo la rimozione dei file in un istante. Se si trattasse di una cancellazione completa, in cui gli zeri sarebbero scritti sui blocchi occupati dai file eliminati, ci sarebbe voluto circa lo stesso tempo per copiare i file in questione. Vedere l’illustrazione semplificata di seguito.

View from the operating system

Problemi che Possono Verificarsi Quando si Utilizzano Dischi Virtuali con Thin Provisioning

L’utilizzo di dischi virtuali con thin provisioning non è sempre agevole. Ci sono alcuni problemi che dovresti conoscere e preparati a risolvere.

Scarica il nostro Libro Bianco Gratuito: : “Come Calcolare l’Obiettivo del Tempo di Recupero e Ridurre i Costi Legati al Tempo Improduttivo”

Esaminiamo un esempio che rende inutilizzabili le macchine virtuali.  Ad esempio, abbiamo un datastore da 20 GB con tre macchine virtuali in esecuzione su di esso. Ogni macchina virtuale ha un set di dischi virtuali con thin provisioning con una dimensione massima di 10 GB. (Questa pratica è chiamata “overprovisioning” – assegniamo ai dischi virtuali più spazio di quello che possono fisicamente occupare.  Questo viene fatto spesso, in quanto consente di scalare il sistema aggiungendo più spazio fisico a seconda delle necessità.)  La dimensione del file di ogni disco virtuale si espanderà man mano che i dati verranno aggiunti, finché non sarà rimasto spazio libero sul datastore.  La situazione diventa critica quando sull’archivio dati è rimasto solo 1 GB di spazio libero, ad esempio quando VM1 occupa 8 GB, VM2 occupa 7 GB e VM3 – 4 GB.

I metodi regolari di eliminazione dei file all’interno delle macchine virtuali non aiutano a ridurre i dischi virtuali con thin provisioning. Se più di 1 GB di nuovi dati vengono scritti su una di queste macchine virtuali, tutti e tre non funzioneranno e sarà necessario migrare una o più macchine virtuali su un altro archivio dati per ripristinare i relativi stati di funzionamento.

Come Ridurre la Dimensione del Disco Virtuale con Thin Provisioning dopo l’Eliminazione dei File

Per essere in grado di ridurre la dimensione del file VMDK dei tuoi dischi virtuali con thin provisioning, devi sapere come azzerare i blocchi precedentemente occupati dai dati eliminati. Scopriamo come farlo.

Le operazioni di riduzione del disco sono possibili solo se le macchine virtuali non contengono snapshot. Inoltre, si prega di essere attenti ed eseguire i comandi sotto la propria responsabilità. Effettua sempre il backup di tutti i tuoi dati importanti prima di eseguire qualsiasi operazione sul disco. Per eseguire il back delle tue macchine virtuali VMware e Hyper-V,  utilizza NAKIVO Backup & Replication.

Riduzione dei dischi VMware con Thin-provisioning in Linux

Esaminiamo un esempio: abbiamo un file VMDK da 10.266.496 KB (10 GB) (abbiamo imparato a conoscere le sue dimensioni andando nella directory sul datastore in cui si trova la nostra macchina virtuale) e vogliamo ridurre il disco virtuale su cui è installato il SO guest Linux. Possiamo provare a eliminare file non necessari su questo disco virtuale. Tuttavia, Linux non azzera automaticamente i blocchi dopo l’eliminazione dei file; dovrai farlo tu stesso. È possibile farlo utilizzando l’utilità dd (duplicatore dei dati) utility per copiare e convertire i dati. Questo strumento è disponibile su tutti i sistemi Linux.

NOTA: Prima di eseguire l’utilità ddè necessario assicurarsi che il datastore abbia una capacità sufficiente per utilizzarlo (ad esempio, per il server ESXi, puoi controllare la capacità di archiviazione nella sezione di archiviazione di client vSphere – andare a Configuration >> Storage).

Utilizziamo l’utilità dd.

1. Inanzitutto, controlliamo lo spazio libero su una macchina virtuale guest Linux usando il comando df –h:

root@test-virtual-machine:/# df –h

Otteniamo il seguente output nella console:

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/1000

Da questo output possiamo vedere che la partizione / (root) contiene 8.8 GB di file.

2. Eliminiamo alcuni gigabyte di file non necessari nella partizione root. Questo è ciò che vediamo nella console, se eseguiamo il comando df –h /:

			Filesystem   Size   Used   Avail   Use%   Mounted on
			/dev/sda7    17G    4,7G   11G     31%    /

Pertanto, la nostra partizione root ora contiene 4,7 GB di file. Tuttavia, andando alla directory in cui si trova il nostro file VMDK, possiamo vedere che la sua dimensione è ancora 10.266.496 KB (10 GB).

3. Ora riempiremo lo spazio libero con zeri (nel nostro caso riempiremo 10 GB su 11 GB disponibili). Per prima cosa, digitiamo cd seguito dal nome della directory in cui è montata la partizione che deve essere azzerata (nel nostro caso è cd /, perché vogliamo passare alla partizione root). Successivamente, eseguiamo il seguente comando, cambiando le variabili in base alle nostre esigenze:

			dd bs=1M count=10240 if=/dev/zero of=zero

In questo commando:

– dd può essere eseguito solo come super user.

– bs imposta la dimensione del blocco (ad esempio, bs=1M ti darebbe una dimensione di blocco di 1 Megabyte).

– count specifica il numero di blocchi da copiare (il valore predefinito è per dd di continuare ad andare avanti sempre o fino a quando l’input non si esaurisce). Nel nostro caso, 10.240 MB è la quantità di spazio libero che vogliamo riempire con zeri, quindi il numero di blocchi da 1 Megabyte è 10240.

– if significa “input file”. LÌ devi indicare la fonte da cui vuoi copiare i dati. Nel nostro caso, è /dev/zero – un file speciale (uno pseudo-dispositivo) che fornisce tanti caratteri nulli quanti ne vuoi leggere.

– of significa “output file”. LÌ si imposta la destinazione in cui si desidera scrivere/incollare i dati (nel nostro caso, il nome del file è zero).

Dopo aver eseguito il comando precedente, la dimensione del nostro file VMDK aumenta. Ecco l’output che vediamo dopo il comando completato con successo:

			10240+0 records in
			10240+0 records out
			10737418240 bytes (10 GB) copied, 59,4348 s, 181 MB/s
			Command has been completed successfully.

Quindi, ora la dimensione del nostro file VMDK è 11.321.856 KB (10,8 GB), il che significa che è stata espansa. Inoltre, se eseguiamo nuovamente il comando df –h /, vedremo quanto segue:

			Filesystem   Size   Used   Avail   Use%   Mounted on
			/dev/sda7    17G    15G    569M    97%    /

Ciò significa che quasi tutta la partizione root (cioè il 97%) è occupata. Questo perché abbiamo precedentemente riempito la maggior parte dello spazio “disponibile” con zeri. Ora, il nostro disco virtuale con thin provisioning è pronto per essere ridotto.

NOTA: per eseguire la riduzione, è necessario installare VMware Tools.

4. Per le macchine virtuali in esecuzione su ESXi VMware o Workstation VMware, eseguiamo i seguenti due comandi nel SO guest Linux.

a) Per assicurarci che la partizione del disco sia disponibile, eseguiamo il comando:

			root@test-virtual-machine:/# vmware-toolbox-cmd disk list

Ecco l’output che vediamo nel nostro caso (ad esempio, vediamo l’elenco delle partizioni disponibili):

			/
			/boot
			/var/log

La partizione root è presente, quindi possiamo procedere.

b) Per ridurre la partizione, eseguiamo il seguente comando:

			root@test-virtual-machine:/# vmware-toolbox-cmd disk shrink /

Ecco l’output che vediamo nel nostro caso:

			Please disregard any warnings about disk space for the duration of shrink process.
			Progress: 100 [===========>]
			Disk shrinking complete.

Ora, la dimensione del nostro file VMDK ridotto è 5.323/456 KB (ovvero 5,08 GB – molto meno dei 10,8 GB precedenti).

NOTA: se la macchina virtuale guest è in esecuzione su un server ESXi, dopo aver riempito i blocchi con zeri, è possibile seguire i seguenti passi:

  1. Spegnere la macchina virtuale o disconnettere il disco virtuale che si desidera ridurre.
  2. Connettersi all’host ESXi con il cliente SSH.
  3. Passare alla Cartella della Macchina Virtuale.
  4. Verificare l’utilizzo del disco con du -h.
  5. Eseguire vmkfstools -K test-virtual-machine.vmdk.
  6. Verificare l’utilizzo del disco con du -h ancora una volta.

La Versione Gratuita di NAKIVO Backup & Replication è la soluzione di protezione dei dati gratuita n. 1 che può essere installata su Linux e Windows.

Riduzione di dischi VMware con thin-provisioning in Windows

Come Linux, Windows non azzera automaticamente i blocchi dopo aver eliminato i file. Per azzerare lo spazio libero dei dischi di destinazione sulla macchina virtuale Windows, è necessario scaricare SDelete – un’utilità gratuita da Sysinternals Suite di Microsoft – e decomprimere i file dall’archivio scaricato in c:\program files\sdelete.

Quindi seguire i seguenti passi:

 1. Eseguire cmd.

2. Andare alla directory in cui si trova SDelete. Nel nostro caso, è:

cd c:\program files\sdelete

3. Per ciascuna partizione nella console, utilizzare il comando sdelete –z. Ecco ciò che abbiamo nel nostro caso:

sdelete -z c:

sdelete -z d:

Questi comandi azzereranno qualsiasi spazio libero sul disco con thin provisioning riempiendo qualsiasi spazio inutilizzato sulle partizioni specificate.

Aspetta un paio di minuti fino al termine del processo. Il tuo file VMDK si espanderà alla sua dimensione massima durante il processo.

4. Assicurarsi che VMware Tools siano installati sulla macchina virtuale Windows. Per impostazione predefinita, VMware Tools sono installati in c:\program files\vmware\vmware tools\. Passare a questa directory digitando:

cd c:\program files\vmware\vmware tools\

5. Per visualizzare le partizioni del disco disponibili, digitare:

vmwaretoolboxcmd disk list

6. Ridurre le partizioni del disco necessarie. Nel nostro caso, abbiamo eseguito i comandi:

vmwaretoolboxcmd disk shrink c:\

vmwaretoolboxcmd disk shrink d:\

Attendere fino a quando il programma avrà terminato la riduzione del disco.

È possibile utilizzare questo metodo per macchine virtuali in esecuzione su ESXi VMware o Workstation VMware.

Pianificatore delle Risorse Distribuite per l’Archiviazione VMware

Sopra, abbiamo menzionato una soluzione per ridurre manualmente i dischi con thin provisioning. Tuttavia, esiste un altro modo per gestire i dischi virtuali (sia thin provisioning che thick provisioning), se si utilizza un cluster di datastore in vSphere. VMware offre la migrazione automatica dei dischi virtuali all’interno del cluster del datastore per evitare il trabocco dell’archiviazione su disco in cui sono posizionati i dischi virtuali con thin provisioning e per bilanciare le risorse di I/O. Se si dispone di più di un datastore condiviso montato sul server ESXi, è possibile impostare il Pianificatore delle Risorse Distribuite per l’Archiviazione (Storage DRS). Storage DRS è una funzionalità di vCenter Server intelligente per la gestione efficiente dell’archiviazione VMFS e NFS che fornisce il posizionamento e la migrazione automatica del disco della macchina virtuale. È anche possibile impostare Storage DRS in modalità manuale se si preferisce approvare manualmente i suggerimenti di migrazione.

Attenersi alla seguente procedura per abilitare Storage DRS:

  1. Passare al cluster del datastore in Web Client vSphere.
  2. Andare a vCenter >> Datastore Clusters.
  3. Selezionare il proprio cluster del datastore e fare clic su Manage >> Settings >> Services >> Storage DRS.
  4. Fare clic su Edit.
  5. Configurare le impostazioni di automazione, le funzioni relative I/O e le opzioni avanzate necessarie.

datastore-cluster

6. Fare clic su OK per terminare.

If there are no datastore clusters in your vSphere environment, follow these steps to create and set up a new datastore cluster:

  1. Passare a vCenter >> Datacenters in Web Client vSphere.
  2. Fare clic con il tasto destro del mouse su Datacenter e selezionare New Datastore Cluster.
  3. Immettere il nome del proprio cluster del datastore e selezionare la casella di controllo vicino a “Turn On Storage DRS“.
  4. Selezionare le impostazioni di automazione, le funzioni relative a I/O e le opzioni avanzate necessarie.
  5. Fare clic su OK per terminare.

Conclusione

In questo post del blog, abbiamo considerato i tipi di dischi virtuali e valutato i vantaggi e gli svantaggi di ciascuno al fine di comprendere meglio le differenze tra il thick e il thin provisioning. I dischi eager zeroed con thick provisioning sono i migliori per prestazioni e sicurezza, ma richiedono abbastanza spazio di archiviazione gratuito e richiedono molto tempo per essere creati. I dischi lazy zeroed con thick provisioning sono buoni per i loro brevi tempi di creazione, ma non forniscono la stessa velocità dei dischi eager zeroed e sono meno sicuri. I dischi con thin provisioning sono la scelta migliore per salvare lo spazio del datastore al momento della creazione del disco. Puoi creare un disco virtuale con una dimensione massima maggiore rispetto allo spazio fisico che hai a disposizione (“overprovisioning”) e aggiungere più spazio fisico in futuro, ma ricorda che se lo spazio fisico sul disco si riempie e il disco con thin provisioning non può cresce per contenere più dati, le macchine virtuali diventeranno inutilizzabili, quindi non dimenticare di controllare in continuazione la quantità di spazio disponibile. Abbiamo anche esaminato i metodi di riduzione dei dischi virtuali VMware con thin provisioning, nel caso in cui preferisci non aggiungere più spazio di archiviazione e ridurre lo spazio occupato.

Thick Provisioning e Thin Provisioning: Qual è la Differenza?
Rate this post

Share:

LinkedIn Google+