R: La ridondanza che i livelli RAID offrono serve a proteggere nei confronti di un malfunzionamento del disco, non contro un difetto di alimentazione. Vi sono diversi modi di rimettere le cose a posto in questa situazione.In ogni caso i passi precedenti serviranno solo a sincronizzare i sistemi raid. Il filesystem probabilmente avrà ancora bisogno di riparazioni: perciò fsck dovrà essere eseguito sul dispositivo md quando esso è attivo e non è stato montato.
- Metodo (1): Usare i tool raid. Questi possono essere usati per rimettere in sincronia il sistema raid. I danni al filesystem non vengono corretti; dopo che il sistema raid è stato rimesso in sincronia, il filesystem deve ancora essere riparato con fsck. I sistemi RAID possono essere controllati con
ckraid /etc/raid1.conf
(per RAID-1, altrimenti/etc/raid5.conf
, etc.) Eseguendockraid /etc/raid1.conf --fix
il programma sceglierà uno dei dischi della serie (usualmente il primo), e userà questo come copia master, copiando i suoi blocchi su quelli degli altri dischi nel mirror. Per designare un disco da utilizzare come copia master si può usare l'opzione--force-source
: per esempio,ckraid /etc/raid1.conf --fix --force-source /dev/hdc3
. Il comando ckraid può essere lanciato senza l'opzione--fix
per verificare il sistema RAID inattivo senza apportargli modifiche. Quando vi sentirete a vostro agio con le modifiche proposte, potrete aggiungere l'opzione--fix
.- Metodo (2): Paranoico, spenditempo, non molto migliore del primo metodo. Assumiamo che la serie di dischi RAID sia formata da due dischi, e consista delle partizioni
/dev/hda3
e/dev/hdc3
. Potete provare ciò che segue:Al posto degli ultimi due passi, potete eseguire
fsck /dev/hda3
fsck /dev/hdc3
- si decida quale delle due partizioni ha meno errori o dove si possano aggiustare meglio o dove sono i dati che vi interessano. Scegliete l'una o l'altra come nuova copia ``master''. Diciamo che avete scelto
/dev/hdc3
.dd if=/dev/hdc3 of=/dev/hda3
mkraid raid1.conf -f --only-superblock
ckraid /etc/raid1.conf --fix --force-source /dev/hdc3
che dovrebbe essere leggermente più veloce.- Metodo (3): Versione del metodo precedente per pigri. Se non avete voglia di aspettare che il lungo controllo di fsck venga completato, va bene anche saltare i primi tre passi illustrati sopra e andare direttamente agli ultimi due. Assicuratevi solamente che venga eseguito
fsck /dev/md0
dopo che avete fatto. Il metodo (3) è solo il metodo (1) travestito.Con una serie di tre dischi RAID-1, vi sono più possibilità come quella di usare due dischi per ''votare'' una risposta a maggioranza. I tool per automatizzare questa procedura attualmente (Settembre 97) non esistono.
R: La ridondanza che i livelli RAID offrono serve a proteggere nei confronti di un malfunzionamento del disco, non contro un difetto di alimentazione. Poiché i dischi formanti una serie RAID-4 o RAID-5 non contengono un filesystem che fsck può leggere vi sono meno scelte nella riparazione. Non si può usare fsck per un controllo o una riparazione preliminare; si deve usare prima ckraid.Il comando
ckraid
può essere eseguito in modalità "sicura" senza l'opzione--fix
per verificare il sistema RAID senza apportargli cambiamenti. Quando vi sentirete a vostro agio con i cambiamenti proposti basterà aggiungere l'opzione--fix
.
Se si vuole si può provare designando uno dei dei dischi come ``disco rotto''. Fatelo con l'opzione
--suggest-failed-disk-mask
(in inglese suona come "suggerisci-maschera-disco-rotto". ndt).Un solo bit dovrà essere indicato nell'opzione: RAID-5 non può recuperare due dischi non funzionanti. La maschera è una maschera binaria: quindi:
0x1 == primo disco 0x2 == secondo disco 0x4 == terzo disco 0x8 == quarto disco, etc.In alternativa si può scegliere di modificare i settori di parità usando l'opzione
--suggest-fix-parity
. Questa farà si che la parità venga ricalcolata dagli altri settori.
Le opzioni
--suggest-failed-disk-mask
e--suggest-fix-parity
possono essere usate senza problemi per la sola verifica. Non vengono apportati cambiamenti se l'opzione--fix
non è stata specificata. Quindi potete sperimentare schemi differenti di riparazione.
/dev/md0
è formato da due
partizioni di hard disk: /dev/hda3
e /dev/hdc3
.
Recentemente, il disco che conteneva /dev/hdc3
si è rotto,
ed è stato rimpiazzato da un nuovo disco. Il mio migliore amico,
che non conosce RAID, dice che la cosa corretta da fare adesso
è ''dd if=/dev/hda3 of=/dev/hdc3
''.
Ho provato a farlo, ma le cose continuano a non funzionare.
R: Il tuo migliore amico dovrebbe rimanere alla larga dal tuo computer. Fortunatamente non vi sono stati danni gravi. Si può riaggiustare il tutto eseguendo:Usando
mkraid raid1.conf -f --only-superblockdd
, sono state create due copie identiche della partizione. Questo va quasi bene, tranne per il fatto che le estensioni RAID-1 del kernel si aspettano che i superblock RAID siano differenti. Così, quando si prova a riattivare RAID, il software nota il problema e disattiva una delle due partizioni. Ricreando i superblock, si dovrebbe avere un sistema perfettamente funzionante.
mkraid
non ha un'opzione
--only-superblock
. Che devo fare?
R: I nuovi tool non supportano questa opzione, che è stata rimpiazzata da--force-resync
. È stato riferito che la seguente sequenza di comandi funziona con gli ultimi tool e software:Dopo questo, un
umount /web (dove /dev/md0 è stata montata) raidstop /dev/md0 mkraid /dev/md0 --force-resync --really-force raidstart /dev/md0cat /proc/mdstat
dovrebbe dareresync in progress
, e a questo punto dovrebbe essere possibile effettuare unmount /dev/md0
.
/dev/md0
è formato da due
partizioni: /dev/hda3
e /dev/hdc3
.
Il mio migliore amico/a (in inglese "My best (girl)friend" NdT), che
non conosce RAID, ha eseguito fsck
su /dev/hda3
mentre io non guardavo e adesso RAID ha smesso di funzionare.
Cosa devo fare?
R: Il concetto di "migliore amico" andrebbe riesaminato. In generale,fsck
non dovrebbe essere mai eseguito su una singola partizione facente parte di un sistema RAID. Presumendo che nessuna partizione sia stata fortemente danneggiata non sono andati persi dati e il dispositivo RAID-1 può essere recuperato come segue:Questo dovrebbe riportare al funzionamento il dispositivo di mirror.
- effettuare un backup del filesystem di
/dev/hda3
dd if=/dev/hda3 of=/dev/hdc3
mkraid raid1.conf -f --only-superblock
R: Perché ogni partizione componente un mirror RAID-1 è una copia perfettamente valida del filesystem. Addirittura il mirroring può essere disabilitato e una delle partizioni può venire montata e funzionerà senza problemi come un filesystem normale, senza RAID. Quando si è pronti a ripartire con RAID-1, si smonti la partizione e si seguano le istruzioni sopracitate per far ripartire il mirror. Si noti che le istruzioni di cui sopra valgono SOLO per RAID-1 e per nessun altro livello.Vi potrebbe far sentire più a vostro agio l'invertire la direzione della copia di cui sopra: copiare dal disco che non è stato toccato a quello che lo è stato. Solo assicuratevi che alla fine venga eseguito fsck sul risultante dispositivo md.
fsck /dev/md0
?
R: Si, è una cosa sicura l'esecuzione difsck
sui dispositivimd
. In effetti questo èl'unico
posto sicuro dove eseguirefsck
.
R: Una volta che un disco si rompe, un codice di errore viene trasmesso dal driver a basso livello al driver RAID. Il driver RAID marcherà questo disco come ``cattivo'' nei superblock dei dischi ``buoni'' (in questa maniera più avanti sapremo quale dei dischi di mirror sia buono e quale non) e continuerà le operazioni RAID sui rimasti dischi funzionanti.Questo, va da sé, dà per certo che il disco ed i driver di basso livello possano accorgersi di un errore in lettura/scrittura e che, per esempio, non continuino a danneggiare i dati in silenzio. Questo è vero per i driver attuali (schemi di rilevazione dell'errore sono usati internamente) ed è base delle operazioni RAID.
R: Si sta lavorando per completare la ``ricostruzione a caldo''. Con questa funzionalità, si possono aggiungere dei dischi ``spare'' al set RAID (sia esso di livello 1 o 4/5), e quando un disco smette di funzionare i dati contenuti in esso saranno ricostruiti su uno dei dischi spare durante l'attività, senza nemmeno aver bisogno di fermare il set RAID.Tuttavia, per usare questa funzionalità, il disco spare deve essere stato dichiarato durante il boot, o esso dovrà essere aggiunto ``a caldo'', cosa che richiede l'uso di connettori e cabinet speciali che consentano di aggiungere un disco senza togliere corrente.
Da Ottobre 97 esiste una versione beta di MD che consente:
Come predefinizione, la ricostruzione automatica è in questo momento (Dicembre 97) disabilitata a causa della natura ancora sperimentale di questo lavoro. Può comunque essere abilitata cambiando il valore di
- la ricostruzione dei livelli RAID 1 e 5 su dischi spare
- la ricostruzione della parità di RAID-5 dopo uno shutdown sporco
- l'aggiunta ``a caldo'' di dischi spare ad una serie già in funzione di dischi RAID 1 o 4/5.
SUPPORT_RECONSTRUCTION
ininclude/linux/md.h
.
Se i drive spare sono stati configurati su un sistema raid quando esso è stato creato e la ricostruzione è stata attivata nel kernel, i drive spare conterranno da subito il superblock RAID (scritto da
mkraid
), e il kernel sarà capace di ricostruire il contenuto in maniera automatica (senza bisogno degli usuali passimdstop
, cambia il drive,ckraid
,mdrun
).
Se non avete configurato la ricostruzione automatica e non avete configurato un disco spare, la procedura descritta da Gadi Oxman < gadio@netvision.net.il> è quella raccomandata:
- Per adesso, una volta che il primo disco è stato rimosso, il sistema RAID continuerà a funzionare in modalità ``degradata''. Per riportarlo alla piena funzionalità avrete bisogno di:
A questo punto, nel sistema funzioneranno di nuovo tutti i dischi, garantendoci dal malfunzionamento di uno di essi.
- fermare il sottosistema RAID (
mdstop /dev/md0
)- rimpiazzare il disco rotto
- eseguire
ckraid raid.conf
per ricostruire il suo contenuto- far ripartire RAID (
mdadd
,mdrun
).Per adesso non è possibile assegnare singoli dischi spare a diverse serie RAID. Ogni sottosistema richiederà il proprio disco spare.
R:
Un evento come questo viene segnalato nei log di sistema dal kernel
con la priorità ``KERN_ALERT
''. Vi sono diversi
pacchetti software che controllano i file log di sistema e fanno
emettere un bip allo speaker del PC, eseguono un pager, mandano
e-mail ecc. automaticamente.
R: Gadi Oxman < gadio@netvision.net.il> ha scritto: Normalmente, per far funzionare un set di n dischi RAID-5 si deve eseguire:Anche se uno dei dischi è rotto, si deve comunque eseguire
mdadd /dev/md0 /dev/disk1 ... /dev/disk(n) mdrun -p5 /dev/md0mdadd
su quel disco, come se tutto fosse normale. (?? provare a usare /dev/null al posto del disco rotto ??? occhio) Quindi, Il sistema RAID funzionerà in modalità degradata con (n - 1) dischi. Se l'esecuzione di ``mdrun
'' non va a buon fine, il kernel ha notato un errore (per esempio diversi dischi rotti o uno shutdown sporco). Si usi ``dmesg
'' per visionare i messaggi di errore del kernel generati dall'esecuzione di ``mdrun
''. Se il set raid-5 è rovinato a causa di un calo di tensione, e non a causa della rottura di un disco, si può tentare di recuperare il tutto creando un nuovo superblock RAID:Una serie di dischi RAID non fornisce protezione alcuna contro i difetti dell'alimentazione o contro un blocco del kernel e quindi non può nemmeno garantire un corretto recupero dei dati. La ricostruzione del superblock servirà solo a far ignorare al sistema la condizione in cui si trova marcando tutti i drive come ``OK'' come se niente fosse accaduto.
mkraid -f --only-superblock raid5.conf
R: Uno scenario tipico è il seguente:
- Una serie di dischi RAID-5 è attiva.
- Un disco si rompe mentre la serie è attiva.
- Il firmware del disco e i driver di basso livello del disco/controller si accorgono del malfunzionamento e inviano un messaggio di errore al driver MD.
- Il driver MD continua a fornire un dispositivo
/dev/md0
privo di errori ai driver di livello più alto (anche se con performance ridotte) usando i rimanenti drive operativi.- L'amministratore di sistema può quindi eseguire
umount /dev/md0
emdstop /dev/md0
come al solito.- Se il disco rotto non viene rimpiazzato, l'amministratore di sistema può comunque far partire il sistema raid in modalità degradata come al solito eseguendo
mdadd
emdrun
.
fsck
mi dà molti, molti errori. È normale?
R: No. E, a meno che fsck non sia stato eseguito in modalità "verify only; do not update" ("verifica solamente; non aggiornare". ndt), è del tutto possibile che abbiate rovinato i vostri dati. Sfortunatamente, uno scenario non poco raro è quello nel quale si cambia accidentalmente l'ordine dei dischi in una serie di dischi RAID-5, dopo averne rimpiazzato uno. Anche se il superblock RAID memorizza l'ordine corretto, non tutti i tool tengono conto di questa informazione. In particolare, la versione attuale dickraid
userà le informazioni specificate nell'opzione-f
(usualmente il file/etc/raid5.conf
) al posto di quelle contenute nel superblock. Se l'ordine specificato non è quello corretto il disco rimpiazzato sarà ricostruito in maniera errata. Sintomo di questo tipo di sbaglio sembrano essere i pesanti e numerosi errori difsck
.E, nel caso siate meravigliati, sì, qualcuno ha perso tutti i suoi dati commettendo questo sbaglio. È fortemente raccomandato un backup su nastro di tutti i dati prima di riconfigurare una serie di dischi RAID.
R:
A: Se siete scettici sul RAID, sull'Alta Affidabilità e UPS probabilmente è una buona idea l'essere anche superstiziosi. Male non può fare, no?
mdstop
serve solo ad essere sicuri
che i dischi siano in sincronia. È REALMENTE necessario? Non è
abbastanza smontare il filesystem?
R: Il comandomdstop /dev/md0
:
- lo marcherà come ''pulito''. Questo ci consente di rilevare gli shutdown sporchi dovuti, per esempio, ad un blocco del kernel o ad un malfunzionamento nell'alimentazione.
- metterà in sincronia i dischi del dispositivo. Questa è una cosa meno importante dello smontare il filesystem ma è importante se l'accesso a
/dev/md0
avviene direttamente invece che attraverso un filesystem (ad esempio come nel caso die2fsck
).