Come abilitare la deduplicazione di ZFS

Come abilitare la deduplicazione di ZFS
La funzione di deduplicazione del filesystem ZFS è un modo per rimuovere i dati ridondanti dai pool/filesystem ZFS. In poche parole, se archivi molti file sul tuo pool/filesystem ZFS e alcuni di questi file sono gli stessi, solo una copia di questi file verrebbe mantenuta sul pool/filesystem ZFS. Il resto di essi sarà un riferimento a quella copia del file. Questo salverà molto spazio su disco sul pool/filesystem ZFS.

Tecnicamente, quando si copia/si muovi/crei nuovi file sul pool/filesystem ZFS, ZFS li dividerà in blocchi e confronterà questi blocchi con blocchi esistenti (dei file) memorizzati sul pool/filesystem ZFS per vedere se ha trovato eventuali corrispondenze. Quindi, anche se parti del file sono abbinate, la funzione di deduplicazione può salvare gli spazi disco del pool/filesystem ZFS.

In questo articolo, ti mostrerò come abilitare la deduplicazione sui pool/system ZFS. Quindi iniziamo.

Sommario:

  1. Creazione di un pool ZFS
  2. Abilitazione della deduplicazione sui pool ZFS
  3. Abilitazione della deduplicazione sui filesystem ZFS
  4. Test di deduplicazione ZFS
  5. Problemi di deduplicazione ZFS
  6. Disabilitazione della deduplicazione su pool/filesystem ZFS
  7. Casi d'uso per la deduplicazione ZFS
  8. Conclusione
  9. Riferimenti

Creazione di un pool ZFS:

Per sperimentare la deduplicazione di ZFS, creerò un nuovo pool ZFS usando il VDB E VDC Dispositivi di archiviazione in una configurazione Mirror. Puoi saltare questa sezione se hai già un pool ZFS per il test di deduplicazione.

$ sudo lsblk -e7

Per creare un nuovo pool ZFS Pool1 usando il VDB E VDC dispositivi di archiviazione in configurazione a specchio, eseguire il seguente comando:

$ sudo zpool create -f pool1 mirror /dev /vdb /dev /vdc

Un nuovo pool di ZFS Pool1 dovrebbe essere creato come puoi vedere nello screenshot qui sotto.

$ sudo zpool status

Deduplicazione abilitante sui pool ZFS:

In questa sezione, ti mostrerò come abilitare la deduplicazione sul tuo pool ZFS.

Puoi verificare se la deduplicazione è abilitata sul tuo pool ZFS Pool1 con il seguente comando:

$ sudo zfs ottieni dedup pool1

Come puoi vedere, la deduplicazione non è abilitata per impostazione predefinita.

Per abilitare la deduplicazione sul pool ZFS, eseguire il seguente comando:

$ sudo zfs set dedup = su pool1

La deduplicazione dovrebbe essere abilitata sul pool ZFS Pool1 Come puoi vedere nello screenshot qui sotto.

$ sudo zfs ottieni dedup pool1

Deduplicazione abilitante sui filesystem ZFS:

In questa sezione, ti mostrerò come abilitare la deduplicazione su un filesystem ZFS.

Innanzitutto, crea un filesystem ZFS FS1 sul tuo pool di ZFS Pool1 come segue:

$ sudo zfs crea pool1/fs1

Come puoi vedere, un nuovo filesystem ZFS FS1 È creato.

elenco $ sudo zfs

Come hai abilitato la deduplicazione sul pool Pool1, La deduplicazione è inoltre abilitata sul filesystem ZFS FS1 (Filesystem ZFS FS1 lo eredita dalla piscina Pool1).

$ sudo zfs ottieni dedup pool1/fs1

Come system ZFS FS1 eredita la deduplicazione (dedup) proprietà dal pool di ZFS Pool1, Se si disabilita la deduplicazione sul tuo pool ZFS Pool1, La deduplicazione dovrebbe essere disabilitata anche per il filesystem ZFS FS1. Se non lo vuoi, dovrai abilitare la deduplicazione sul tuo filesystem ZFS FS1.

È possibile abilitare la deduplicazione sul tuo filesystem ZFS FS1 come segue:

$ sudo zfs set dedup = su pool1/fs1

Come puoi vedere, la deduplicazione è abilitata per il tuo filesystem ZFS FS1.

Test di deduplicazione ZFS:

