Guida per Alunni

Simulatore RAID
Guida Completa all'Uso

Manuale passo passo per imparare a gestire array RAID con il terminale simulato

Informatica di Sistema · ITIS · Versione simulatore v2.3

📋 Indice

  1. Introduzione
  2. Concetti teorici fondamentali
  3. I livelli RAID nel simulatore
  4. L'interfaccia del simulatore
  5. Avvio del simulatore
  6. Il terminale simulato
  7. Tutti i comandi disponibili
  8. Come diagnosticare e risolvere un problema RAID
  9. Stati dei dischi e del volume
  10. La documentazione integrata
  11. Il report finale
  12. Errori comuni da evitare
  13. Conclusione

Introduzione

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.

A cosa serve questo strumento

Usare il simulatore permette di:

💡
Il simulatore funziona completamente offline. Basta aprire il file HTML con qualsiasi browser moderno. Tutto il codice e i dati sono contenuti in un unico file.

Concetti teorici fondamentali

Che cos'è un RAID

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.

Prestazioni, ridondanza e tolleranza ai guasti

Questi tre concetti sono fondamentali per capire le differenze tra i livelli RAID:

⚠️
Attenzione: il RAID non sostituisce il backup. Un array RAID protegge dai guasti hardware dei dischi, ma non protegge da cancellazioni accidentali, virus, incendi o altri tipi di perdita dei dati. Il backup rimane sempre necessario.

Striping

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.

Mirroring

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.

Parità

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.

RAID software vs RAID hardware

Il RAID può essere implementato in due modi:

Il simulatore riproduce il comportamento di un RAID software Linux gestito tramite mdadm.

I livelli RAID nel simulatore

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.

RAID 0 Striping puro

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.

