Come abilitare lo storage pooling e il mirroring usando Btrfs per Linux

Come abilitare lo storage pooling e il mirroring usando Btrfs per Linux / Linux

Se si dispone di più dischi rigidi nel proprio sistema Linux, non è necessario trattarli tutti come dispositivi di archiviazione diversi. Con Btrfs, puoi facilmente creare un pool di archiviazione da quei dischi rigidi.

In determinate condizioni, è anche possibile attivare il mirroring in modo da non perdere i dati a causa di un guasto del disco rigido. Con tutto configurato, puoi semplicemente buttare tutto ciò che vuoi nella piscina e sfruttare al massimo lo spazio di archiviazione che hai.

Non c'è un'utilità di configurazione della GUI che possa rendere tutto più semplice (ancora), ma è ancora abbastanza facile da fare con la riga di comando. Ti guiderò attraverso una semplice configurazione per l'utilizzo di diversi dischi rigidi insieme.

Cos'è Btrfs?

Btrfs (chiamato file system B-tree, “Burro FS”, o “Migliore FS”) è un imminente filesystem Ext4 vs. Btrfs: perché stiamo facendo il passaggio [Linux] Ext4 contro Btrfs: perché stiamo facendo il passaggio [Linux] Abbastanza onestamente, una delle ultime cose che la gente guarda è quale file system viene usato. Gli utenti di Windows e Mac OS X hanno ancora meno motivi per guardare, perché ne hanno solo uno ... Leggi altro che incorpora molte funzionalità diverse a livello di file system normalmente disponibili solo come pacchetti software separati. Mentre Btrfs ha molte caratteristiche degne di nota (come le istantanee del filesystem), le due cose che daremo un'occhiata in questo articolo sono il pooling e il mirroring dello storage.

Se non sei sicuro di cosa sia un filesystem, dai un'occhiata a questa spiegazione di alcuni filesystem per Windows Che cos'è un file system e come puoi scoprire cosa succede alle tue unità Cos'è un filesystem e come puoi scoprirlo Che cosa succede alle tue unità Cos'è un file system e perché sono importanti? Scopri le differenze tra FAT32, NTFS, HPS +, EXT e altro. Leggi di più . È anche possibile controllare questo bel confronto di vari filesystem Da FAT a NTFS To ZFS: File System Demystified da FAT a NTFS To ZFS: File system Demystified Diversi dischi rigidi e sistemi operativi possono utilizzare diversi file system. Ecco cosa significa e cosa devi sapere. Leggi di più per avere un'idea migliore delle differenze tra i filesystem esistenti.

Btrfs è ancora considerato “non stabile” da molti, ma la maggior parte delle funzionalità sono già abbastanza stabili per l'uso personale - sono solo alcune funzionalità selezionate in cui è possibile che si verifichino risultati indesiderati.

Mentre Btrfs mira ad essere il filesystem predefinito per Linux in futuro, è comunque meglio usare ext4 per le configurazioni di un singolo disco rigido o per configurazioni che non necessitano di storage pooling e mirroring.

Pooling Your Drives

Per questo esempio, useremo una configurazione a quattro dischi rigidi. Ci sono due dischi rigidi (/ dev / sdb e / dev / sdc) con 1 TB ciascuno e altri due dischi rigidi (/ dev / sdd e / dev / sde) con 500 GB per un totale di quattro dischi rigidi con un totale di 3 TB di stoccaggio.

Si può anche presumere di avere un altro disco rigido (/ dev / sda) di alcune dimensioni arbitrarie che contiene il bootloader e il sistema operativo. Non ci preoccupiamo di / dev / sda e stiamo solo combinando gli altri quattro dischi rigidi per scopi di archiviazione extra.

Creare un filesystem


Per creare un filesystem Btrfs su uno dei tuoi dischi rigidi, puoi usare il comando:

sudo mkfs.btrfs / dev / sdb

Ovviamente, è possibile sostituire / dev / sdb con il disco rigido che si desidera utilizzare. Da qui, è possibile aggiungere altri dischi rigidi al sistema Btrfs per renderlo una singola partizione che si estende su tutti i dischi rigidi che si aggiungono. Innanzitutto, monta il primo disco rigido Btrfs usando il comando:

sudo mount / dev / sdb / mnt

Quindi, esegui i comandi:

sudo mkfs.btrfs / dev / sdc mkfs.btrfs / dev / sdd mkfs.btrfs / dev / sde

Ora puoi aggiungerli al primo disco rigido usando i comandi:

dispositivo sudo btrfs aggiungi / dev / sdc / mnt dispositivo btrfs aggiungi / dev / sdd / mnt dispositivo btrfs aggiungi / dev / sde / mnt

Se alcuni dati sono stati archiviati sul primo disco rigido, è necessario che il filesystem lo compensi tra tutti i dischi rigidi aggiunti di recente. Puoi farlo con il comando:

bilancia del filesystem sudo btrfs / mnt

In alternativa, se sai già prima di iniziare che vuoi che un filesystem Btrfs si estenda su tutti i dischi rigidi, puoi semplicemente eseguire il comando:

sudo mkfs.btrfs -d single / dev / sdb / dev / sdc / dev / sdd / dev / sde