Per rendere le cose più semplici, distruggerò il filesystem ZFS FS1 Dal pool di ZFS Pool1.

$ sudo zfs distruggere pool1/fs1

Il filesystem ZFS FS1 dovrebbe essere rimosso dalla piscina Pool1.

Ho scaricato l'immagine ISO Arch Linux sul mio computer. Copariamolo nel pool ZFS Pool1.

download $ sudo cp -v/archlinux -2021.03.01-X86_64.iso /pool1 /image1.iso

Come puoi vedere, la prima volta che ho copiato l'immagine dell'Arch Linux Iso, è usata 740 MB di spazio su disco dalla piscina ZFS Pool1.

Inoltre, si noti che il rapporto di deduplicazione (Dedup) È 1.00x. 1.00x del rapporto di deduplicazione significa che tutti i dati sono univoci. Quindi, nessun dato è ancora deduplicato.

Copiamo la stessa immagine ISO Arch Linux nel pool ZFS Pool1 Ancora.

Come puoi vedere, solo 740 MB dello spazio su disco viene utilizzato anche se stiamo usando il doppio dello spazio su disco.

Il rapporto di deduplicazione (Dedup) anche aumentato a 2.00x. Significa che la deduplicazione sta risparmiando metà dello spazio del disco.

Elenco $ sudo zpool

Anche se circa 740 MB dello spazio del disco fisico viene utilizzato, logicamente 1.44 GB dello spazio su disco viene utilizzato sul pool ZFS Pool1 Come puoi vedere nello screenshot qui sotto.

elenco $ sudo zfs

Copiamo lo stesso file nel pool ZFS Pool1 qualche volta in più.

Come puoi vedere, dopo che lo stesso file viene copiato 5 volte nel pool ZFS Pool1, Logicamente la piscina utilizza circa 3.59 GB di spazio su disco.

elenco $ sudo zfs

Ma 5 copie dello stesso file usano solo circa 739 MB di spazio su disco dal dispositivo di archiviazione fisica.

Il rapporto di deduplicazione (Dedup) è circa 5 (5.01x). Quindi, la deduplicazione ha risparmiato circa l'80% (1-1/dedup) dello spazio disco disponibile del pool ZFS Pool1.

Maggiore il rapporto di deduplicazione (dedup) più alto dei dati che hai archiviato sul pool/filesystem ZFS, più spazio su disco stai risparmiando con deduplicazione.

Problemi di deduplicazione ZFS:

La deduplicazione è una funzionalità molto bella e risparmia molto spazio su disco del pool/filesystem ZFS se i dati che stai memorizzando sul pool/filesystem ZFS sono ridondanti (il file simile viene archiviato più volte) in natura.

Se i dati che stai archiviando sul tuo pool/filesystem ZFS non hanno molta ridondanza (quasi unica), allora la deduplicazione non ti farà bene. Invece, finirai per sprecare memoria che ZFS potrebbe altrimenti utilizzare per la memorizzazione nella cache e altre attività importanti.

Per funzionare la deduplicazione, ZFS deve tenere traccia dei blocchi di dati archiviati sul pool/filesystem ZFS. Per fare ciò, ZFS crea una tabella di deduplicazione (DDT) nella memoria (RAM) del computer e archivia i blocchi di dati hash del tuo pool/filesystem ZFS lì. Quindi, quando si tenta di copiare/spostare/creare un nuovo file sul pool/filesystem ZFS, ZFS può verificare la corrispondenza dei blocchi di dati e salvare gli spazi del disco utilizzando la deduplicazione.

Se non si archiviano dati ridondanti sul pool/system ZFS, non avrà luogo quasi nessuna deduplicazione e verrà salvata una quantità trascurabile di spazi di disco. Sia che deduplication salva spazi per disco o meno, ZFS dovrà comunque tenere traccia di tutti i blocchi di dati del pool/filesystem ZFS nella tabella di deduplicazione (DDT).

Quindi, se hai un grande pool/filesystem ZFS, ZFS dovrà utilizzare molta memoria per archiviare la tabella di deduplicazione (DDT). Se la deduplicazione ZFS non ti sta salvando molto spazio su disco, tutta quella memoria viene sprecata. Questo è un grosso problema di deduplicazione.

Un altro problema è l'elevato utilizzo della CPU. Se la tabella di deduplicazione (DDT) è troppo grande, gli ZF potrebbero anche dover fare molte operazioni di confronto e potrebbe aumentare l'utilizzo della CPU del tuo computer.

