Manuale passo passo per imparare a gestire array RAID con il terminale simulato
Il Simulatore RAID è uno strumento didattico realizzato come pagina HTML autonoma, che non richiede alcuna installazione né connessione a internet. È pensato per imparare a gestire array RAID software in ambiente Linux, utilizzando un terminale simulato che riproduce i comandi reali del sistema operativo.
Il simulatore permette di sperimentare in modo sicuro tutte le situazioni che si possono incontrare nella gestione reale di un array RAID: la creazione dell'array, il guasto di un disco, la diagnosi del problema, la sostituzione del disco guasto e la ricostruzione dei dati. Tutte queste operazioni vengono eseguite attraverso comandi digitati nel terminale, esattamente come si farebbe su un vero server Linux.
Usare il simulatore permette di:
mdadm, smartctl, dmesg e tutti gli altri strumenti Linux per la gestione dei dischi;RAID è l'acronimo di Redundant Array of Independent Disks, che significa "gruppo ridondante di dischi indipendenti". Si tratta di una tecnologia che consente di unire più dischi fisici in un unico volume logico, con lo scopo di aumentare le prestazioni, la capacità o la tolleranza ai guasti, oppure una combinazione di questi tre obiettivi.
L'idea di base è semplice: anziché avere un solo disco grande che, se si guasta, fa perdere tutti i dati, si usano più dischi in modo coordinato. A seconda di come vengono organizzati, il sistema può continuare a funzionare anche se uno o più dischi si guastano.
Questi tre concetti sono fondamentali per capire le differenze tra i livelli RAID:
Lo striping (a strisce) è la tecnica di distribuire i dati in blocchi sequenziali su più dischi. Quando si scrive un file, i blocchi vengono scritti in parallelo su dischi diversi. Quando si legge, i blocchi vengono letti in parallelo. Il risultato è un aumento della velocità di trasferimento proporzionale al numero di dischi. Il lato negativo è che se un solo disco si guasta, tutti i dati dell'intero array sono persi, perché ogni file è spezzettato su più dischi e nessun disco contiene i dati completi.
Il mirroring (specchio) è la tecnica di copiare esattamente gli stessi dati su due o più dischi. Ogni dato scritto viene scritto su tutti i dischi in parallelo. In questo modo, se un disco si guasta, i dati sono ancora presenti sugli altri dischi. Il lato negativo è che si spreca capacità: con due dischi da 1 TB si ottiene solo 1 TB utile, perché l'altro disco è la copia esatta del primo.
La parità è una soluzione intermedia tra striping puro e mirroring. Invece di copiare tutti i dati, si calcola un'informazione di controllo chiamata appunto "parità" che permette di ricostruire i dati di un disco mancante. La parità viene calcolata con un'operazione logica chiamata XOR (OR esclusivo): se si conoscono tutti i blocchi tranne uno, si può ricostruire il blocco mancante combinando gli altri con la parità. Questo sistema permette di avere ridondanza sprecando meno spazio rispetto al mirroring.
Il RAID può essere implementato in due modi:
mdadm. Il RAID software è meno costoso e più flessibile, ma utilizza risorse del processore per i calcoli di parità.Il simulatore riproduce il comportamento di un RAID software Linux gestito tramite mdadm.
Il simulatore supporta cinque livelli RAID: 0, 1, 5, 6 e 10. Ognuno ha caratteristiche molto diverse. È importante conoscerle bene per capire cosa succede durante le simulazioni.
Definizione semplice: i dati vengono distribuiti a strisce su tutti i dischi dell'array. Non c'è alcuna ridondanza.
Funzionamento: ogni blocco di dati viene scritto su un disco diverso in modo ciclico. Un file da 3 blocchi viene scritto: blocco 1 su sda, blocco 2 su sdb, blocco 3 su sdc. La lettura e la scrittura avvengono in parallelo su tutti i dischi.
| Parametro | Valore |
|---|---|
| Dischi minimi | 2 |
| Capacità utile | N × dimensione disco |
| Fault tolerance | 0 (nessuna) |
Vantaggi: massima velocità di lettura e scrittura; tutta la capacità dei dischi è utilizzabile.
Svantaggi: se un solo disco si guasta, l'intero array è perso. I dati non sono recuperabili tramite RAID.
Esempio pratico nel simulatore: con 3 dischi da 1 TB ottieni 3 TB utili, ma se uno si guasta l'array passa immediatamente a FAILED.
Quando conviene: solo quando la velocità è l'unica priorità e si dispone di un backup completo e aggiornato. Non adatto per dati importanti.
Definizione semplice: tutti i dati vengono copiati su ogni disco dell'array. Ogni disco è uno specchio identico degli altri.
Funzionamento: ogni operazione di scrittura viene replicata su tutti i dischi contemporaneamente. In lettura, i dati possono essere letti da qualsiasi disco, il che può migliorare le prestazioni di lettura.
| Parametro | Valore |
|---|---|
| Dischi minimi | 2 |
| Capacità utile | 1 × dimensione disco (indipendentemente dal numero di dischi) |
| Fault tolerance | N−1 (possono guastarsi tutti i dischi tranne uno) |
Vantaggi: massima ridondanza; il sistema continua a funzionare anche se rimane un solo disco. Ottimo per dati critici di dimensioni contenute.
Svantaggi: la capacità utile è quella di un singolo disco. Con 4 dischi da 1 TB si ha solo 1 TB utile.
Esempio pratico nel simulatore: con 2 dischi da 1 TB si ottiene 1 TB utile; se sda si guasta, sdb contiene ancora tutti i dati.
Quando conviene: per il disco del sistema operativo, per database di piccole dimensioni, per qualsiasi dati dove l'affidabilità è più importante della capacità.
Definizione semplice: i dati vengono distribuiti su tutti i dischi insieme a informazioni di parità che permettono di ricostruire i dati in caso di guasto di un disco.
Funzionamento: i dati vengono scritti a strisce su N−1 dischi; il disco rimanente contiene la parità (il risultato XOR degli altri blocchi). La parità è distribuita in modo rotante su tutti i dischi, evitando il collo di bottiglia di un singolo disco dedicato alla parità.
| Parametro | Valore |
|---|---|
| Dischi minimi | 3 |
| Capacità utile | (N−1) × dimensione disco |
| Fault tolerance | 1 (un solo disco può guastarsi) |
Vantaggi: buon bilanciamento tra prestazioni, capacità e ridondanza. È il livello RAID più diffuso per NAS e file server.
Svantaggi: se due dischi si guastano contemporaneamente, l'array è FAILED e i dati sono persi. Il rebuild è lento con dischi grandi e mette sotto sforzo i dischi rimanenti.
Esempio pratico nel simulatore: con 4 dischi da 1 TB si ottiene 3 TB utili. Se sdb si guasta, l'array è DEGRADED ma i dati sono ancora accessibili. Dopo aver aggiunto uno spare e ricostruito, si torna a OK.
Quando conviene: per NAS domestici e di piccola impresa, file server, storage con 3–8 dischi.
Definizione semplice: come RAID 5, ma con due blocchi di parità (P e Q) invece di uno. Questo permette di sopravvivere al guasto di due dischi contemporaneamente.
Funzionamento: due algoritmi di parità diversi (basati su campi di Galois) vengono usati per calcolare P e Q. Questi due blocchi di parità vengono distribuiti su tutti i dischi in modo rotante. Grazie a P e Q è possibile ricostruire i dati anche se mancano due dischi.
| Parametro | Valore |
|---|---|
| Dischi minimi | 4 |
| Capacità utile | (N−2) × dimensione disco |
| Fault tolerance | 2 (due dischi possono guastarsi) |
Vantaggi: tolleranza a due guasti contemporanei; ideale per array con molti dischi grandi dove il rebuild è lungo.
Svantaggi: le scritture sono più lente rispetto a RAID 5; si perdono 2 dischi di capacità invece di 1.
Esempio pratico nel simulatore: con 6 dischi da 1 TB si ottiene 4 TB utili. Con due dischi FAILED l'array è DEGRADED ma funzionante; il rebuild avviene un disco alla volta.
Quando conviene: per storage enterprise, cloud, array con 8 o più dischi grandi, dove il tempo di rebuild può durare giorni e il rischio di un secondo guasto durante il rebuild è reale.
Definizione semplice: combina il mirroring (RAID 1) con lo striping (RAID 0). I dischi vengono prima organizzati in coppie mirror, poi le coppie vengono messe in stripe.
Funzionamento: con 4 dischi, sda e sdb formano una coppia mirror (mirror 1), sdc e sdd formano un'altra coppia mirror (mirror 2). I dati vengono scritti in stripe su mirror 1 e mirror 2. Ogni disco ha un gemello che contiene esattamente gli stessi dati.
| Parametro | Valore |
|---|---|
| Dischi minimi | 4 (numero pari) |
| Capacità utile | (N/2) × dimensione disco |
| Fault tolerance | 1 per coppia mirror (purché non si guastino entrambi i dischi della stessa coppia) |
Vantaggi: prestazioni eccellenti sia in lettura che in scrittura; rebuild molto più veloce rispetto a RAID 5/6 perché si copia da un mirror.
Svantaggi: si usa solo il 50% della capacità; richiede almeno 4 dischi; costoso.
Caso critico nel simulatore: se si guastano entrambi i dischi di una coppia mirror (es. sda e sdb), l'array diventa immediatamente FAILED, indipendentemente dalle altre coppie.
Quando conviene: database SQL ad alto traffico, virtualizzazione, applicazioni che richiedono sia velocità che alta affidabilità.
Nella sezione documentazione del simulatore vengono citati anche RAID 2, 3 e 4. Questi sono livelli storici raramente usati oggi:
Questi livelli non sono simulabili nel laboratorio: servono solo per la cultura generale.
| Livello | Min dischi | Capacità utile | Fault tolerance | Uso tipico |
|---|---|---|---|---|
| RAID 0 | 2 | N × size | 0 | Cache, editing video |
| RAID 1 | 2 | 1 × size | N−1 | OS, database piccoli |
| RAID 5 | 3 | (N−1) × size | 1 | NAS, file server |
| RAID 6 | 4 | (N−2) × size | 2 | Enterprise, cloud |
| RAID 10 | 4 (pari) | (N/2) × size | 1 per coppia | Database ad alto I/O |
Aprendo il file HTML nel browser, si vedono tre aree principali identificate da tre schede (tab) in alto: LAB, ESERCIZI e DOCUMENTAZIONE. In questa sezione vengono descritte tutte le parti visibili dell'interfaccia.
Accanto alle schede si trova il pulsante Teacher: OFF/ON. Quando è disattivato (stato normale per gli studenti), i dischi nella griglia non sono cliccabili e il comando solution non è disponibile. Quando viene attivato in modalità Teacher, diventa possibile cambiare manualmente lo stato dei dischi cliccandoci sopra, e il comando solution mostra la soluzione dello scenario.
Nella parte alta della colonna sinistra si trovano i controlli per configurare l'array:
Subito sotto i controlli si trovano due riquadri statistici:
La barra di stato mostra lo stato attuale dell'array con una spia luminosa colorata e il testo STATUS:
Accanto alla spia si trova una riga di testo più piccola che mostra i dettagli: livello RAID, numero di membri, dischi FAILED, dischi REMOVED, spares presenti e percentuale di rebuild se in corso.
Il riquadro Telemetria mostra quattro valori che cambiano in tempo reale in base allo stato dei dischi:
Il riquadro Verifica permette di impostare un timer per le verifiche a tempo:
hint. Ogni hint costa 3 punti.export nel terminale. Scarica il report in formato .txt.La griglia mostra un riquadro per ogni disco dell'array. Ogni riquadro visualizza il nome del dispositivo (es. /dev/sda), lo stato del disco e, se in rebuild, una barra di avanzamento. Il colore del bordo indica lo stato: verde per OK, rosso per FAILED, giallo per rebuilding o OVERHEAT, grigio per REMOVED, blu per SPARE o CRC.
Il riquadro Scenario mostra l'obiettivo dello scenario corrente, con la descrizione del problema e le azioni richieste. Quando si completa correttamente lo scenario, compare "✅ RISOLTO". Se la modalità Teacher è attiva, viene mostrata anche la soluzione.
Accanto al terminale, questo riquadro mostra una rappresentazione testuale della distribuzione delle stripe di parità quando RAID 5 è selezionato. Utile per capire visivamente come funziona la parità rotante.
Il terminale è l'elemento centrale del simulatore. Occupa la colonna destra della scheda LAB. Si presenta come una finestra nera con prompt dei comandi. I comandi vengono digitati nel campo di testo in basso e inviati con il tasto Invio o il pulsante "Invia". L'output appare in colori diversi a seconda del tipo di messaggio.
Nella scheda ESERCIZI si trovano due blocchi:
XK7M2P9Q), uno scenario scelto a caso e un obiettivo. Il pulsante "Carica questa prova nel LAB" trasferisce lo scenario nel terminale.cat /proc/mdstat e premere Invio. L'output mostra lo stato dell'array, il livello RAID, tutti i dischi membri e lo stato [UUU...] (U = Up, _ = mancante, R = rebuilding). Con tutti i dischi OK si vedono solo "U".
STATUS: OK — L'array funziona normalmente. Tutti i dischi sono operativi. I dati sono accessibili e la ridondanza è integra (per i livelli che ce l'hanno). Si può lavorare normalmente.
STATUS: DEGRADED — L'array funziona ancora, ma uno o più dischi sono FAILED o REMOVED. I dati sono ancora accessibili, ma la ridondanza è ridotta o assente. Se si guasta un altro disco (nei livelli con tolleranza 1), si rischia il FAILED. Bisogna intervenire il prima possibile.
STATUS: FAILED — L'array non funziona. I dati non sono accessibili. Il numero di guasti ha superato la tolleranza del livello RAID. L'unica soluzione è il restore da backup. I comandi di filesystem (mount, ls, cat) restituiscono errore.
Il terminale è lo strumento principale con cui si lavora nel simulatore. Riproduce il comportamento di un terminale Linux reale, con un prompt, la possibilità di digitare comandi, la cronologia con i tasti freccia e output a colori.
Il campo di inserimento si trova in basso nel riquadro del terminale, accanto al prompt. Il prompt mostra lo stato attuale dell'array nella forma raidlab(OK)$ o raidlab(DEGRADED)$ o raidlab(FAILED)$. Questo è un indicatore prezioso: il prompt stesso rivela lo stato dell'array.
Per inviare un comando si preme Invio oppure il pulsante "Invia". Per scorrere la cronologia dei comandi precedenti si usano i tasti freccia su e giù.
L'output del terminale usa colori diversi con significato preciso:
I chip in cima al terminale mostrano lo stato del filesystem (fs: none → fs: unmounted → fs: mounted@/mnt) e lo stato dell'esercizio (exercise: on/off).
help. Non preoccuparsi: i comandi errati non producono effetti collaterali.Di seguito vengono descritti tutti i comandi realmente presenti nel simulatore, nel formato: cosa fa, quando si usa, esempio e risultato atteso.
helpUtilitàhelpclearUtilitàscenario listScenariraid0_fail, raid1_onefail, raid5_1fail, raid5_2fail, raid6_2fail, raid10_pairfail, rebuild_interrupted, wrong_size_spare, crc_errors, overheat.scenario load <nome>Scenariscenario load raid5_1failcat /proc/mdstatDiagnosiraidlab(DEGRADED)$ cat /proc/mdstat
Personalities : [raid0] [raid1] [raid5] [raid6] [raid10]
md0 : active raid5 /dev/sda[U] /dev/sdb[F] /dev/sdc[U] /dev/sdd[U]
status=DEGRADED blocks=3000GB [ U_UU ]
unused devices: <none>
status=: OK, DEGRADED o FAILED. Le lettere tra parentesi quadre: U = Up (funzionante), _ = mancante, R = in rebuild, F = FAILED, M = REMOVED. La riga recovery = con percentuale durante il rebuild.mdadm --detail /dev/md0Diagnosimdadm /dev/md0 --detailraidlab(DEGRADED)$ mdadm --detail /dev/md0
/dev/md0:
Version : 1.2 (sim)
Raid Level : raid5
Array Size : 3000 GB
Device Count : 4
Failed Disks : 1
Removed Disks : 0
Spare Disks : 0
State : DEGRADED
Fault Tolerance: 1 disk(s) (didattica)
Number State Device Size
0 OK /dev/sda 1000GB
1 FAILED /dev/sdb 1000GB
2 OK /dev/sdc 1000GB
3 OK /dev/sdd 1000GB
State, il numero di Failed Disks e Removed Disks, e la tabella dei dischi per identificare quale dispositivo (es. /dev/sdb) è guasto.mdadm --fail /dev/md0 /dev/sdXRecoverymdadm --fail /dev/md0 /dev/sdbmdadm /dev/md0 --fail /dev/sdbmdadm --remove /dev/md0 /dev/sdXRecoverymdadm --remove /dev/md0 /dev/sdbmdadm /dev/md0 --remove /dev/sdbmdadm --add /dev/md0 /dev/sdX [--size N]Recoverymdadm --add /dev/md0 /dev/sdemdadm --add /dev/md0 /dev/sdz --size 500 (aggiunge un disco da 500 GB)mdadm --rebuild /dev/md0Recoverymdadm --rebuild /dev/md0cat /proc/mdstat per vedere la percentuale di avanzamento.mdadm --stop-rebuild /dev/md0RecoverylsblkDiagnosiraidlab(OK)$ lsblk
NAME SIZE TYPE MOUNTPOINT
sda 1000G disk
sdb 1000G disk (failed)
sdc 1000G disk
sdd 1000G disk
md0 3000G raid5 /mnt
fdisk -lDiagnosiblkidDiagnosidmesg | tailDiagnosiraidlab(DEGRADED)$ dmesg | tail
[14:22:01] WARN: /dev/sdb: disk FAILED (scenario)
[14:22:01] INFO: md0: created RAID5 with 4 disks
dmesg da solo (senza | tail) non è riconosciuto. Va digitato esattamente dmesg | tail.smartctl -a /dev/sdXDiagnosismartctl -a /dev/sdbraidlab(DEGRADED)$ smartctl -a /dev/sdb smartctl 7.4 /dev/sdb (sim) Device Model: SIMDISK 7K2 SMART overall-health: FAILED! 5 Reallocated_Sector_Ct ... 210 ← alto: disco guasto fisicamente 197 Current_Pending_Sector ... 18 ← settori in attesa 199 UDMA_CRC_Error_Count ... 0 194 Temperature_Celsius ... 33
df -hFilesystemmkfs.ext4 /dev/md0Filesystemmount /dev/md0 /mntFilesystemumount /mntFilesystemunmount /mnt.ls /mnt · touch /mnt/file · echo "testo" > /mnt/file · cat /mnt/file · rm /mnt/fileFilesystemls /mnt — elenca i file nella directory /mnt.touch /mnt/file — crea un file vuoto.echo "testo" > /mnt/file — scrive il testo nel file (le virgolette sono opzionali).cat /mnt/file — mostra il contenuto del file.rm /mnt/file — cancella il file.reportUtilitàexportUtilitàhintSupportopowerfailSimulazioneconclude <testo>Scenariconclude restore da backupsolutionSolo TeacherQuesta sezione descrive la procedura corretta da seguire ogni volta che si incontra un problema con un array RAID. Il principio fondamentale è: prima capire, poi agire. Mai modificare l'array prima di avere un quadro chiaro della situazione.
raidlab(DEGRADED)$ o raidlab(FAILED)$ indica immediatamente che c'è un problema. Guardare anche la spia colorata nella dashboard.
cat /proc/mdstatLeggere attentamente: qual è lo stato (OK/DEGRADED/FAILED)? Le lettere tra parentesi quadre mostrano quali dischi sono attivi (U), mancanti (_), in rebuild (R), guasti (F). Contare quanti dischi sono in stato anomalo.
mdadm --detail /dev/md0Questo comando mostra esattamente quale disco (quale /dev/sdX) è guasto, il numero esatto di dischi FAILED e REMOVED, e il numero di spares disponibili.
dmesg | tailI messaggi dmesg forniscono informazioni sul tipo di errore: guasto I/O, CRC errors, temperatura critica. Spesso indicano il dispositivo esatto con un messaggio come "/dev/sdb: disk FAILED".
smartctl -a /dev/sdb(sostituire sdb con il disco identificato al passo precedente). Guardare:
conclude restore da backup.
Se l'array è DEGRADED (guasti entro la tolleranza): procedere con la sostituzione del disco guasto.
mdadm --remove /dev/md0 /dev/sdbSe il disco non è già marcato FAILED, marcarlo prima con
mdadm --fail /dev/md0 /dev/sdb, poi rimuoverlo.
mdadm --add /dev/md0 /dev/sdeIl nome del nuovo disco deve essere diverso da quelli già presenti. Il disco viene aggiunto come SPARE.
mdadm --rebuild /dev/md0Il rebuild inizia. Il disco spare diventa REBUILDING. Si vede la barra di avanzamento nella griglia.
cat /proc/mdstatEseguire questo comando periodicamente per monitorare la percentuale di avanzamento. Si vede la riga "recovery = X%" con il tempo stimato.
cat /proc/mdstat che lo stato sia tornato OK e che tutte le lettere tra parentesi siano "U". Nel riquadro scenario dovrebbe comparire "✅ RISOLTO".
| Stato | Significato | Cosa fare |
|---|---|---|
| OK | Disco funzionante normalmente. Tutti i parametri SMART sono nella norma. | Nessuna azione necessaria. |
| FAILED | Disco guasto. Non risponde correttamente o ha troppi settori danneggiati. I dati sul disco non sono più affidabili. | Rimuovere con --remove, poi sostituire con --add. |
| REMOVED | Disco rimosso dall'array tramite --remove. Fisicamente assente dall'array ma non ancora sostituito. L'array resta DEGRADED. | Aggiungere un disco sostitutivo con --add. |
| SPARE | Disco aggiunto con --add ma non ancora usato per il rebuild. Pronto per essere utilizzato nella ricostruzione. | Avviare il rebuild con --rebuild. |
| REBUILDING | Disco in fase di ricostruzione. I dati vengono riscritti progressivamente su questo disco. L'array è DEGRADED durante il rebuild. | Attendere il completamento. Non spegnere il sistema durante il rebuild. |
| SLOW | Disco che risponde lentamente. Degrada le prestazioni dell'intero array. Non è ancora guasto, ma è a rischio. | Monitorare con smartctl. Pianificare la sostituzione. |
| OVERHEAT | Temperatura critica (sopra i 55–60°C). Il disco rischia di guastarsi a breve. Il sistema segnala l'allarme termico. | Migliorare il raffreddamento. Pianificare la sostituzione preventiva. Usare conclude per registrare la diagnosi. |
| CRC | Errori CRC rilevati. Spesso indica un problema di cavo SATA o di connessione, non necessariamente del disco stesso. | Usare smartctl per controllare Reallocated_Sector_Ct. Se è 0, il problema è probabilmente il cavo. Usare conclude per registrare la diagnosi. |
| Stato | Significato | Accesso ai dati | Azione richiesta |
|---|---|---|---|
| OK | Tutti i dischi funzionanti, ridondanza integra. | Sì, normale. | Nessuna. |
| DEGRADED | Uno o più dischi guasti o rimossi, ma entro i limiti di tolleranza. La ridondanza è parzialmente o totalmente assente. | Sì, ma a rischio. | Intervenire il prima possibile. Sostituire il disco guasto e ricostruire. |
| FAILED | Superata la tolleranza ai guasti. I dati non sono recuperabili tramite RAID. | No. | Restore da backup. Non è possibile il rebuild RAID. |
La scheda 📚 DOCUMENTAZIONE contiene una guida teorica completa direttamente nel simulatore, organizzata in due pannelli selezionabili:
Come si usa: fare clic sulla scheda DOCUMENTAZIONE in alto. Si apre il pannello "Guida completa RAID". Per accedere alle procedure, fare clic sul secondo pannello e poi navigare tra le quattro sezioni usando i pulsanti interni (🔍 5.1 Diagnosi RAID, 🔧 5.2 Recovery RAID, ecc.).
Il report è un documento testuale che riassume l'intera sessione di lavoro. È uno strumento fondamentale per la valutazione in laboratorio.
Ci sono due modi equivalenti:
report nel terminale per visualizzarlo a schermo.export oppure cliccare il pulsante "⬇ Scarica report" per scaricarlo come file .txt.Generare il report al termine del lavoro, dopo aver completato lo scenario o risolto il problema. Il report deve essere consegnato insieme al codice prova (se presente) come prova del lavoro svolto.
RAID 1 fa mirroring su tutti i dischi: con 4 dischi da 1 TB la capacità è 1 TB e la tolleranza è 3 guasti. RAID 10 divide i dischi in coppie mirror e le mette in stripe: con 4 dischi da 1 TB la capacità è 2 TB ma si tollera 1 solo guasto per coppia. Non sono la stessa cosa. In RAID 10, se si guastano entrambi i dischi della stessa coppia, l'array è FAILED anche se tutti gli altri dischi funzionano perfettamente.
Molti studenti si precipitano a digitare comandi di recovery senza prima capire la situazione. Questo porta a operazioni errate. Il primo comando da eseguire è sempre cat /proc/mdstat, seguito da mdadm --detail /dev/md0. Solo dopo aver capito cosa è successo si può decidere l'azione corretta.
Se l'array è FAILED, il rebuild non è possibile. Il simulatore lo impedisce con un messaggio di errore. Un array FAILED significa che i dati sono persi e serve il restore da backup. Non ha senso cercare di ricostruire: la soluzione corretta è usare conclude restore da backup.
La sequenza corretta per il recovery è: (1) diagnosi → (2) fail → (3) remove → (4) add → (5) rebuild. Saltare passaggi porta a errori. Ad esempio, non è possibile rimuovere un disco che non è stato prima marcato FAILED. Non è possibile avviare il rebuild senza uno spare. Non è possibile montare il filesystem se l'array è FAILED.
La capacità utile non è mai uguale alla capacità totale dei dischi (tranne RAID 0). Con RAID 5 e 4 dischi da 1 TB si ottengono 3 TB (non 4 TB). Con RAID 6 e 6 dischi da 1 TB si ottengono 4 TB (non 6 TB). La capacità "persa" viene usata per la parità o il mirroring, ed è il prezzo da pagare per la ridondanza.
Un disco con molti errori CRC ma Reallocated_Sector_Ct = 0 non è necessariamente guasto: il problema potrebbe essere il cavo SATA. Prima di sostituire un disco, analizzare attentamente i dati SMART. Sostituire un disco sano è uno spreco e non risolve il problema se il cavo è difettoso.
DEGRADED non significa che i dati sono persi. L'array DEGRADED funziona ancora e i dati sono accessibili. È una situazione di rischio, non di disastro. FAILED invece significa che i dati non sono accessibili. Non confondere i due stati porta a reazioni sbagliate: panico inutile su un DEGRADED, oppure indifferenza pericolosa (non intervenire tempestivamente).
Se si aggiunge un disco con dimensione inferiore a quella dei dischi dell'array, il rebuild fallirà con l'errore "spare too small". Prima di aggiungere un disco con --add, verificare sempre la dimensione con fdisk -l o con il parametro --size nel comando --add.
Il simulatore RAID è uno strumento completo per imparare a gestire array RAID in modo pratico e sicuro. Attraverso l'uso del terminale simulato si acquisisce familiarità con i comandi reali di Linux e si sviluppa un metodo di lavoro ordinato e metodico.
I concetti fondamentali da ricordare al termine di questo percorso sono:
Utilizzando regolarmente questo simulatore si diventerà più rapidi e sicuri nella gestione di situazioni reali, sviluppando quelle competenze pratiche che sono fondamentali per chi lavora nell'amministrazione di sistemi.
— Fine della guida — Simulatore RAID v2.3 · Informatica di Sistema