ZFS

Tutorial pratico ZFS DigitalOcean

Tutorial pratico ZFS DigitalOcean

OpenZFS: una guida pratica con DigitalOcean

Potresti aver sentito più volte che ZFS è un filesystem di livello aziendale pensato per gestire grandi quantità di dati in array complicati. Naturalmente, questo farebbe pensare a qualsiasi nuovo arrivato che non dovrebbe (o non potrebbe) dilettarsi con tale tecnologia.

Niente può essere più lontano dalla verità. ZFS è uno dei pochi software là fuori che funziona!. Fuori dagli schemi, senza alcuna messa a punto, fa tutto ciò che pubblicizza: dai controlli sull'integrità dei dati alla configurazione RAIDZ. Sì, sono disponibili opzioni di messa a punto e si può approfondire in caso di necessità. Ma per i principianti, le impostazioni predefinite funzionano meravigliosamente bene.

L'unica limitazione che potresti incontrare è quella dell'hardware. Mettere più dischi in varie configurazioni significa che hai molti dischi in giro per stare con! Ecco dove DigitalOcean (DO) viene in soccorso.

Nota: se hai familiarità con DO e come impostare le chiavi SSH, puoi passare direttamente alla parte ZFS della discussione. Ciò che le prossime due sezioni mostrano è come configurare una VM su DigitalOcean e collegare ad essa dispositivi a blocchi con

Introduzione a DigitalOcean

Per dirla semplicemente, DigitalOcean è un fornitore di servizi cloud in cui puoi avviare macchine virtuali su cui eseguire le tue app. Ottieni una quantità folle di larghezza di banda e tutto lo spazio di archiviazione SSD su cui eseguire le tue app. È rivolto agli sviluppatori e non agli operatori, motivo per cui l'interfaccia utente è molto più semplice e comprensibile.

Inoltre, si addebitano su base oraria, il che significa che puoi lavorare su varie configurazioni ZFS per alcune ore, eliminare tutte le VM e lo spazio di archiviazione una volta che sei soddisfatto e la tua bolletta non supererà più di qualche dollaro.

Useremo due delle funzionalità di DigitalOcean per questo tutorial:

  1. Goccioline: Un Droplet è la loro parola per una macchina virtuale, che esegue un sistema operativo con un IP pubblico statico. La nostra scelta del sistema operativo sarà Ubuntu 16.04 LTS.
  2. Archiviazione a blocchi: L'archiviazione a blocchi è simile a un disco collegato al computer. Tranne, qui puoi decidere la dimensione e il numero di dischi che desideri.

Iscriviti a DigitalOcean se non l'hai già fatto.

Per accedere alla tua macchina virtuale ci sono due modi, uno è usare la console (per la quale la password ti viene inviata via email) oppure puoi usare l'opzione chiave SSH.

Configurazione SSH di base

MacOS e altri utenti UNIX che hanno un terminale sul desktop possono usarlo per SSH nei loro droplet (il client SSH è installato per impostazione predefinita su quasi tutti gli Unix) e l'utente Windows potrebbe voler scaricare Git Bash.

Una volta che sei nel tuo terminale, inserisci i seguenti comandi:

$mkdir -p ~/.ssh
$cd ~/.ssh
$ssh-keygen -y -f YourKeyName

Questo genererà due file in ~/.ssh directory, una chiamata YourKeyName che devi mantenere sempre sicura e privata. È la tua chiave privata. Crittograferà i messaggi prima di inviarli al server e decrittograferà i messaggi che il server ti restituisce. Come suggerisce il nome, la chiave privata deve essere tenuta segreta in ogni momento.

Viene creato un altro file chiamato YourKeyName.pub e questa è la tua chiave pubblica che fornirai a DigitalOcean quando crei il Droplet. Gestisce la crittografia e la decrittografia dei messaggi sul server, proprio come fa la chiave privata sul tuo computer locale.

