Concetti di base
In informatica il RAID, acronimo di Redundant Array of Independent Disks ovvero insieme ridondante di dischi indipendenti, è una tecnica di raggruppamento di diversi dischi rigidi, che fa sì che gli stessi nel sistema appaiano e siano utilizzabili come se fossero un unico volume di memorizzazione.
Alcuni concetti:
-
Mirroring: se questa caratteristica è abilitata, una copia degli stessi dati sarà salvata anche in un altro disco -
Parità: questo è il metodo di rigenerare i dati persi dalle informazioni di parità salvate
Un dispositivo RAID, a seconda della configurazione, può essere classificato in dieci diversi livelli. Di seguito, alcuni tra i principali.
RAID 0
RAID 0 divide i dati equamente tra due o più dischi, ma senza mantenere alcuna informazione di parità o ridondanza che aumenti l’affidabilità (la dicitura RAID, ancorché diffusa, è pertanto impropria). Qualsiasi guasto di un singolo disco dall’array risulterà in una perdita totale dei dati. RAID 0 è usato generalmente per aumentare le prestazioni di un sistema. Questo livello richiede almeno due dischi.
RAID 1
Detto anche mirror, scrive tutti i dati su due dischi. Se un disco è guasto o rimosso, tutti i dati sono ancora presenti sull’altro disco. Il primo disco rigido memorizza i dati originali mentre l’altro disco memorizza la copia esatta del primo disco. Poiché i dati vengono scritti due volte, le prestazioni saranno ridotte. Richiede almeno due dischi.
RAID 5
Un sistema RAID 5 distribuisce i dati di parità uniformemente tra tutti i dischi che lo compongono. Se un disco è guasto, i dati possono essere ricostruiti dai dati di parità disponibili sui dischi rimanenti. Richiede almeno tre dischi.
Per una spiegazione piú dettagliata, é utile vedere il video di Morrolinux:
Creazione RAID 1: mdadm e Btrfs
Il nostro obbiettivo é quello di creare un RAID 1 con due dischi.
Creazione delle partizioni
|
|
Possiamo vedere che i due dischi hanno una dimensione leggermente differente. Quindi dovremmo porre attenzione durante la creazione delle partizioni, che dovranno avere esattamente lo stesso numero di settori su entrambi i dischi. Nello specifico, tramite fsdisk, impostiamo 2048 (il default) come settore iniziale e esattamente 937701375 come settore finale della partizione (questo numero non é scelto a caso, ma é il settore finale di default del disco piú piccolo). In questo modo, possiamo vedere che le partizioni /dev/sda1 e /dev/sdb1 hanno entrambe 937699328 settori e una dimensione di 447.1G.
Ecco i comandi:
|
|
Crittografare le partizioni
Per prima cosa, dobbiamo creare un file contenente la passphrase, in modo che il device si sblocchi in automatico all’avvio del pc. Quindi possiamo procedere a crittografare le partizioni:
Ora che la partizione è stata crittografata, è possibile aprirla e montarla coi seguenti comandi:
dove member1 e member1 indicano il nome arbitrario associato al device.
Possiamo smontare le partizioni, in modo da poter procedere coi comandi udisksctl unmount -b /dev/mapper/member1 && udisksctl unmount -b /dev/mapper/member2. Infine, se si volesse chiudere la partizione, ovvero ri-crittografarla:
Sblocco automatico
Per far sì che le partizioni vengano sbloccate in automatico all’avvio del sistema, bisogna configurare correttamente il file /etc/crypttab. Innanzitutto, tramite il comando lsblk -f veniamo a conoscenza degli UUID delle partizioni /dev/sda1 e /dev/sdb1:
|
|
Questi devono essere inseriti nel file /etc/crypttab nel seguente modo:
mdadm
Un primo strumento per la creazione e configurazione di un RAID é mdadm. Si tratta di uno strumento utilizzato per creare, gestire e monitorare array RAID software.
|
|
Creazione RAID 1 con mdadm
Nel caso di device crittografati, dobbiamo prima aprire le partizioni crittografate, quindi creare l’array:
Creazione del file system
Infine, possiamo procedere con la creazione del filesystem:
|
|
Nel caso si volessero ottenere dettagli sul RAID, dare il comando sudo mdadm -D /dev/md1.
Btrfs
Btrfs è un filesystem avanzato per GNU/Linux progettato per offrire funzionalità moderne e una gestione efficiente dei dati. È stato sviluppato per superare alcune delle limitazioni dei filesystem tradizionali come ext4 e offre una serie di caratteristiche uniche, come il supporto a diverse configurazioni RAID. Questo significa che non occorre utilizzare strumenti esterni come mdadm.
Dal momento che sul mio pc utilizzo Btrfs, come illustrato qui, prediligo questa strada.
Creazione RAID 1 con Btrfs
Nel caso di device crittografati, dobbiamo prima aprire le partizioni crittografate, quindi creare l’array e il filesystem:
In particolare:
-m raid1: questa opzione specifica il livello di RAID da utilizzare per i metadati. In questo caso, una copia dei metadati sarà mantenuta su ciascun disco, fornendo ridondanza e protezione contro il guasto di un disco-d raid1: questa opzione specifica il livello di RAID da utilizzare per i dati. Anche in questo caso, i dati saranno copiati su entrambi i dispositivi-L raid1: imposta l’etichetta del filesystem
Gestione filesystem Btrfs
Per la manutenzione di un filesystem Btrfs un tool interessante é Btrfs Assistant.
Alcuni comandi utili:
|
|
Auto mount
Ora che abbiamo creato l’array, questo si sblocca in automatico all’avvio, rimane da impostare l’auto-mount al boot del sistema. Nel caso di un raid gestito tramite mdadm, basta aggiungere la riga seguente al file /etc/fstab:
|
|
Nel caso di un raid gestito con Btrfs, dobbiamo inserire la riga:
|
|
NOTA: in questo caso il UUID NON É quello della partizione, ma quello del raid1, visibile sempre col comando
lsblk -f
Le opzioni nofail e x-systemd.device-timeout=15 sono utilizzate per controllare il comportamento del montaggio dei filesystem in un sistema GNU/Linux che utilizza systemd. Sono fondamentali per evitare che il sistema non si avvii in caso di configurazioni errate.
nofail: indica al sistema di non considerare un errore di montaggio come un problema critico durante l’avvio. Se il dispositivo specificato non è disponibile (ad esempio, se è stato rimosso o non è stato ancora inizializzato), il sistema continuerà l’avvio senza interrompersi o bloccarsi.x-systemd.device-timeout=15: questa opzione specifica un timeout per il montaggio del dispositivo. Se il montaggio non avviene entro questo intervallo di tempo, il sistema procederà senza montare il dispositivo.
Ora non rimane che smontare e chiudere le partizioni, se montate e sbloccate in precedenza, quindi dare i comandi:
Se abbiamo fatto tutto correttamente, dovremmo avere il nostro array montato automaticamente.