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:
- 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.
- 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/NomeChiaveNon 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 gptNota: 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:
$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 armatoPer 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 sdgInfine, 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.