GNU/Linux >> Linux Esercitazione >  >> Linux

Come utilizzare snapshot, cloni e replica in ZFS su Linux

Nel tutorial precedente, abbiamo imparato come creare uno zpool e un filesystem o un set di dati ZFS. In questo tutorial, ti mostrerò passo dopo passo come lavorare con gli snapshot, i cloni e la replica di ZFS. Istantanea, clona. e la replica sono le funzionalità più potenti del filesystem ZFS.

Istantanee ZFS:una panoramica

Snapshot è una delle funzionalità più potenti di ZFS, uno snapshot fornisce una copia point-in-time di sola lettura di un file system o volume che non consuma spazio aggiuntivo nel pool ZFS. L'istantanea utilizza solo spazio quando i riferimenti di blocco vengono modificati. Le istantanee preservano lo spazio su disco registrando solo le differenze tra il set di dati corrente e una versione precedente.

Un tipico esempio di utilizzo di uno snapshot è avere un modo rapido per eseguire il backup dello stato corrente del file system quando viene eseguita un'azione rischiosa come l'installazione di un software o un aggiornamento del sistema.

Creazione e distruzione di uno snapshot ZFS

Non è possibile accedere direttamente agli snapshot dei volumi, ma possono essere clonati, sottoposti a backup e ripristinati. Creare e distruggere uno snapshot ZFS è molto semplice, possiamo usare i comandi zfs snapshot e zfs destroy per questo.

Crea un pool chiamato datapool.

# zpool create datapool mirror /dev/sdb /dev/sdc 
# zpool list
NAME       SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
datapool  1.98G    65K  1.98G         -     0%     0%  1.00x  ONLINE  -

Ora abbiamo un pool chiamato datapool, quindi dobbiamo creare un filesystem ZFS per simulare la funzione snapshot.

# zfs create datapool/docs -o mountpoint=/docs
# zfs list -r datapool
NAME            USED  AVAIL  REFER  MOUNTPOINT
datapool       93.5K  1.92G    19K  /datapool
datapool/docs    19K  1.92G    19K  /docs

Per creare uno snapshot del file system, possiamo utilizzare il comando zfs snapshot specificando il pool e il nome dello snapshot. Possiamo utilizzare l'opzione -r se vogliamo creare uno snapshot in modo ricorsivo. Il nome dello snapshot deve soddisfare i seguenti requisiti di denominazione:

[email protected]
[email protected]
# zfs snapshot datapool/[email protected]
# zfs list -t snapshot
NAME                     USED  AVAIL  REFER  MOUNTPOINT
datapool/[email protected]      0      -  19.5K  -

Viene creato uno snapshot per datapool/docs.

Per distruggere lo snapshot, possiamo usare il comando zfs destroy come al solito.

# zfs destroy datapool/[email protected]
# zfs list -t snapshot
no datasets available

Ripristino di un'istantanea

Per la simulazione, dobbiamo creare un file di test nella directory /docs.

# echo "version 1" > /docs/data.txt
# cat /docs/data.txt
version 1
# zfs snapshot datapool/[email protected]
# zfs list -t snapshot
NAME                     USED  AVAIL  REFER  MOUNTPOINT
datapool/[email protected]     9K      -  19.5K  -

Ora cambiamo il contenuto di /docs/data.txt

# echo "version 2" > /docs/data.txt
# cat /docs/data.txt
version 2

Possiamo tornare completamente a uno snapshot più vecchio che ci fornirà la copia del momento nel momento in cui è stata scattata l'istantanea.

# zfs list -t snapshot
NAME                     USED  AVAIL  REFER  MOUNTPOINT
datapool/[email protected]  9.50K      -  19.5K  -
# zfs rollback datapool/[email protected]
# cat /docs/data.txt
version 1

Come possiamo vedere, il contenuto di data.txt è tornato al contenuto precedente.

Se vogliamo rinominare lo snapshot, possiamo utilizzare il comando zfs rename.

# zfs rename datapool/[email protected] datapool/[email protected]
# zfs list -t snapshot
NAME                     USED  AVAIL  REFER  MOUNTPOINT
datapool/[email protected]  9.50K      -  19.5K  -

Nota:un set di dati non può essere distrutto se esistono istantanee di questo set di dati, ma possiamo utilizzare l'opzione -r per sovrascriverlo.

# zfs destroy datapool/docs
cannot destroy 'datapool/docs': filesystem has children
use '-r' to destroy the following datasets:
datapool/[email protected]
# zfs destroy -r datapool/docs
# zfs list -t snapshot
no datasets available

Panoramica dei cloni ZFS

Un clone è un volume scrivibile o un file system il cui contenuto iniziale è lo stesso del set di dati da cui è stato creato.

Creazione e distruzione di un clone ZFS

I cloni possono essere creati solo da uno snapshot e uno snapshot non può essere eliminato finché non elimini il clone basato su questo snapshot. Per creare un clone, usa il comando zfs clone.

# zfs create datapool/docs -o mountpoint=/docs
# zfs list -r datapool
NAME            USED  AVAIL  REFER  MOUNTPOINT
datapool       93.5K  1.92G    19K  /datapool
datapool/docs    19K  1.92G    19K  /docs
# mkdir /docs/folder{1..5}
# ls /docs/
folder1  folder2  folder3  folder4  folder5
# zfs snapshot datapool/[email protected]
# zfs list -t snapshot
NAME                  USED  AVAIL  REFER  MOUNTPOINT
datapool/[email protected]      0      -    19K  -

