RAID: Redundant Array of Indipendent Disks
|
Versioni Compatibili Tutte le versioni supportate di Debian |
RAID |
Sommario |
|
Introduzione
Generalità
Raid è un artificio per garantire essenzialmente uno o entrambi dei seguenti vantaggi:
- Ridondanza dei dischi rigidi, ovvero protezione contro eventuali perdite di dati e/o interruzione di servizio causati da guasti di uno o più dischi rigidi.
- Aggregazione dello spazio in partizioni più grandi e aumento della banda dati disponibile, ovvero della velocità di lettura/scrittura dei dati sui dischi rigidi.
Esistono diverse modalità, ovvero livelli, raid; i principali sono:
- RAID 0, richiede un minimo di due dischi e garantisce questi benefici:
- possibilità di creare un volume logico di capacità pari alla somma delle capacità delle singole partizioni che lo compongono;
- aumento della velocità complessiva a scapito di una riduzione dell'affidabilità garantita da un disco singolo, infatti è sufficiente che si guasti uno solo dei dischi perché si perdano tutti i dati del corrispondente volume raid. È un classico esempio di sistema serie la cui affidabilità complessiva si calcola come il prodotto delle affidabilità di ciascun disco.
- RAID 1, garantisce ridondanza poiché il sistema continuerà a funzionare fintanto che almeno uno dei dischi è attivo; può garantire un minimo miglioramento per quanto riguarda la lettura dati, ma implica una minima riduzione della velocità in scrittura rispetto al disco singolo. È un classico di sistema parallelo la cui affidabilità complessiva si calcola come uno meno la produttoria di uno meno l'affidabilità del singolo disco. Richiede un minimo di due dischi.
- RAID 5, semplificando garantisce un incremento di ridondanza e parzialmente di velocità, tuttavia qualora uno dei dischi si guasti le prestazioni si riducono drasticamente. Richiede un minimo di tre dischi.
- RAID 10 (non dieci, ma 1+0), garantisce sul piano teorico un incremento di prestazioni pari a quello di un raid 0 e l'affidabilità di un raid 1. Richiede un minimo di quattro dischi. Scegliere sempre questa modalità al posto di 0+1.
Per chi intendesse approfondire maggiormente l'argomento può iniziare consultando wikipedia.
RAID Hardware, Software e Fake
Esistono due modi per creare e gestire un volume raid: attraverso la mediazione di controller hardware dedicati oppure via software direttamente dal sistema operativo.
La prima soluzione è più costosa e richiede attenzione nello scegliere prodotti che siano effettivamente compatibili con linux, ma comporta un minor consumo di risorse macchina (per esempio un ridotto impegno della CPU).
La seconda non richiede hardware dedicato e quindi non presenta costi aggiuntivi, ma come già detto comporta un maggior consumo di risorse macchina. In debian il programma deputato a creare e gestire i volumi raid si chiama mdadm.
Esiste una terza via, molto simile come concetto al raid software, ovvero i "fake raid" (falsi raid hardware). Tipico esempio di questa classe sono i controller RAID integrati nelle schede madri che non essendo di norma veri controller hardware si devono appoggiare completamente alla capacità di calcolo della macchina proprio come un raid software, garantendo quindi gli stessi (s)vantaggi prestazionali. Data questa premessa è pratica comune ignorare in linux eventuali controller integrati ed implementare tutto via software evitando in tal modo possibili problemi di compatibilità.
Si noti che purtroppo il raid software linux non è supportato da windows (e probabilmente anche da altri SO non linux), quindi in caso di dual boot tale soluzione è assolutamente da scartare; in tale circostanza se non si vuole rinunciare al raid e a windows, oppure a linux, è possibile usare dmraid
per implementare anche sotto linux soluzioni fake raid.
Installare debian su RAID software
Si veda questa pagina per un esempio di come utilizzare lo strumento di partizionamento predefinito.
Creare RAID software dopo l'installazione (mdadm)
Installazione
Se durante l'installazione del sistema operativo avete configurato uno o più volumi raid allora mdadm sarà già stato installato, in caso contrario:
# aptitude install mdadm
Utilizzo
Preparazione dischi
Nota È possibile mettere in raid sia interi dischi che singole partizioni. In questa guida sarà esaminato il caso di singola partizione. |
La prima cosa da sottolineare è che mdadm richiede che l'utente abbia già provveduto a creare le partizioni da mettere in raid. Strumenti come fdisk, parted, ecc. vanno tutti bene.
Esempio con fdisk
Supponendo per esempio di usaree l'utilità fdisk (ma qualsiasi altro tool come parted o altri andrebbe egualmente bene) e di usare un disco identificato come /dev/sde
digitare da terminale:
# fdisk /dev/sde
Appena premuto 'invio' dovrebbe essere comparso il prompt di fdisk:
Command (m for help)
Premere "p" per stampare a video l'elenco delle partizioni disponibili (posto naturalmente che ce ne siano di già definite).
È possibile cancellare le partizioni premendo "d" oppure crearne di nuove premendo "n" (posto naturalmente di avere spazio libero); ogni comando in genere innesca una procedura interattiva che dovrebbe risultare abbastanza intuitiva.
Avvertimento Si ricorda nuovamente che tutte le partizioni componenti un certo volume raid devono necessariamente avere la stessa dimensione. |
Una volta che per il disco sia stato definito lo schema di partizioni desiderato premere "t" per cambiare ID alle partizioni che andranno a comporre il volume raid; verrà chiesto prima di selezionare la partizione da alterare e poi di digitare il codice esadecimale per l'ID desiderato, nel caso in oggetto "fd" (premendo l si ottiene invece un elenco di tutti i codici esadecimali possibili).
Premere "w" per scrivere le modifiche sul disco oppure "q" per uscire senza apportare alcuna modifica (in tal caso tutte le variazioni andranno evidentemente perse e dovranno essere rieseguite da capo).
Ripetere le precedenti operazioni per tutti gli altri dischi che concorreranno alla formazione dei volumi raid con una o più partizioni.
Creazione di un volume RAID
Posto di volere creare un volume raid1 di nome md0 comprendente le partizioni sde1 ed sdf1 digitare da terminale:
# mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sde1 /dev/sdf1
--level=1
dichiara che stiamo creando un raid 1. Se invece di 1 si fosse dichiarato 0 si sarebbe creato un raid 0
Per verificare che il volume sia correttamente inizializzato digitare
# cat /proc/mdstat
Dovrebbe comparire qualcosa di simile a
Personalities: [raid1] md0 : active raid1 sde1[0] sdf1[1] XXXXXXXX blocks super 1.2 [2/2] [UU] unused devices: <none>
Un altro utile comando per ottenere informazioni sul volume appena creato è
# mdadm --examine /dev/md0
A questo punto il volume raid può essere formattato secondo la procedura canonica; ad esempio per creare un filesystem ext4:
# mkfs.ext4 /dev/md0
Ripetere la procedura per tutti gli eventuali altri volumi raid che si desidera creare.
Rendere permanenti i volumi RAID
I volumi appena creati non sopravviverebbero ad un riavvio del sistema, pertanto è necessario modificare o creare un apposito file di configurazione /etc/mdadm/mdadm.conf
che ne memorizzi la struttura.
Se tale file esiste già è sufficiente aggiungere manualmente al suddetto file l'output del seguente comando:
# mdadm --detail --scan
oppure ridurre il tutto ad un solo comando digitando:
# mdadm --detail --scan >> /etc/mdadm/mdadm.conf
Che provvede anche a creare direttamente il file .conf se questo non esisteva.
Qualora ci si dimenticasse di (o non si volesse) creare/modificare il file /etc/mdadm/mdadm.conf
, dopo un riavvio è possibile riassemblare un volume dando un comando del tipo:
mdadm -A /dev/md0 /dev/sde1 /dev/sdf1
posto naturalmente che il suddetto volume non contenesse informazioni essenziali per l'avvio del sistema, nel qual caso non ripartirebbe proprio il sistema operativo.
Rendere utilizzabili i volumi RAID
Per poter materialmente memorizzare dati all'interno di un volume raid è necessario montarlo come una qualsiasi altra partizione, pertanto creare in primis un punto di mount, ad esempio:
# mkdir /mnt/mio_volume_raid/
Successivamente, posto di voler montare il volume 0, digitare:
# mount /dev/md0 /mnt/mio_volume_raid/
A questo punto il volume raid risulterà molto probabilmente accessibile in sola lettura a tutte le utenze eccetto root, pertanto ove richiesto sarà necessario cambiare proprietario e/o permessi sul volume raid montato.
Per smontare il volume raid, come sempre è sufficiente digitare:
# umount /mnt/mio_volume_raid/
Montare automaticamente un volume all'avvio
Perché un certo volume venga montato automaticamente all'avvio è necessario editare /etc/fstab/
aggiungendo una riga del tipo:
UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX /mnt/mio_volume_raid ext4 defaults 0 2
Dove UUID si ottiene digitando da terminale blkid /dev/dispositivo
, ad esempio:
blkid /dev/md0
Eliminare un volume RAID
Si supponga di voler eliminare il volume mdX
.
Il primo passo è smontare il volume
# umount /dev/mdX
Visualizzare e prendere nota dei dischi/partizioni che compongono il volume:
# mdadm --D /dev/mdX
Supponiamo che sia composto da due partizioni: /dev/sdX1
e /dev/sdY1
Fermare il volume che si vuole eliminare
# mdadm --S /dev/mdX
Eliminare tutti i metadati dai dischi/partizioni che compongono il volume mdX
, che in questo esempio significa
# mdadm --zero-superblock /dev/sdX1 /dev/sdY1
Aggiornare il file /etc/mdadm/mdadm.conf
eliminando la riga corrispondente a mdX
.
Eseguire:
# update-initramfs -u
A questo punto, se lo si desidera, è possibile eliminare tutte le partizioni dai dischi che formavano mdX
. Nel caso di dischi SSD un comando utile è blkdiscard
, ad esempio:
# blkdiscard /dev/sdX /dev/sdY
Da notare che questo comando non elimina realmente i dati, ma fa semplicemente apparire i dischi come vuoti.
Principali comandi
Avviare un Array (se ESISTE il file mdadm.conf):
# mdadm -As /dev/md0
Avviare un Array (se NON esiste il file mdadm.conf):
# mdadm -A /dev/md0
Fermare un Array:
# mdadm -S /dev/md0
Fermare tutti gli array:
# mdadm -S -s
Aggiungere un disco all'array md0:
# mdadm /dev/md0 --add /dev/sdh1
Rimuovere un disco dall'array md0:
# mdadm /dev/md0 --fail /dev/sdc1 --remove /dev/sdc1
Mostrare i metadati dell'array salvati nel disco:
# mdadm -E /dev/sdb1
Mostrare i dettagli dell'array md0
# mdadm -D /dev/md0
Monitorare un array:
# mdadm --monitor --delay=300 /dev/md0
Ottenere informazioni sugli array in esecuzione:
# cat /proc/mdstat
Risincronizzare un array. Se il comando precedente restituisce:
md0 : active (auto-read-only) raid1 sda1[0] sdb1[1] 2000000 blocks [2/2] [UU] resync=PENDING
occorre dare il comando:
# mdadm --readwrite /dev/mdX
e la sincronizzazione ripartirà:
[===>...] resync = 16.2% (324736/2000000) finish=0.6min speed=46390K/sec
Approfondimenti
Debianizzati
Guida dettagliata per Debian Sarge dedicata a varie casistiche di RAID 1.
Manpages
man mdadm
man mdadm.conf
Sitografia
- RAID, pagina inglese di wikipedia
Guida scritta da: Wtf | Debianized 40% |
Estesa da: | |
Verificata da: | |
Verificare ed estendere la guida | Cos'è una guida Debianized |