Se hai intenzione di utilizzare la deduplicazione, dovresti analizzare i tuoi dati e scoprire quanto bene la deduplicazione funzionerà con tali dati e se la deduplicazione può fare qualsiasi risparmio di costi per te.

Puoi scoprire quanta memoria la tabella di deduplicazione (DDT) del pool ZFS Pool1 sta usando con il seguente comando:

$ sudo zpool status -d pool1

Come puoi vedere, la tabella di deduplicazione (DDT) del pool ZFS Pool1 immagazzinato 5860 Le voci e ogni voce usano 324 byte di memoria.

Memoria utilizzata per DDT (pool1) = 5860 Voci x 324 byte per voce

= 1.898.640 byte
= 1.854.14 kb
= 1.8107 Mb

Disabilitazione della deduplicazione sui pool/filesystem ZFS:

Una volta abilitata la deduplicazione sul pool/filesystem ZFS, i dati deduplicati rimane deduplicati. Non sarai in grado di sbarazzarti di dati deduplicati anche se si disabilita la deduplicazione sul pool/filesystem ZFS.

Ma c'è un semplice hack per rimuovere la deduplicazione dal tuo pool/filesystem ZFS:

i) Copia tutti i dati dal tuo pool/filesystem ZFS in un'altra posizione.

ii) Rimuovere tutti i dati dal pool/filesystem ZFS.

iii) Disabilita deduplicazione sul pool/filesystem ZFS.

iv) Rimuovere i dati sul pool/filesystem ZFS.

Puoi disabilitare la deduplicazione sul tuo pool ZFS Pool1 con il seguente comando:

$ sudo zfs set dedup = off pool1

È possibile disabilitare la deduplicazione sul tuo filesystem ZFS FS1 (Creato nel pool Pool1) con il seguente comando:

$ sudo zfs set dedup = off pool1/fs1

Una volta rimossi tutti i file deduplicati e la deduplicazione è disabilitata, la tabella di deduplicazione (DDT) dovrebbe essere vuota come contrassegnato nello screenshot seguente. Questo è il modo in cui verifichi che non si sta svolgendo alcuna deduplicazione sul pool/filesystem ZFS.

$ sudo zpool status -d pool1

Casi d'uso per la deduplicazione ZFS:

La deduplicazione ZFS ha alcuni pro e contro. Ma ha alcuni usi e può essere una soluzione efficace in molti casi.

Per esempio,

i) Directory delle case utente: Potresti essere in grado di utilizzare la deduplicazione ZFS per le directory delle case utente dei server Linux. La maggior parte degli utenti potrebbe archiviare dati quasi simili sulle loro directory di casa. Quindi, c'è un'alta possibilità che la deduplicazione sia efficace lì.

ii) Web hosting condiviso: È possibile utilizzare la deduplicazione ZFS per hosting condiviso WordPress e altri siti Web CMS. Poiché WordPress e altri siti Web CMS hanno molti file simili, la deduplicazione ZFS sarà molto efficace lì.

iii) nuvole autosullate: Potresti essere in grado di salvare un bel po 'di spazio su disco se si utilizza la deduplicazione ZFS per la memorizzazione dei dati dell'utente NextCloud/OwnCloud.

iv) Sviluppo di Web e app: Se sei uno sviluppatore Web/app, è molto probabile che lavorerai con molti progetti. Potresti usare le stesse librerie (i.e. Moduli nodi, moduli Python) su molti progetti. In tali casi, la deduplicazione ZFS può effettivamente risparmiare molto spazio su disco.

Conclusione:

In questo articolo, ho discusso di come funziona la deduplicazione ZFS, i pro e i contro della deduplicazione ZFS e alcuni casi di utilizzo della deduplicazione ZFS. Ti ho mostrato come abilitare la deduplicazione sui pool/filesystem ZFS.

Ti ho anche mostrato come controllare la quantità di memoria La tabella di deduplicazione (DDT) dei pool/filesystem ZFS sta utilizzando. Ti ho mostrato come disabilitare la deduplicazione anche sui pool/filesystem ZFS.

Riferimenti:

[1] Come dimensionare la memoria principale per la deduplicazione ZFS

[2] Linux - Quanto è grande la mia tabella DEDUPE ZFS al momento? - GUASTO DEL SERVER

[3] Introduzione di ZF su Linux - Damian Wojstaw