Creare il tuo primo Droplet

Dopo esserti registrato a DO sei pronto per creare il tuo primo Droplet.  Segui i passaggi seguenti:

1. Fare clic sul pulsante Crea nell'angolo in alto a destra e selezionare Gocciolina opzione.

2. La pagina successiva ti permetterà di decidere le specifiche del tuo Droplet. Useremo Ubuntu.

3. Scegli la taglia, anche l'opzione $ 5 al mese funziona per piccoli esperimenti.

4. Scegli il data center più vicino a te, per basse latenze. Puoi saltare il resto delle opzioni aggiuntive.

Nota: non aggiungere volumi ora. Li aggiungeremo in seguito per motivi di chiarezza.

5. Clicca su Nuove chiavi SSH e copia tutto il contenuto di YourKeyName.pub dentro e dagli un nome. Ora basta fare clic su Creare e il tuo Droplet è pronto per partire.

6. Ottieni l'indirizzo IP del tuo Droplet dalla dashboard.

7. Ora puoi SSH, come utente root, nel tuo Droplet, dal tuo terminale usando il comando:

$ssh [email protected] -i ~/.ssh/NomeChiave

Non copiare il comando precedente poiché il tuo indirizzo IP sarà diverso. Se tutto ha funzionato correttamente, riceverai un messaggio di benvenuto sul tuo terminale e sarai connesso al tuo server remoto.

Aggiunta dell'archiviazione a blocchi

Per ottenere l'elenco dei dispositivi di archiviazione a blocchi nella tua VM, nel terminale usa il comando:

$lsblk

Vedrai solo un disco partizionato in tre dispositivi a blocchi. Questa è l'installazione del sistema operativo e non li sperimenteremo. Abbiamo bisogno di più dispositivi di archiviazione per questo.

Per questo vai alla tua dashboard DigitalOcean e fai clic su Create pulsante come hai fatto nel primo passaggio e scegli l'opzione volume. Attaccalo al tuo Droplet e dagli un nome appropriato. Aggiungi tre di questi volumi ripetendo questo passaggio altre due volte.

Ora se torni al tuo terminale e digiti lsblk, vedrai nuove voci in questa lista. Nello screenshot qui sotto, ci sono 3 nuovi dischi che useremo per testare ZFS.

Come passaggio finale, prima di entrare in ZFS, dovresti prima etichettare i tuoi dischi sotto lo schema GPT. ZFS funziona meglio con lo schema GPT, ma l'archiviazione a blocchi aggiunta alle tue goccioline ha un'etichetta MBR su di esse. Il seguente comando risolve il problema aggiungendo un'etichetta GPT ai dispositivi a blocchi appena collegati.

$ sudo parted /dev/sda mklabel gpt

Nota: non esegue la partizione del dispositivo a blocchi, utilizza solo l'utilità "parted" per fornire un ID univoco globale (GUID) al dispositivo a blocchi. GPT sta per GUID Partition Table e tiene traccia di ogni disco o partizione con un'etichetta GPT su di esso.

Ripeti lo stesso per sdb e sdc.

Ora siamo pronti per iniziare a utilizzare OpenZFS con unità sufficienti per sperimentare diverse disposizioni.

Zpool e VDEV

Per iniziare a creare il tuo primo Zpool. Devi capire cos'è un dispositivo virtuale e qual è il suo scopo.

Un dispositivo virtuale (o un Vdev) può essere un singolo disco o un gruppo di dischi che sono esposti come un singolo dispositivo allo zpool. Ad esempio, i tre dispositivi da 100 GB creati sopra sda, sdb e sdc tutti possono essere un vdev proprio e puoi creare uno zpool, chiamato carro armato, fuori di esso che avrà la capacità di archiviazione dei 3 dischi combinati che è 300 GB
Prima installa ZFS per Ubuntu 16.04:

$apt install zfs
$zpool crea serbatoio sda sdb sdc
$zpool status tank

