Concetti e tutorial ZFS

Concetti e tutorial ZFS

ZFS: concetti e tutorial

Nella tua ricerca dell'integrità dei dati utilizzando OpenZFS è inevitabile. In effetti, sarebbe abbastanza sfortunato se stai usando qualsiasi cosa tranne ZF per memorizzare i tuoi dati preziosi. Tuttavia, molte persone sono riluttanti a provarlo. Il motivo è che un filesstem di livello aziendale con una vasta gamma di funzionalità integrate, ZFS deve essere difficile da usare e amministrare. Niente può essere più lontano dalla verità. L'uso di ZFS è facile come arriva. Con una manciata di terminologie e ancora meno comandi sei pronto per usare ZFS ovunque - dall'impresa alla tua casa/ufficio NAS.

Nelle parole dei creatori di ZFS: “Vogliamo rendere l'aggiunta di archiviazione al tuo sistema facile come l'aggiunta di nuovi bastoncini RAM."

Vedremo più avanti come è fatto. Userò FreeBSD 11.1 Per eseguire i test di seguito, i comandi e l'architettura sottostante sono simili per tutte le distribuzioni Linux che supportano OpenZFS.

L'intero stack ZFS può essere disposto nei seguenti livelli:

  • Provider di archiviazione - Dischi rotanti o SSD
  • VDEVS - Raggruppamento di provider di archiviazione in varie configurazioni RAID
  • ZPools - Aggregazione di VDEV in un unico pool di archiviazione
  • Z -Filesystems - set di dati con funzionalità interessanti come compressione e prenotazione.

Zpool crea

Per cominciare, iniziamo con una configurazione di dove abbiamo sei dischi da 20 GB ADA [1-6]

$ ls -al /dev /ada?

IL Ada0 è dove è installato il sistema operativo. Il resto verrà utilizzato per questa dimostrazione.

I nomi dei tuoi dischi possono differire a seconda del tipo di interfaccia utilizzata. Esempi tipici includono: DA0, ADA0, ACD0 E CD. Guardando dentro/devti darò un'idea di ciò che è disponibile.

UN Zpool è creato da zpool crea comando:

$ ZPool Crea ourfirstzpool Ada1 Ada2 Ada3
# E quindi eseguire il seguente comando:
$ zpool status

Vedremo un output pulito che ci dà informazioni dettagliate sul pool:

Questo è lo zpool più semplice senza ridondanza o tolleranza ai guasti ... ogni disco è il suo VDEV.

Tuttavia, otterrai comunque tutta la bontà ZFS come i checksum per ogni blocco di dati in modo che tu possa almeno rilevare se i dati che hai archiviato vengono corrotti.

Filesystems, a.K.Un set di dati, ora può essere creato sopra questo pool nel modo seguente:

$ zfs crea ourfirstzpool/setaset1

Ora usa il tuo familiare df -h comando o eseguire:

Elenco $ ZFS

Per vedere le proprietà del tuo filesystem appena creato:

Si noti, come è disponibile l'intero spazio offerto dai tre dischi (VDEV). Questo sarà vero per tutti i filesystem che crea sul pool a meno che non specifichiamo diversamente.

Se si desidera aggiungere un nuovo disco (VDEV), Ada4, Puoi farlo correndo:

$ zpool Aggiungi ourfirstzpool Ada4

Ora, se vedi lo stato del tuo filesystem

La dimensione disponibile è ora coltivata senza alcuna confusione aggiuntiva di far crescere la partizione o il backup e il ripristino dei dati sul filesystem.


Dispositivi virtuali - VDEVS

I VDEV sono i mattoni di uno Zpool, la maggior parte della ridondanza e delle prestazioni dipende dal modo in cui i tuoi dischi sono raggruppati in questi, i cosiddetti, VDEV . Diamo un'occhiata ad alcuni dei tipi più importanti di VDEV:

1. Raid 0 o strisce

Ogni disco agisce come il suo VDEV. Nessuna ridondanza di dati e i dati si sono diffusi in tutti i dischi. Noto anche come striping. Il fallimento di un singolo disco significherebbe che l'intero zpool è reso inutilizzabile. L'archiviazione utilizzabile è pari alla somma di tutti i dispositivi di archiviazione disponibili.

Il primo Zpool che abbiamo creato nella sezione precedente è un raid 0 o un array di archiviazione a strisce.

