Gentoo Logo

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

Indice:

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

Fig. 1

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



Stampa

Aggiornato il 9 ottobre 2005

Oggetto: In questa serie di due articoli riguardanti l'implementazione del Software RAID, Daniel Robins spiega la nuova tecnologia usata per migliorare le prestazioni e l'affidabilità dei dischi fissi mediante la distribuzione dei dati su più dischi. Il primo esempio riguarda l'installazione del software RAID (kernel ed installazione dei programmi aggiuntivi) e mostra come creare volumi lineari e RAID-0.

Daniel Robbins
Autore

Leo Moll
Traduttore

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.