Disclaimer :
La versione originale di questo articolo è stata pubblicata da IBM
developerWorks ed è di proprietà di Westtech Information Services. Questo
documento è una versione aggiornata dell'articolo originale, e contiene
numerosi miglioramenti apportati dal Gentoo Linux Documentation team.
Questo documento non è mantenuto attivamente.
|
Software RAID nel nuovo kernel Linux 2.4, Parte 1
1.
Introduzione generale e installazione
Il meraviglioso mondo del RAID
Il kernel 2.4 aggiunge nuove caratteristiche utili ed eccellenti. Una di queste
è una moderna implementazione di software RAID. Il software RAID permette di
incrementare in modo cospicuo le prestazioni IO e l'affidabilità dei dischi
senza la necessità di dover acquistare hardware RAID ad alto prezzo. Dato che
l'implementazione è puramente software, Linux software RAID è flessibile, veloce
e semplice da installare.
Il concetto di base del software RAID è semplice: esso permette di combinare due
o più dispositivi a blocchi (usualmente partizioni su disco fisso) in un singolo
dispositivo RAID. Per esempio assumiamo di avere 3 partizioni vergini:
hda3, hdb3 e hdc3. Mediante il software
RAID queste partizioni possono essere combinate in un singolo dispositivo RAID
/dev/md0. Questo nuovo dispositivo /dev/md0 può essere
formattato con un file system a piacere ed essere usato come una partizione
qualsiasi. Esistono varie possibilità di configurare un volume RAID: alcune
perseguono lo scopo di massimizzare le prestazioni, alcune di massimare
l'affidabilità ed altre sono una combinazione di entrambe le caratteristiche.
Esistono due forme di RAID: lineare e modalità RAID-0. Nessuna di queste è
prettamente una forma di RAID in quanto RAID è un acronimo per "redundant array
of inexpensive disks" (disposizione ridondante di dischi economici) e RAID-0 o
la modalità lineare non forniscono alcuna forma di ridondanza dei dati. Tuttavia
entrambe le modalità, in specialmodo la modalità RAID-0, sono molto utili. Dopo
un approfondimento su queste due forme di "AID", quest'articolo spiegherà passo
per passo le operazioni necessarie ad abilitare un sistema al software RAID.
2.
La modalità lineare
La modalità lineare è uno dei metodi più semplici di combinare due o più
dispositivi a blocchi in un volume RAID: la semplice concatenazione. Assumendo
di avere tre partizioni hda3, hdb3 e
hdc3, ognuna avente una capacità di 2GB, il volume lineare creato
avrà una capacità complessiva di 6GB. Il primo terzo del volume lineare
risiederà su /dev/hda3, il secondo terzo su /dev/hdb3
e l'ultimo terzo su /dev/hdc3.
Per allestire un volume lineare, è necessario disporre di almeno due partizioni
vergini che verranno combinate. Esse potranno avere dimensioni differenti e
possono trovarsi anche sul medesimo disco fisso fisico senza influire
negativamente sulla prestazione.
Usi tipici della modalità lineare
La modalità lineare è il modo migliore di combinare in un singolo volume due o
più partizioni che risiedono sul medesimo disco fisso. In qualsiasi altra
modalità RAID una tale configurazione risulterebbe in un cospicuo calo delle
prestazioni del sistema. La modalità lineare invece non è affetta da questo
problema dato che in questa modalità non avverrà mai un accesso parallelo alle
partizioni facentene parte (come invece accade in tutte le altre modalità RAID).
D'altra parte per lo stesso motivo, la modalità lineare non avrà mai il
potenziale di incrementare le prestazioni come invece avviene nelle modalità
RAID-0, RAID-4, RAID-5 e per certi versi anche RAID-1.
In generale si può dire che la modalità lineare non offre nessuna possibilità di
migliorare le prestazioni rispetto ad una partizione convenzionale non-RAID.
Piuttosto, distribuendo un volume lineare su più dischi fissi, si aumenta la
probabilità di perdere dati in quanto il sistema è composto di più parti
soggette a difetti. La probabilità di errore di un volume lineare è pari alla
somma delle probabilità di errore dei dischi fissi e controller facentene parte.
Se un disco fisico "muore", anche il volume lineare di cui il disco faceva parte
sarà irrimediabilmente perso. La modalità lineare non offre nessuna sicurezza
aggiuntiva rispetto all'uso di un singolo disco.
D'altra parte la modalità lineare è un ottimo modo di evitare la ripartizione di
un singolo disco. Per esempio assumiamo che il secondo disco IDE abbia due
partizioni non utilizzate /dev/hdb1 e /dev/hdb3.
Assumiamo inoltre che una ripartizione del disco sia impossibile dato
che l'accesso ai dati su /dev/hdb2 sia critico e non possa essere
interrotto. Usando la modalità lineare sarà possibile combinare le due
partizioni /dev/hdb1 e /dev/hdb3 in un'unica
partizione.
La modalità lineare è anche un ottimo modo di combinare partizioni di dimensioni
differenti su dischi differenti se si necessita di un'unica partizione di grandi
dimensioni senza porre gran rilievo in un miglioramento delle prestazioni.
Invece per ogni altra necessità le altre modalità RAID sono più adatte.
3.
La modalità RAID-0
RAID-0 è un'altra di quelle modalità "RAID" che non posseggono alcun "R"
(ridondanza). Nonostante ciò, RAID-0 è una modalità estremamente utile. Ciò è
dovuto primariamente al fatto che questa modalità offre le più alte prestazioni
fra tutte le modalità RAID.
Per allestire un volume RAID-0, è necessario disporre di due o più partizioni di
dimensione identiche (o quasi identiche). Il sistema RAID-0 distribuirà accessi
in scrittura e lettura egualmente fra le partizioni facentene parte. Mediante la
parallelizzazione degli accessi fra tutti i dispositivi affetti, RAID-0 ha il
grande vantaggio di poter moltiplicare le prestazioni IO del sistema. Non
tenendo conto per semplicità di fattori come i controller affetti e la larghezza
di banda del bus, si può generalmente assumere che un volume RAID-0 composto da
due partizioni su due dischi fissi tecnicamente identici offrano delle
prestazioni più o meno raddoppiate rispetto ad una partizione tradizionale su un
disco. Assumendo che il volume RAID-0 sia composto da tre dischi, le
prestazioni saranno quasi triplicate. Per questo motivo un volume RAID-0
composto da dischi di tipo IDE è in grado di superare nelle prestazioni i più
veloci dischi SCSI o FC-AL presenti sul mercato. Per raggiungere le massime
vette delle prestazioni, un volume RAID-0 dovrà essere composto da dischi SCSI o
FC-AL.
Per allestire un volume RAID-0, è necessario disporre di almeno due partizioni
vergini di uguali dimensioni ubicate su dischi fisici diversi. Come per la
modalità lineare, sarà semplicemente possibile combinare dispositivi a blocchi
anche di tipologia diversa (IDE e SCSI) in un singolo volume.
In una configurazione RAID-0 composta da dischi IDE, è consigliabile usare
dischi e controller che dispongono della modalità UltraDMA per ottenere la
migliore affidabilità. Inoltre è importante per ogni canale IDE di usare un solo
disco per evitare un degrado delle prestazioni. La presenza di un dispositivo
slave, in specialmodo se questo farà parte del volume RAID-0, è altamente
sconsigliabile in quanto ridurrà le prestazioni in un modo tale da consumare
tutto il guadagno di prestazioni che il volume RAID-0 fornirebbe al sistema.
Per questo motivo è spesso necessario aggiungere ulteriori controller IDE al
sistema per ottenere il numero di canali IDE necessari a creare il volume RAID.
In una configurazione RAID-0 composta da dischi SCSI, è necessario tenere di
conto del fatto che la somma delle larghezze di banda di tutti i dischi può
facilmente superare la larghezza di banda del bus SCSI (e conseguentemente anche
del bus PCI). In un tal caso, il bus SCSI sarà il fattore che limiterà le
potenziali prestazioni. Se per esempio il sistema è composto di quattro dischi
che dispongono di una larghezza di banda massima di 15Mb/sec disposti su un bus
a 68 connessioni SCSI Ultra Wide con larghezza di banda massima di 40Mb/sec,
questo potrà anche andare bene per l'applicazione desiderata (in fondo 40Mb/sec
non sono per nulla male), però un volume composto da solo 3 dischi avrebbe lo
stesso effetto.
Usi tipici della modalità RAID-0
Dal punto di vista dell'affidabilità, RAID-0 ha le stesse caratteristiche della
modalità lineare: più alto è il numero dei dischi nella disposizione, più alta è
la probabilità di fallimento del volume. Come nella modalità lineare, la morte
di un singolo disco distruggerà in modo irrevocabile l'intero volume RAID-0. La
probabilità di fallimento di un volume RAID-0 risulta perciò dalla somma delle
probabilità di fallimento di tutti i dischi facentene parte.
RAID-0 è ideale per applicazioni dove sono richieste alte prestazioni IO, dato
che si tratta della modalità RAID con le più alte prestazioni. D'altra parte sia
ben chiaro che RAID-0 dovrà essere usato solamente se sarà accettabile un
leggero aumento del rischio di fallimento del volume.
Nel caso che si installi un computer farm o un cluster web, RAID-0 è
un'eccellente soluzione per aumentare le prestazioni IO dei sistemi. Dato che in
tali applicazioni si dispone di un certo livello di ridondanza (un alto numero
di computer coinvolti), le risorse continueranno ad essere disponibili anche nel
raro caso che una macchina con un difetto al sistema di dischi debba essere
disattivata e reinstallata in seguito ad una sostituzione del disco difettoso.
4.
Allestimento del software RAID su Linux 2.4
La preparazione di un sistema 2.4 per il software RAID è composta da due
operazioni: innanzitutto la funzione RAID dovrà essere attivata nel kernel. Ciò
involve la ricompilazione e l'installazione del nuovo kernel a meno che non si
usi un kernel con la funzionalità RAID già compresa.
Successivamente sarà necessario compilare ed installare il pacchetto raidtools.
I raidtools sono i programmi di utilità che permettono di inizializzare,
avviare, fermare e gestire i volumi RAID. Dopo che queste due operazioni saranno
completate, sarà possibile creare volumi RAID, file systems su questi volumi,
montarli, ecc.
Questioni riguardanti il kernel
Durante la stesura di quest'articolo è stato usato il kernel 2.4.0-test10. È
raccomandabile usare la versione più recente reperibile del kernel 2.4 che dovrà
essere almeno una versione 2.4.0-test10 (ma non la 2.4.0-test11, che purtroppo
ha dei serissimi problemi di corruzione dei file system). Queste potranno essere
reperite su kernel.org. Una guida
riguardo alla procedura di compilazione ed installazione di un nuovo kernel
partendo dai sorgenti si trova altrove su gentoo.org (vedi sezione Risorse alla fine dell'articolo).
Configurazione del kernel
È raccomandabile configurare il kernel in modo ché la funzionalità di software
RAID sia compilata direttamente nel kernel piuttosto che in moduli caricabili.
Dopo aver digitato make menuconfig o make xconfig, si troveranno
le opzioni per le funzionalità RAID nella sezione "Multi-device support (RAID
and LVM)". Inoltre è consigliabile attivare tutte le opzioni riguardanti
funzionalità RAID compreso "Boot support" e "Auto Detect support". Ciò
permetterà il kernel sia di avviare automaticamente i volumi RAID durante la
procedura d'avvio, sia di creare un file system principale (root file system).
Ecco un'immagine della schermata di make menuconfig. Le ultime due
opzioni (LVM support) non sono necessarie, anche se l'autore ha scelto di
compilarle nel kernel:
Figura 4.1: Configurazione del kernel per RAID |
 |