I tuoi dati sono distribuiti sui tre dischi, in modo uniforme, e se uno dei dischi si guasta, tutti i tuoi dati vengono persi. Come puoi vedere sopra, i dischi sono i vdev stessi.

Ma puoi anche creare uno zpool in cui i tre dischi si replicano a vicenda, noto come mirroring.

Prima distruggi il pool precedentemente creato:

$zpool distrugge il carro armato

Per creare un vdev con mirroring useremo la parola chiave specchio:

$zpool crea il mirror del serbatoio sda sdb sdc

Ora, la quantità totale di spazio di archiviazione disponibile è di soli 100 GB (usare lista zpool per vederlo) ma ora possiamo sopportare fino a due unità di guasto nel vdev specchio-0.

Quando esaurisci lo spazio e desideri aggiungere più spazio di archiviazione al tuo pool, dovrai creare altri tre volumi in DigitalOcean e ripetere i passaggi in Aggiunta dell'archiviazione a blocchi fallo con altri 3 dispositivi a blocchi che verranno visualizzati come vdev specchio 1. Puoi saltare questo passaggio per ora, sappi solo che può essere fatto.

$zpool aggiungi specchio serbatoio sde sdf sdg

Infine, c'è la configurazione raidz1 che può essere utilizzata per raggruppare tre o più dischi in ogni vdev e può sopravvivere al guasto di 1 disco per vdev e fornire uno spazio di archiviazione totale disponibile di 200 GB.

$zpool distrugge il carro armato
$zpool crea tank raidz1 sda sdb sdc

Mentre l'elenco zpool mostra la capacità netta dello spazio di archiviazione non elaborato, lista zfs e df -h i comandi mostrano l'effettiva memoria disponibile di zpool. Quindi, è sempre una buona idea controllare lo spazio di archiviazione disponibile utilizzando lista zfs comando.

Lo useremo per creare set di dati.

Set di dati e ripristino

Tradizionalmente, montavamo filesystem come /home, /usr e /temp in partizioni diverse e quando finivamo lo spazio dovevamo aggiungere collegamenti simbolici a dispositivi di archiviazione aggiuntivi aggiunti al sistema.

Con zpool add puoi aggiungere dischi allo stesso pool e continua a crescere secondo le tue necessità. Puoi quindi creare set di dati, che è il termine zfs per un filesystem, come /usr/home e molti altri che poi risiedono sullo zpool e condividono tutto lo spazio di archiviazione messo a loro disposizione.

Per creare un set di dati zfs sul pool carro armato usa il comando:

$zfs crea serbatoio/dataset1
$zfs lista

Come accennato in precedenza, un pool raidz1 può resistere al guasto di un massimo di un disco. Quindi proviamolo.

$ zpool serbatoio offline sda

Ora la piscina è offline, ma non tutto è perduto. Possiamo aggiungere un altro volume, sdd, usando DigitalOcean e dandogli un'etichetta gpt come prima.

Ulteriori letture

Ti invitiamo a provare ZFS e le sue varie funzionalità quanto vuoi, nel tuo tempo libero. Assicurati di eliminare tutti i volumi e le gocce, una volta terminato, per evitare addebiti imprevisti alla fine del mese.

Puoi saperne di più sulla terminologia ZFS qui.

OpenTTD vs Simutrans
Creare la tua simulazione di trasporto può essere divertente, rilassante ed estremamente allettante. Ecco perché devi assicurarti di provare quanti pi...
Tutorial OpenTTD
OpenTTD è uno dei giochi di simulazione aziendale più popolari in circolazione. In questo gioco, devi creare una meravigliosa attività di trasporto. T...
SuperTuxKart per Linux
SuperTuxKart è un fantastico titolo progettato per offrirti l'esperienza di Mario Kart gratuitamente sul tuo sistema Linux. È piuttosto impegnativo e ...