Ora creiamo un clone dal datapool di snapshot/[email protected]

# zfs clone datapool/[email protected] datapool/pict
# zfs list
NAME            USED  AVAIL  REFER  MOUNTPOINT
datapool        166K  1.92G    19K  /datapool
datapool/docs    19K  1.92G    19K  /docs
datapool/pict     1K  1.92G    19K  /datapool/pict

Il processo di clonazione è terminato, lo snapshot datapool/[email protected] è stato clonato in /datapool/pict. Quando controlliamo il contenuto della directory /datapool/pict, il contenuto dovrebbe essere lo stesso di /datapool/docs.

# ls /datapool/pict
folder1  folder2  folder3  folder4  folder5

Dopo aver clonato uno snapshot, lo snapshot non può essere eliminato finché non elimini il set di dati.

# zfs destroy datapool/[email protected]
cannot destroy 'datapool/[email protected]': snapshot has dependent clones
use '-R' to destroy the following datasets:
datapool/pict
# zfs destroy datapool/pict

Finalmente possiamo distruggere l'istantanea.

# zfs destroy datapool/[email protected]
# zfs list -t snapshot
no datasets available

Panoramica della replica ZFS

La base per questa replica ZFS è uno snapshot, possiamo creare uno snapshot in qualsiasi momento e possiamo creare tutti gli snapshot che vogliamo. Creando, trasferendo e ripristinando continuamente le istantanee, è possibile fornire la sincronizzazione tra una o più macchine. ZFS fornisce una funzione di serializzazione incorporata che può inviare una rappresentazione del flusso dei dati allo standard output.

Configura replica ZFS

In questa sezione, voglio mostrarti come replicare un set di dati da un pool di dati a un pool di backup, ma è possibile non solo archiviare i dati su un altro pool connesso al sistema locale ma anche inviarli su una rete a un altro sistema. I comandi usati per replicare i dati sono zfs send e zfs receive.

Crea un altro pool chiamato backuppool.

# zpool create backuppool mirror sde sdf
# zpool list
NAME         SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
backuppool  1.98G    50K  1.98G         -     0%     0%  1.00x  ONLINE  -
datapool    1.98G   568K  1.98G         -     0%     0%  1.00x  ONLINE  -

Controlla lo stato della piscina:

# zpool status
  pool: datapool
 state: ONLINE
  scan: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        datapool    ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            sdb     ONLINE       0     0     0
            sdc     ONLINE       0     0     0

errors: No known data errors

pool:backuppool
 stato:ONLINE
  scansione:nessuno richiesto
config:

        NOME        STATO     LEGGI SCRIVERE CKSUM
        backuppool    ONLINE       0     0     0
mirror-0  ONLINE       0     0     0
            sde     ONLINE       0     0     0
            sdf     ONLINE        0     0     0

errori:

Crea un set di dati che replicheremo.

# zfs snapshot datapool/[email protected]
# zfs list -t snapshot
NAME                  USED  AVAIL  REFER  MOUNTPOINT
datapool/[email protected]      0      -    19K  -
# ls /docs/
folder1  folder2  folder3  folder4  folder5

È ora di eseguire la replica.

# zfs send datapool/[email protected] | zfs receive backuppool/backup
# zfs list
NAME                USED  AVAIL  REFER  MOUNTPOINT
backuppool           83K  1.92G    19K  /backuppool
backuppool/backup    19K  1.92G    19K  /backuppool/backup
datapool            527K  1.92G    19K  /datapool
datapool/docs        19K  1.92G    19K  /docs
# ls /backuppool/backup
folder1  folder2  folder3  folder4  folder5

Il datapool del set di dati/[email protected] è stato replicato correttamente nel backuppool/backup.

Per replicare un set di dati su un'altra macchina, possiamo utilizzare il comando seguente:

# zfs send datapool/[email protected] | ssh otherserver zfs recv backuppool/backup

Fatto.

Conclusione

Snapshot, clonazione e replica sono le funzionalità più potenti di ZFS. Gli snapshot vengono utilizzati per creare copie point-in-time di file system o volumi, la clonazione viene utilizzata per creare un set di dati duplicato e la replica viene utilizzata per replicare un set di dati da un pool di dati a un altro sulla stessa macchina o per replicare pool di dati tra diversi macchine.


Linux
  1. Come installare e utilizzare telnet su Kali Linux

  2. Come utilizzare TimeShift per eseguire il backup e il ripristino di Ubuntu Linux

  3. Che cos'è un comando Chown in Linux e come usarlo

  4. Come installare e utilizzare Flatpak in Linux

  5. Come installare e utilizzare Traceroute in Linux

Come creare e ripristinare snapshot VM in VirtualBox

Come utilizzare Timeshift per eseguire il backup e il ripristino di Linux

Come installare e utilizzare Tor Browser in Linux

Come installare e utilizzare phpMyAdmin in Linux

Come installare e utilizzare il comando fd in Linux

Come installare e utilizzare Nu Shell su Linux