Dopo aver configurato nella maniera giusta il kernel, questo dovrà essere
compilato ed installato. Dopodiché è necessario riavviare il sistema. Adesso
segue l'installazione della versione più rcente dei raidtools.
Installazione dei raidtools
Nota:
Nota del traduttore: La seguente informazione riguardante il reperimento
e l'installazione dei raidtools è obsoleta! Sotto gentoo si otterrà un migliore
risultato eseguendo semplicemente emerge raidtools
|
Prima di poter installare i raidtools, è necessario di investire un po' di
tempo nella ricerca della versione più attuale. Normalmente questa potrà essere
reperita da kernel.org. Cercare la più
recente versione dell'archivio "raidtools-0.90" (non "raid0145"!). Attualmente
l'archivio è raidtools-19990824-0.90.tar.gz.
Chi ami vivere sul fronte (e chi usa un kernel 2.4.0-test è di sicuro un buon
candidato), può anche scegliere di visitare RedHat (vedi Risorse) e scaricare la più attuale versione dei
raidtools. Attualmente è raidtools-dangerous-0.90-20000116.tar.gz
Codice 4.1: Installazione dei raidtools |
# cd raidtools-0.90
# ./configure
# make
# make install
|
Codice 4.2: Esaminare lo stato del sottosistema RAID |
# cat /proc/mdstat
|
Allestimento delle partizioni
Al fine di creare volumi RAID, è necessario preparare almeno due partizioni sui
dischi fissi. Per usare RAID-0, le partizioni coinvolte dovranno essere di
eguali dimensioni e trovarsi su dischi fisici separati. Sia chiaro a tutti, che
i dati su queste partizioni saranno irrevocabilmente distrutti durante la
procedura di allestimento.
È consigliabile allestire partizioni che faranno parte di un volume RAID, con il
tipo FD. Ciò permetterà a linux di riconoscere queste partizioni durante
l'avvio del sistema come facenti parti di un volume RAID ed avviarle
automaticamente. Se le partizioni che compongono una volume RAID non vengono
riconosciute automaticamente dal sistema, sarà necessario avviarle manualmente
digitando raidstart --all dopo ogni avvio di sistema prima di poter
montare i file system dei volumi RAID. Essendo ciò molto sconveniente, si
consiglia di porre attenzione nel creare le partizioni col tipo corretto.
Allestimento del file /etc/raidtab
La sintassi del file raidtab è abbastanza semplice da capire: ogni blocco di
direttive inizia con un'annotazione raiddev che specifica quale volume
RAID verrà creato. Dopo aver installato i raidtools, il Makefile avrà creato i
nodi di dispositivo da /dev/md0 a /dev/md15 cosicché
sarà possibile utilizzarli.
Successivamente verrà specificato il numero di partizioni facente parte del
volume RAID con nr-raid-disks. Dopodiché specificando
persistent-superblock 1 si otterrà che durante la creazione del volume
RAID un particolare blocco di informazione contenente la configurazione del
volume RAID sarà salvata in ogni partizione facente parte del volume. Il kernel
linux usa questa informazione al fine di riconoscere ed avviare i volumi RAID
durante l'avvio del sistema. Per questo motivo è importante assicurarsi che ogni
volume RAID creato sia configurato in questo modo.
chunk-size specifica la granularità in kilobyte dei frammenti di
informazione usati per RAID-0. In quest'esempio il volume RAID-0 scriverà le
informazioni sulle partizioni di appartenenza in frammenti di 32K, il che
significa che i primi 32K di informazione saranno scritti su hde1,
i secondi su hdg1 e così via. La granularità deve essere
specificata anche per volumi in modalità lineare nonostante che in questo caso
questo valore non abbia nessun significato.
Per concludere, andranno specificati i dispositivi facente parte del volume.
Innanzitutto di specificherà il dispositivo della partizione con una riga
device seguita immediatamente da una riga raid-disk specificante
la posizione del dispositivo nel volume RAID partendo da 0 (zero).
Dopo aver creato il file /etc/raidtab, è possibile procedere alla
creazione del volume RAID.
mkraid e la creazione del filesystem
A questo punto le partizioni sono disponibili, il file raidtab è pronto e al suo
posto. Adesso si potrà proseguire a creare la prima partizione RAID usando il
comando mkraid:
Codice 4.3: Inizializzare la partizione |
# mkraid /dev/md0
|
Dopo l'esecuzione di questo comando, il dispositivo /dev/md0 sarà
inizializzato ed il volume md0 sarà avviato. Digitando cat /proc/mdstat
sarà possibile vedere uno stato del sistema RAID:
Codice 4.4: cat /proc/mdstat |
Personalities : [linear] [raid0] [raid1] [raid5]
read_ahead 1024 sectors
md0 : active raid0 hdg1[1] hde1[0]
90069632 blocks 32k chunks
unused devices: <none>
|
Perfetto! Il dispositivo RAID è avviato e funzionante. Tutto ciò che oramai
resta da fare è creare un filesystem su di esso. Ciò potrà essere ottenuto
eseguendo il comando mke2fs o il comando mkreiserfs (RAID-0 e
ReiserFS sono un'ottima combinazione!):
Codice 4.5: Un volume RAID ext2 |
# mke2fs /dev/md0
|
o
Codice 4.6: Un volume RAID ReiserFS |
# mkreiserfs /dev/md0
|
Adesso il filesystem potrà essere montato:
Codice 4.7: Montare un volume RAID |
# mkdir /mnt/raid
# mount /dev/md0 /mnt/raid
|
/dev/md0 potrà essere aggiunto al file fstab come qualsiasi altra
partizione:
Codice 4.8: Direttiva in fstab |
/dev/md0 /mnt/raid reiserfs defaults 0 0
|
Se il tipo della partizione è stato corretamente impostato su FD, il
volume sarà riconosciuto durante l'avvio del sistema e avviato automaticamente.
L'unica cosa che adesso resta da fare, è cominciare ad usare il volume. Nella
seconda parte di quest'articolo verranno approfondite le modalità più avanzate
di software RAID e RAID-1.
Risorse
|