2. Raid 1 o specchio

I dati sono rispecchiati tra Ndischi. La capacità effettiva del VDEV è limitata dalla capacità grezza del disco più piccolo in questo N-array di disco. I dati sono rispecchiati tra N dischi, questo significa che puoi resistere al fallimento di N-1 dischi.

Per creare un array a specchio usa lo specchio della parola chiave:

$ ZPOOL Crea specchio del serbatoio Ada1 Ada2 ADA3

I dati scritti a cisterna ZPool sarà rispecchiato tra questi tre dischi e la memoria disponibile effettiva è pari alla dimensione del disco più piccolo, che in questo caso è di circa 20 GB.

In futuro, potresti voler aggiungere più dischi a questo pool e ci sono due possibili cose che puoi fare. Ad esempio, zpool cisterna Ha tre dischi che rispecchiano i dati come un singolo VDEV Mirror-0:

Potresti voler aggiungere un disco extra, diciamo Ada4, per rispecchiare lo stesso i dati. Questo può essere fatto eseguendo il comando:

$ ZPOOL ANCAD TERCATO ADA1 ADA4

Ciò aggiungerebbe un disco aggiuntivo al VDEV che ha già il disco Ada1 In esso, ma non aumentare l'archiviazione disponibile.

Allo stesso modo, puoi staccare le unità da uno specchio correndo:

$ ZPOOL STACK TANK ADA4

D'altra parte, potresti voler aggiungere un VDEV extra per aumentare la capacità di ZPool. Che può essere fatto usando il comando ZPOOL ADD:

$ zpool Aggiungi specchio del serbatoio Ada4 Ada5 Ada6


La configurazione sopra consentirebbe di essere strisciati sui dati su VDEV Specchio-0 e Mirror-1. In questo caso puoi perdere 2 dischi per VDEV, e i tuoi dati saranno comunque intatti. Lo spazio utilizzabile totale aumenta a 40 GB.

3. RAID-Z1, RAID-Z2 e RAID-Z3

Se un VDEV è di tipo RAID-Z1, deve usare almeno 3 dischi e il VDEV può tollerare la morte di uno di questi dischi. Le configurazioni RAID-Z non consentono di collegare i dischi direttamente su un VDEV. Ma puoi aggiungere più VDEV, usando zpool aggiungi, in modo tale che la capacità del pool possa continuare ad aumentare.

RAID-Z2 richiederebbe almeno 4 dischi per VDEV e può tollerare fino a 2 fallimenti del disco e se il terzo disco fallisce prima che i 2 dischi vengano sostituiti, i dati preziosi vengano persi. Lo stesso segue per RAID-Z3, che richiede almeno 5 dischi per VDEV, con un massimo di 3 dischi di tolleranza al fallimento prima del recupero diventa senza speranza.

Creiamo un pool di raid-z1 e coltivalo:

$ zpool Crea serbatoio raidz1 ADA1 ADA2 ADA3

Il pool sta utilizzando tre dischi da 20 GB che ne rendono disponibili 40 GB per l'utente.

L'aggiunta di un altro VDEV richiederebbe 3 dischi aggiuntivi:

$ zpool Aggiungi serbatoio raidz1 ADA4 ADA5 ADA6


I dati utilizzabili totali sono ora 80 GB e puoi perdere fino a 2 dischi (uno per ogni VDEV) e avere ancora una speranza di recupero.

Conclusione

Ora sai abbastanza su ZFS per importare tutti i tuoi dati con fiducia. Da qui in poi puoi cercare varie altre funzionalità che ZFS offre come utilizzare NVMES ad alta velocità per le cache di lettura e scrittura, usando la compressione integrata per i tuoi set di dati e invece di essere sopraffatto da tutte le opzioni disponibili cerca solo ciò di cui hai bisogno per il tuo Case di uso particolare.

Nel frattempo ci sono alcuni suggerimenti più utili sulla scelta dell'hardware che dovresti seguire:

  1. Non usare mai e poi mai i controller raid hardware con ZFS.
  2. Si consiglia l'errore di correzione della RAM (ECC), ma non obbligatorio
  3. La funzione di deduplicazione dei dati consuma molta memoria, utilizza invece la compressione.
  4. La ridondanza dei dati non è un'alternativa per il backup. Avere backup multipli, memorizzare quei backup usando ZFS!