ParametroValore
Dischi minimi2
Capacità utileN × dimensione disco
Fault tolerance0 (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.

RAID 0 non ha tolleranza ai guasti. Un guasto = dati persi. Serve sempre un backup separato.
RAID 1 Mirroring

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.

ParametroValore
Dischi minimi2
Capacità utile1 × dimensione disco (indipendentemente dal numero di dischi)
Fault toleranceN−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à.

RAID 1 con 2 dischi sopporta il guasto di un disco. Con più dischi la tolleranza aumenta, ma la capacità resta quella di un singolo disco.
RAID 5 Parità distribuita

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à.

ParametroValore
Dischi minimi3
Capacità utile(N−1) × dimensione disco
Fault tolerance1 (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.

⚠️
Con RAID 5 e dischi molto grandi, durante il rebuild un secondo guasto porta a FAILED. Per array con dischi da 4+ TB, considera RAID 6.
RAID 6 Doppia parità

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.

ParametroValore
Dischi minimi4
Capacità utile(N−2) × dimensione disco
Fault tolerance2 (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.

RAID 10 Stripe di mirror

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.

ParametroValore
Dischi minimi4 (numero pari)
Capacità utile(N/2) × dimensione disco
Fault tolerance1 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à.

In RAID 10, la perdita di entrambi i dischi di una coppia mirror causa FAILED dell'intero array. Questo è diverso da RAID 5/6 dove conta solo il numero totale di guasti.

Livelli RAID storici (non usabili nel simulatore)

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.

LivelloMin dischiCapacità utileFault toleranceUso tipico
RAID 02N × size0Cache, editing video
RAID 121 × sizeN−1OS, database piccoli
RAID 53(N−1) × size1NAS, file server
RAID 64(N−2) × size2Enterprise, cloud
RAID 104 (pari)(N/2) × size1 per coppiaDatabase ad alto I/O

L'interfaccia del simulatore

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.

Le tre schede principali

Il pulsante Teacher ON/OFF

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.

Sezione controlli (scheda LAB, colonna sinistra)

Nella parte alta della colonna sinistra si trovano i controlli per configurare l'array:

Pulsanti principali

Dashboard — Capacità utile e Fault tolerance

Subito sotto i controlli si trovano due riquadri statistici:

Stato del volume

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.

Telemetria (simulata)

Il riquadro Telemetria mostra quattro valori che cambiano in tempo reale in base allo stato dei dischi:

Timer e verifica

Il riquadro Verifica permette di impostare un timer per le verifiche a tempo:

Griglia dei dischi

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.

Scenario

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.

Parità RAID5 (visual)

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 simulato

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.

Scheda ESERCIZI

Nella scheda ESERCIZI si trovano due blocchi:

Avvio del simulatore: procedura base

1
Aprire il file nel browser Fare doppio clic sul file HTML. Si apre nel browser predefinito. Non è necessaria alcuna connessione a internet. La scheda attiva è LAB.
2
Scegliere il livello RAID Nel menu a tendina "Livello RAID" selezionare il livello desiderato: RAID 0, 1, 5, 6 o 10. La scelta influenza immediatamente la capacità utile e la fault tolerance visualizzate sotto.
3
Impostare il numero di dischi Nel campo "Numero dischi" inserire il numero di dischi desiderato (da 2 a 12). Il simulatore correggerà automaticamente il valore se è inferiore al minimo richiesto dal livello RAID scelto. Per RAID 10 il numero sarà arrotondato al pari.
4
Impostare la dimensione del disco Nel campo "Size disco (GB)" inserire la dimensione in gigabyte di ogni disco. Il valore predefinito è 1000 GB (1 TB). Tutti i dischi hanno la stessa dimensione.
5
Creare l'array Cliccare il pulsante Crea / Reset array. Il simulatore crea l'array con i parametri scelti. Nel terminale appare il messaggio "Array creato". Score e hints vengono azzerati.
6
Leggere i valori iniziali Osservare la dashboard: la capacità utile e la fault tolerance mostrano i valori calcolati. La spia deve essere verde e lo stato deve essere OK. La griglia mostra tutti i dischi con bordo verde e stato "OK".
7
Verificare nel terminale Digitare 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".

Come interpretare gli stati OK, DEGRADED, FAILED

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 simulato

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.

Come si usa

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ù.

Come leggere l'output

L'output del terminale usa colori diversi con significato preciso:

I chip in cima al terminale mostrano lo stato del filesystem (fs: nonefs: unmountedfs: mounted@/mnt) e lo stato dell'esercizio (exercise: on/off).

💡
Se si digita un comando sbagliato, il terminale risponde con un messaggio in rosso che suggerisce di digitare help. Non preoccuparsi: i comandi errati non producono effetti collaterali.

Tutti i comandi disponibili

Di seguito vengono descritti tutti i comandi realmente presenti nel simulatore, nel formato: cosa fa, quando si usa, esempio e risultato atteso.

helpUtilità
Cosa fa
Mostra l'elenco completo di tutti i comandi disponibili nel simulatore con una breve descrizione.
Quando usarlo
All'inizio di una sessione o quando non si ricorda la sintassi di un comando.
Esempio
help
Interpretazione
Non ha effetti sull'array. Serve solo come riferimento rapido.
clearUtilità
Cosa fa
Cancella tutto il contenuto del terminale, pulendo lo schermo.
Quando usarlo
Quando il terminale è diventato troppo affollato e si vuole ricominciare con uno schermo pulito.
scenario listScenari
Cosa fa
Mostra l'elenco di tutti gli scenari disponibili nel simulatore, con i loro nomi identificativi.
Risultato atteso
Elenco di nomi come: raid0_fail, raid1_onefail, raid5_1fail, raid5_2fail, raid6_2fail, raid10_pairfail, rebuild_interrupted, wrong_size_spare, crc_errors, overheat.
scenario load <nome>Scenari
Cosa fa
Carica uno scenario specifico: configura l'array con i dischi e il guasto preimpostato dallo scenario, mostra l'obiettivo nel riquadro Scenario.
Esempio
scenario load raid5_1fail
Risultato atteso
L'array viene ricreato con la configurazione dello scenario: alcuni dischi potrebbero essere già FAILED. Nel riquadro Scenario appare l'obiettivo da raggiungere.
Interpretazione
Leggere sempre l'obiettivo dello scenario prima di iniziare. Capire cosa si deve fare prima di agire.
cat /proc/mdstatDiagnosi
Cosa fa
Legge il file virtuale del kernel che contiene lo stato di tutti gli array RAID attivi. È il primo comando da eseguire in qualsiasi situazione.
Quando usarlo
Sempre come primo passo: all'inizio, dopo un guasto, durante il rebuild, per monitorare lo stato.
raidlab(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>
Cosa guardare
La parola dopo 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.
Errori possibili
Nessun errore: il comando funziona sempre. Se lo stato è FAILED, si vede chiaramente nella riga status.
mdadm --detail /dev/md0Diagnosi
Cosa fa
Mostra informazioni dettagliate sull'array: livello RAID, dimensione, numero di dischi, dischi guasti, dischi rimossi, spares presenti, stato di ogni singolo disco.
Quando usarlo
Dopo cat /proc/mdstat per avere un quadro più dettagliato, o per identificare esattamente quale disco è guasto.
Sintassi alternativa
Funziona anche come: mdadm /dev/md0 --detail
raidlab(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
Cosa guardare
La riga 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/sdXRecovery
Cosa fa
Marca manualmente un disco come FAILED all'interno dell'array. Simula il comando con cui si contrassegna un disco prima di rimuoverlo.
Quando usarlo
Quando si vuole rimuovere un disco che è ancora tecnicamente online ma si sa che è guasto. Nella pratica reale, mdadm può fare questo automaticamente; nel simulatore può essere necessario farlo a mano.
Esempio
mdadm --fail /dev/md0 /dev/sdb
Sintassi alternativa
mdadm /dev/md0 --fail /dev/sdb
Risultato atteso
Il disco passa a stato FAILED. Il messaggio nel terminale dice "sdb marcato FAILED". L'array passa a DEGRADED se era OK.
Errori possibili
Se il rebuild è in corso, il fail viene bloccato. Se il dispositivo non esiste nell'array, compare un messaggio di errore.
mdadm --remove /dev/md0 /dev/sdXRecovery
Cosa fa
Rimuove fisicamente il disco dall'array. Il disco passa allo stato REMOVED. L'array resta DEGRADED.
Quando usarlo
Dopo aver marcato il disco come FAILED, prima di aggiungere il disco sostitutivo.
Esempio
mdadm --remove /dev/md0 /dev/sdb
Sintassi alternativa
mdadm /dev/md0 --remove /dev/sdb
Risultato atteso
Il disco scompare dall'array attivo. Lo stato dell'array resta DEGRADED (non va a FAILED solo perché un disco è stato rimosso).
Errori possibili
Non è possibile rimuovere un disco che non è in stato FAILED o REMOVED. Il rebuild deve essere fermo.
mdadm --add /dev/md0 /dev/sdX [--size N]Recovery
Cosa fa
Aggiunge un nuovo disco all'array come spare. Il disco compare nella griglia con stato SPARE e può essere usato per il rebuild.
Quando usarlo
Dopo aver rimosso il disco guasto, per aggiungere il disco sostitutivo prima di avviare il rebuild.
Esempio
mdadm --add /dev/md0 /dev/sde
Esempio con dimensione
mdadm --add /dev/md0 /dev/sdz --size 500 (aggiunge un disco da 500 GB)
Risultato atteso
Il disco viene aggiunto come SPARE. Nel terminale: "aggiunto /dev/sde come SPARE (1000 GB)".
Errori possibili
Se il disco ha una dimensione inferiore a quella dei dischi dell'array, il rebuild successivo fallirà con errore "spare too small".
Interpretazione
Il nome del nuovo disco deve essere diverso da quelli già presenti. Si usa tipicamente /dev/sde, /dev/sdf, ecc. per i dischi sostitutivi.
mdadm --rebuild /dev/md0Recovery
Cosa fa
Avvia il processo di ricostruzione dell'array usando lo spare disponibile. Il disco spare diventa REBUILDING. I dati vengono ricostruiti progressivamente.
Quando usarlo
Dopo aver aggiunto uno spare con --add. Deve essere presente almeno uno spare e l'array non deve essere FAILED.
Esempio
mdadm --rebuild /dev/md0
Risultato atteso
Compare la barra di avanzamento sul disco in rebuild. Nel terminale si vedono messaggi con l'ETA stimato. Al termine il disco torna a stato OK e l'array a OK.
Errori possibili
Se non c'è uno spare, compare: "Nessuno SPARE presente. Usa: mdadm --add". Se l'array è FAILED, il rebuild non può partire.
Monitoraggio
Durante il rebuild si può usare cat /proc/mdstat per vedere la percentuale di avanzamento.
mdadm --stop-rebuild /dev/md0Recovery
Cosa fa
Interrompe un rebuild in corso. Il disco in rebuild torna a stato FAILED e il rebuild si azzera.
Quando usarlo
Per simulare un'interruzione controllata del rebuild (utile nello scenario rebuild_interrupted).
Errori possibili
Se non c'è un rebuild attivo, compare: "mdadm: nessun rebuild attivo".
lsblkDiagnosi
Cosa fa
Mostra l'elenco di tutti i dispositivi a blocchi (dischi) con le loro dimensioni, tipi e punti di mount. Permette di vedere la struttura dell'array e dei dischi fisici.
raidlab(OK)$ lsblk
NAME   SIZE TYPE MOUNTPOINT
sda  1000G disk
sdb  1000G disk (failed)
sdc  1000G disk
sdd  1000G disk
md0  3000G raid5 /mnt
fdisk -lDiagnosi
Cosa fa
Mostra informazioni sulla struttura e la dimensione dei dispositivi. Utile per verificare la dimensione esatta di un disco prima di usarlo come spare.
Interpretazione
Prima di aggiungere un disco con --add, usare fdisk -l per verificare che la dimensione sia sufficiente rispetto ai dischi dell'array.
blkidDiagnosi
Cosa fa
Mostra UUID e tipo di filesystem dei dispositivi. Funziona solo dopo aver creato un filesystem con mkfs.ext4.
Risultato se nessun filesystem
Restituisce "(nessun filesystem)".
dmesg | tailDiagnosi
Cosa fa
Mostra gli ultimi 14 messaggi del kernel. Questi messaggi registrano eventi come guasti di disco, CRC errors, temperature critiche, avvio e fine del rebuild.
Quando usarlo
Quando si sospetta un problema ma non si sa ancora quale disco è coinvolto. I messaggi dmesg spesso indicano il dispositivo specifico (es. "/dev/sdb: UDMA CRC error count increased").
raidlab(DEGRADED)$ dmesg | tail
[14:22:01] WARN: /dev/sdb: disk FAILED (scenario)
[14:22:01] INFO: md0: created RAID5 with 4 disks
Interpretazione
Le righe con WARN o ERROR indicano problemi. Il nome del dispositivo (es. /dev/sdb) indica quale disco è coinvolto.
Attenzione
Il comando dmesg da solo (senza | tail) non è riconosciuto. Va digitato esattamente dmesg | tail.
smartctl -a /dev/sdXDiagnosi
Cosa fa
Mostra i dati SMART del disco specificato: salute generale, temperatura, settori ricollocati, settori in attesa, errori CRC. Permette di capire se il problema è fisico (disco guasto) o di cablaggio (solo CRC errors).
Esempio
smartctl -a /dev/sdb
raidlab(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
Valori chiave da guardare
  • Reallocated_Sector_Ct > 0: settori ricollocati, segnale di disco che sta cedendo.
  • UDMA_CRC_Error_Count alto + Reallocated = 0: probabile problema di cavo SATA, non del disco.
  • Temperature_Celsius > 55°C: temperatura elevata, rischio guasto imminente.
Sostituzione X
Al posto di X indicare la lettera del disco: sda, sdb, sdc, ecc. Funziona anche per i dischi spare.
df -hFilesystem
Cosa fa
Mostra lo spazio disco disponibile, usato e totale, in formato leggibile. Funziona solo se il filesystem è stato creato e montato.
Errori possibili
Se il filesystem non è stato creato: "df: filesystem non creato". Se non è montato: "df: filesystem non montato".
mkfs.ext4 /dev/md0Filesystem
Cosa fa
Crea un filesystem ext4 sull'array RAID. Operazione distruttiva: cancella tutti i file esistenti.
Prerequisiti
L'array deve essere in stato OK o DEGRADED (non FAILED). Va eseguito una sola volta, dopo aver creato l'array per la prima volta.
Errori possibili
Se l'array è FAILED: "mkfs.ext4: I/O error: volume FAILED".
mount /dev/md0 /mntFilesystem
Cosa fa
Monta il filesystem dell'array nella directory /mnt. Dopo questo comando i file sono accessibili tramite /mnt.
Prerequisiti
Il filesystem deve essere stato creato con mkfs.ext4. L'array non deve essere FAILED.
Errori possibili
"mount: nessun filesystem" se manca mkfs.ext4. "mount: I/O error" se l'array è FAILED.
umount /mntFilesystem
Cosa fa
Smonta il filesystem. Dopo lo smount i file non sono più accessibili tramite /mnt. Funziona anche come unmount /mnt.
ls /mnt · touch /mnt/file · echo "testo" > /mnt/file · cat /mnt/file · rm /mnt/fileFilesystem
Cosa fanno
Operazioni standard su file e directory nel filesystem montato. Funzionano solo se il filesystem è montato e l'array non è FAILED.
Errori possibili
Tutti i comandi su file restituiscono "I/O error" se l'array è FAILED. I percorsi devono essere sotto /mnt.
reportUtilità
Cosa fa
Mostra nel terminale un report testuale completo della sessione: configurazione array, stato dischi, punteggio, hints usati, ultimi messaggi dmesg, cronologia delle azioni.
Quando usarlo
Prima di consegnare il lavoro o per rileggere tutto quello che è successo durante la sessione.
exportUtilità
Cosa fa
Scarica il report come file di testo (.txt) sul computer. Il file viene salvato automaticamente nella cartella di download del browser.
Quando usarlo
Al termine della sessione per consegnare il report al docente. Equivalente al pulsante "⬇ Scarica report" nella dashboard.
hintSupporto
Cosa fa
Fornisce un suggerimento contestuale sullo stato attuale dell'array. Il suggerimento cambia in base allo stato: FAILED, DEGRADED, o OK.
Costo
Ogni uso del hint costa 3 punti dallo score. Il numero di hints usati viene registrato nel report.
Interpretazione
Usare hint solo se davvero bloccati. In una verifica, troppi hint riducono significativamente il punteggio finale.
powerfailSimulazione
Cosa fa
Simula un'interruzione di corrente improvvisa. Se un rebuild è in corso, viene interrotto. Il disco in rebuild torna a stato FAILED.
Quando usarlo
Nello scenario rebuild_interrupted, per simulare il blackout che interrompe il rebuild. Poi si deve riavviare il rebuild.
Errori possibili
Se non c'è un rebuild attivo, compare: "POWER FAIL: nessun rebuild attivo".
conclude <testo>Scenari
Cosa fa
Registra una conclusione testuale per lo scenario corrente. Utilizzato negli scenari dove i dati sono persi (RAID0 fail, RAID5 2fail, RAID10 pairfail) e l'azione corretta è diagnosticare e concludere che serve un restore da backup.
Esempio
conclude restore da backup
Quando usarlo
Quando lo scenario richiede di riconoscere che l'array è FAILED e non recuperabile tramite RAID. Anche per scenari di errori non fatali come crc_errors e overheat.
solutionSolo Teacher
Cosa fa
Mostra la sequenza di comandi corretta per risolvere lo scenario corrente.
Disponibilità
Disponibile solo quando la modalità Teacher è attivata (pulsante Teacher: ON). In modalità normale per gli studenti, il comando restituisce un errore.

Come diagnosticare e risolvere un problema RAID

Questa 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.

1
Primo controllo — leggere il prompt Guardare il prompt del terminale: raidlab(DEGRADED)$ o raidlab(FAILED)$ indica immediatamente che c'è un problema. Guardare anche la spia colorata nella dashboard.
2
Verificare lo stato con cat /proc/mdstat
cat /proc/mdstat
Leggere 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.
3
Ottenere i dettagli con mdadm --detail
mdadm --detail /dev/md0
Questo comando mostra esattamente quale disco (quale /dev/sdX) è guasto, il numero esatto di dischi FAILED e REMOVED, e il numero di spares disponibili.
4
Leggere i messaggi del kernel
dmesg | tail
I 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".
5
Analizzare il disco guasto con smartctl
smartctl -a /dev/sdb
(sostituire sdb con il disco identificato al passo precedente). Guardare:
  • Health: FAILED! → disco fisicamente guasto, va sostituito.
  • UDMA_CRC_Error_Count alto + Reallocated = 0 → probabile problema di cavo, non del disco.
  • Temperature > 55°C → overheat, rischio guasto imminente.
6
Decidere l'azione in base allo stato Se l'array è FAILED (troppi guasti): non è possibile il rebuild RAID. L'unica soluzione è il restore da backup. Usare conclude restore da backup. Se l'array è DEGRADED (guasti entro la tolleranza): procedere con la sostituzione del disco guasto.
7
Rimuovere il disco guasto
mdadm --remove /dev/md0 /dev/sdb
Se il disco non è già marcato FAILED, marcarlo prima con mdadm --fail /dev/md0 /dev/sdb, poi rimuoverlo.
8
Aggiungere il disco sostitutivo
mdadm --add /dev/md0 /dev/sde
Il nome del nuovo disco deve essere diverso da quelli già presenti. Il disco viene aggiunto come SPARE.
9
Avviare il rebuild
mdadm --rebuild /dev/md0
Il rebuild inizia. Il disco spare diventa REBUILDING. Si vede la barra di avanzamento nella griglia.
10
Monitorare il rebuild
cat /proc/mdstat
Eseguire questo comando periodicamente per monitorare la percentuale di avanzamento. Si vede la riga "recovery = X%" con il tempo stimato.
11
Verifica finale Al termine del rebuild, l'array torna a stato OK. Verificare con cat /proc/mdstat che lo stato sia tornato OK e che tutte le lettere tra parentesi siano "U". Nel riquadro scenario dovrebbe comparire "✅ RISOLTO".

Stati dei dischi e del volume

Stati dei singoli dischi

StatoSignificatoCosa fare
OKDisco funzionante normalmente. Tutti i parametri SMART sono nella norma.Nessuna azione necessaria.
FAILEDDisco guasto. Non risponde correttamente o ha troppi settori danneggiati. I dati sul disco non sono più affidabili.Rimuovere con --remove, poi sostituire con --add.
REMOVEDDisco rimosso dall'array tramite --remove. Fisicamente assente dall'array ma non ancora sostituito. L'array resta DEGRADED.Aggiungere un disco sostitutivo con --add.
SPAREDisco aggiunto con --add ma non ancora usato per il rebuild. Pronto per essere utilizzato nella ricostruzione.Avviare il rebuild con --rebuild.
REBUILDINGDisco 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.
SLOWDisco che risponde lentamente. Degrada le prestazioni dell'intero array. Non è ancora guasto, ma è a rischio.Monitorare con smartctl. Pianificare la sostituzione.
OVERHEATTemperatura 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.
CRCErrori 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.

Stati del volume (array)

StatoSignificatoAccesso ai datiAzione richiesta
OKTutti i dischi funzionanti, ridondanza integra.Sì, normale.Nessuna.
DEGRADEDUno 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.
FAILEDSuperata la tolleranza ai guasti. I dati non sono recuperabili tramite RAID.No.Restore da backup. Non è possibile il rebuild RAID.
Quando un array è FAILED, nel simulatore tutti i comandi di filesystem (mount, ls, cat, touch, ecc.) restituiscono un errore I/O. L'unica azione possibile è riconoscere la situazione e concludere che serve un restore da backup.

La documentazione integrata

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.).

💡
La documentazione integrata è sempre disponibile durante il lavoro. Se si dimentica la sintassi di un comando o il significato di un errore SMART, si può consultare la documentazione senza uscire dal simulatore.

Il report finale

Il report è un documento testuale che riassume l'intera sessione di lavoro. È uno strumento fondamentale per la valutazione in laboratorio.

Come generare il report

Ci sono due modi equivalenti:

Cosa contiene il report

Quando va generato

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.

📋
La cronologia delle azioni nel report mostra esattamente l'ordine in cui sono stati digitati i comandi. Questo permette al docente di verificare se la procedura seguita è stata corretta.

Errori comuni da evitare

1. Confondere RAID 1 con RAID 10

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.

2. Non leggere mdstat prima di agire

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.

3. Tentare il rebuild su un array FAILED

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.

4. Usare i comandi fuori ordine

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.

5. Interpretare male la capacità utile

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.

6. Non distinguere CRC errors da guasto fisico

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.

7. Confondere DEGRADED con FAILED

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).

8. Aggiungere uno spare troppo piccolo

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.

Conclusione

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.

🎯
Consiglio finale: non imparare solo i comandi a memoria. Capire il perché di ogni passaggio è molto più utile. Perché si legge prima mdstat? Perché si rimuove il disco prima di aggiungerne uno nuovo? Ragionare sul metodo, non solo eseguire meccanicamente.

— Fine della guida — Simulatore RAID v2.3 · Informatica di Sistema