Naturalmente questo è molto più semplice, ma dovrai usare il metodo sopra menzionato se non li aggiungi tutti in una volta.

Noterai che ho usato una bandiera: “-d single”. Questo è necessario perché volevo una configurazione RAID 0 (in cui i dati sono suddivisi tra tutti i dischi rigidi ma non si verifica il mirroring), ma il “singolo” profilo è necessario quando i dischi rigidi sono di dimensioni diverse. Se tutti i dischi rigidi fossero della stessa dimensione, potrei invece usare la bandiera “-d raid0”. Il “-d” flag, a proposito, rappresenta i dati e consente di specificare la configurazione dei dati che si desidera. C'è anche un “-m” bandiera che fa esattamente la stessa cosa per i metadati.

Oltre a questo, puoi anche abilitare RAID 1 usando “-d raid1” che duplicherà i dati su tutti i dispositivi, quindi l'utilizzo di questo flag durante la creazione del file system Btrfs che si estende su tutti i dischi rigidi significherebbe ottenere solo 500 GB di spazio utilizzabile, poiché gli altri tre dischi rigidi vengono utilizzati per il mirroring.

Infine, puoi abilitare RAID 10 usando “-d raid10”. Questo farà un mix sia di RAID 0 che di RAID 1, quindi fornirà 1,5 TB di spazio utile in quanto i due dischi rigidi da 1TB sono accoppiati nel mirroring e le due unità disco da 500 GB sono accoppiate in mirroring.

Convertire un filesystem


Se hai un file system Btrfs che vorresti convertire in una configurazione RAID diversa, è facile farlo. Innanzitutto, monta il filesystem (se non lo è già) usando il comando:

sudo mount / dev / sdb1 / mnt

Quindi, esegui il comando:

sudo btrfs balance start -dconvert = raid1 -mconvert = raid1 / mnt

Ciò cambierà la configurazione in RAID 1, ma puoi sostituirlo con qualsiasi configurazione tu desideri (a patto che sia effettivamente consentito, ad esempio, non puoi passare a RAID 10 se non hai almeno quattro dischi rigidi) . Inoltre, il flag -mconvert è facoltativo se sei solo preoccupato dei dati ma non dei metadati.

Se si verifica un guasto del disco rigido

Se un disco rigido si guasta, sarà necessario rimuoverlo dal filesystem in modo che il resto delle unità in pool funzionerà correttamente. Montare il filesystem con il comando:

sudo mount -o degradato / dev / sdb / mnt

Quindi correggi il filesystem con:

sudo btrfs device delete mancante / mnt

Se non hai abilitato RAID 1 o RAID 10, tutti i dati presenti sul disco rigido guasto sono ora persi.

Rimozione di un disco rigido dal filesystem

Infine, se si desidera rimuovere un dispositivo da un filesystem Btrfs e il filesystem è montato su / mnt, è possibile farlo con il comando:

dispositivo sudo btrfs cancella / dev / sdc / mnt

Ovviamente, sostituire / dev / sdc con il disco rigido che si desidera rimuovere. Questo comando impiegherà un po 'di tempo perché è necessario spostare tutti i dati dal disco rigido che si sta rimuovendo e, allo stesso modo, fallirà se non c'è abbastanza spazio sugli altri dischi rigidi rimanenti.

Montaggio automatico


Se vuoi che il filesystem Btrfs sia montato automaticamente, puoi inserirlo nel tuo file / etc / fstab:

sudo / dev / sdb / mnt btrfs device = / dev / sdb, device = / dev / sdc, device = / dev / sdd, device = / dev / sde 0 0

Opzioni di montaggio

Un altro suggerimento bonus! Puoi ottimizzare le prestazioni di Btrfs nel tuo file / etc / fstab sotto le opzioni di mount per il filesystem Btrfs. Per gli array di archiviazione di grandi dimensioni, queste opzioni sono le migliori: comprimere forza = zlib, autodefrag, nospace_cache. In particolare, compress = zlib comprimerà tutti i dati in modo da poter sfruttare al massimo lo spazio di archiviazione disponibile. Per la cronaca, gli utenti SSD possono utilizzare queste opzioni: noatime, comprimere = lzo, SSD, scarti, space_cache, autodefrag, inode_cache. Queste opzioni vanno di pari passo con le specifiche del dispositivo, quindi una riga completa in / etc / fstab per gli utenti SSD sarebbe simile a:

sudo / dev / sdb / mnt btrfs device = / dev / sdb, device = / dev / sdc, device = / dev / sdd, device = / dev / sde,
noatime, comprimere = lzo, ssd, discard, space_cache, autodefrag, inode_cache 0 0

Quanto è grande il tuo pool di archiviazione?

Btrfs è una fantastica opzione per il pooling e il mirroring dello storage che diventerà sicuramente più popolare una volta che sarà ritenuto completamente stabile. Inoltre non sarebbe male avere una GUI per semplificare la configurazione (oltre che in alcuni programmi di installazione di distribuzione), ma i comandi che devi usare nel terminale sono facili da comprendere e applicare.

Qual è il più grande pool di archiviazione che potresti realizzare? Pensi che gli stoccaggi valgono la pena? Fateci sapere nei commenti!

Immagine di credito: William Hook