commit 51ade4d7b88ca34424b2b959a4a4a6be56167d5f Author: Andrea Fiorencis Date: Thu Mar 19 09:11:34 2026 +0100 Pagine base (versione Di Campi) diff --git a/guida.html b/guida.html new file mode 100644 index 0000000..e44e347 --- /dev/null +++ b/guida.html @@ -0,0 +1,1267 @@ + + + + + +Guida al Simulatore RAID — Per Alunni + + + + + +
+
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. +
  3. Concetti teorici fondamentali
  4. +
  5. I livelli RAID nel simulatore
  6. +
  7. L'interfaccia del simulatore
  8. +
  9. Avvio del simulatore
  10. +
  11. Il terminale simulato
  12. +
  13. Tutti i comandi disponibili
  14. +
  15. Come diagnosticare e risolvere un problema RAID
  16. +
  17. Stati dei dischi e del volume
  18. +
  19. La documentazione integrata
  20. +
  21. Il report finale
  22. +
  23. Errori comuni da evitare
  24. +
  25. Conclusione
  26. +
+
+ + + +

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.
+
    +
  • ls /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.
  • +
+
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

+ + + diff --git a/simulatore.html b/simulatore.html new file mode 100644 index 0000000..babad7e --- /dev/null +++ b/simulatore.html @@ -0,0 +1,3487 @@ + + + + + + Simulatore Raid + + + +
+
+
+

Simulatore Raid

+
+
+
+
+ + + + +
+
+ Offline · Scenari · Score · Report +
+
+
+ + +
+
+
+
+

🧪 Storage & Dashboard

+
Array /dev/md0
+
+
+
+ + + +
+ +
+ + + + +
+ +
+
+
Capacità utile
+
+
+
+
+
Fault tolerance
+
+
+
+
+ +
+
STATUS: —
+
+
+ +
+
+

📈 Telemetria (sim)

+
Temperature avg
+
IOPS (sim)
+
CRC errors
+
Reallocated
+
Cambia in base ai guasti (slow/overheat/crc/fail) e durante il rebuild.
+
+
+

⏱ Verifica

+
Time leftOFF
+
Score0
+
Hints used0
+
+ + + + +
+
+
+ +
+ +
+
🎯 Scenario
+
+ Nessuno scenario caricato. Usa scenario list o Esercizio random. +
+
+ + + + + + + + +
+
+ +
+ Regola didattica: lo studente deve lavorare col terminale. Il click sui dischi è disabilitato, salvo Teacher ON. +

+ Prova con: help · scenario list · cat /proc/mdstat · mdadm --detail /dev/md0 · + smartctl -a /dev/sdX · dmesg | tail · mdadm --remove/--add/--rebuild. +
+
+
+ +
+
+

💻 Terminale Linux (simulato)

+
Mode LAB
+
+
+
+
+
+
+ raidlab@dc1 + fs: none + exercise: off +
+
tip: help
+
+
+
+
raidlab(OK)$
+ + +
+
+ +
+
🧩 Parità RAID5 (visual)
+
Disponibile quando RAID5 è selezionato.
+
+ +
+ Extra: hint (penalità) · report / export · + powerfail (simula blackout, interrompe rebuild) · solution (solo Teacher). +
+
+
+
+
+ + +
+
+
+

🎓 Esercizi per studenti

+
Codice
+
+
+
+
+

Genera prova (unica)

+
+ Clicca "Genera prova": otterrai un codice prova e un scenario. + Lo studente deve consegnare il codice + il report (comando export o tasto Export report). +
+
+ + +
+
+ Tip: puoi impostare il timer nel LAB (5/10 min) e far fare una verifica "a tempo". +
+
+ +
+

Dettagli prova

+
Scenario
+
Seed
+
Obiettivo
+
+
+
Consegna consigliata
+
+ 1) Codice prova
+ 2) Report (Export report o comando export)
+ 3) Screenshot del terminale (opzionale) +
+
+
+
+ +
+ Se vuoi farli lavorare "alla cieca", lascia Teacher OFF e non dare hint. + Se vuoi guidarli, abilita hint oppure usa DOCUMENTAZIONE. +
+
+
+
+ + +
+
+
+

📚 Documentazione integrata (comandi & recovery)

+
Focus  mdadm + diagnosi + rebuild
+
+
+ + +
+
Guida rapida di laboratorio
+
Guida completa RAID
+
Procedure complete
+
+ + +
+
+
💡
+
+ Suggerimento di laboratorio
+ Quando si sospetta un problema RAID, il primo comando da eseguire è quasi sempre + cat /proc/mdstat. Questo permette di capire immediatamente se l'array è + clean, degraded oppure in fase di + rebuild. +
+
+ +

+ Quando si lavora con sistemi RAID su Linux, la prima abilità che deve sviluppare un amministratore di sistema è la capacità di + capire rapidamente lo stato dell'array e individuare eventuali problemi. + Questa guida rapida descrive il flusso logico che normalmente si segue durante una fase di diagnosi. +

+ +
+
Esempio RAID10
+
+ Mirror 1:   A   B
+               A   B

+ Mirror 2:   C   D
+               C   D

+ Prima i dischi sono organizzati in mirror, poi i dati sono distribuiti tra le coppie. +
+
+ +
+
1 Controllare lo stato dell'array RAID
+
cat /proc/mdstat
+

+ Questo comando legge il file virtuale /proc/mdstat, che viene generato dal kernel Linux e contiene informazioni sugli array RAID software gestiti dal sistema. +

+

Gli stati più comuni che potresti vedere sono:

+
    +
  • clean – l'array funziona correttamente
  • +
  • degraded – uno dei dischi non è più operativo
  • +
  • recovery / rebuild – il sistema sta ricostruendo i dati
  • +
+
+ +
+ +
+
2 Analizzare i dettagli dell'array
+
mdadm --detail /dev/md0
+

+ Il comando mdadm è lo strumento principale utilizzato in Linux per gestire RAID software. Con l'opzione --detail è possibile visualizzare una descrizione completa dell'array. +

+

+ Questo passaggio serve soprattutto per identificare quale disco ha causato il problema e verificare se l'array è ancora in grado di garantire ridondanza. +

+
+ +
+ +
+
3 Visualizzare la struttura dei dischi
+
lsblk
+

+ Il comando lsblk mostra la struttura dei dispositivi di storage presenti nel sistema. Guardando questo output è possibile vedere quali dischi partecipano all'array e verificare se qualche dispositivo risulta mancante. +

+
+ +
+ +
+
4 Controllare i messaggi del kernel
+
dmesg | tail
+

+ Il comando dmesg permette di leggere i messaggi prodotti dal kernel Linux. Questi messaggi spesso contengono informazioni preziose su errori hardware, problemi di lettura o malfunzionamenti dei dischi. +

+
+ +
+ +
+
5 Verificare la salute del disco
+
smartctl -a /dev/sdX
+

+ Il comando smartctl utilizza il sistema SMART integrato nei dischi moderni per raccogliere statistiche interne e individuare segnali di degrado prima che il dispositivo smetta completamente di funzionare. +

+
+
+ + + + +
+ + +
+

📦 Cos'è un RAID?

+

+ RAID sta per Redundant Array of Independent Disks (in origine "Inexpensive"). È una tecnologia che combina + più dischi fisici in un unico sistema logico, gestito dal sistema operativo o da un controller hardware dedicato. +

+

+ Lo scopo può essere uno o più di questi obiettivi: + aumentare le prestazioni distribuendo le operazioni su più dischi in parallelo, + garantire la ridondanza dei dati (fault tolerance) così che il guasto di uno o più dischi non provochi perdita di informazioni, + oppure entrambe le cose insieme. +

+

+ Attenzione: RAID non è un backup. Protegge da guasti hardware dei dischi, non da cancellazioni accidentali, ransomware o disastri fisici che coinvolgono l'intero server. Un sistema di backup separato è sempre necessario. +

+
+ + +
+ 🧠 Concetti fondamentali +
+ +
+ + +
+

⚡ Striping

+

I dati vengono suddivisi in blocchi e scritti su più dischi in parallelo. Ogni disco riceve una porzione differente del dato ("stripe").

+

Vantaggio: velocità di lettura e scrittura aumentata, poiché più dischi lavorano contemporaneamente.

+

Rischio: se un disco si guasta, tutti i dati dello stripe sono irrecuperabili (nessuna ridondanza da solo).

+
+
Esempio — 3 dischi in striping
+
+
sda
sdb
sdc
+
+
+
+
S1
+
A1
+
A2
+
A3
+
+
+
S2
+
B1
+
B2
+
B3
+
+
+
S3
+
C1
+
C2
+
C3
+
+
+
+
+ + +
+

🪞 Mirroring

+

I dati vengono copiati in modo identico su due o più dischi. Ogni scrittura aggiorna tutti i dischi mirror in modo sincrono.

+

Vantaggio: alta ridondanza — finché almeno un disco del mirror funziona, i dati sono accessibili.

+

Svantaggio: la capacità utile è dimezzata (o ridotta al numero di copie), e le scritture sono più lente.

+
+
Esempio — mirror su 2 dischi
+
+
sda
sdb (copia)
+
+
+
+
S1
+
A
+
A
+
+
+
S2
+
B
+
B
+
+
+
S3
+
C
+
C
+
+
+
+
+ + +
+

🔢 Parità (XOR)

+

Un blocco speciale di parità viene calcolato tramite l'operazione logica XOR dei blocchi dati. Non è una copia, ma un'informazione matematica che permette di ricostruire un blocco mancante.

+

Vantaggio: ridondanza con meno spreco di spazio rispetto al mirroring.

+

Esempio: A XOR B = P. Se perdo A, lo ricostruisco: B XOR P = A.

+
+
Parità distribuita — stripe con P
+
+
sda
sdb
sdc
sdd
+
+
+
+
S1
+
D1
+
D2
+
D3
+
P
+
+
+
S2
+
D4
+
D5
+
P
+
D6
+
+
+
S3
+
P
+
D7
+
D8
+
D9
+
+
+
+
+
+ +
+ + +
+ 📊 Livelli RAID +
+ + +
+
Dati
+
Parità P
+
Parità Q (doppia)
+
Copia mirror
+
Disco guasto / perso
+
+ + +
+
+

RAID 0

+ Striping puro + No ridondanza +
+
+
+

I dati vengono distribuiti equamente su tutti i dischi senza alcuna informazione di parità o copia. Non esiste ridondanza: il guasto di qualsiasi disco causa la perdita totale dell'array.

+

Viene usato quando si vuole la massima velocità e la perdita dei dati è accettabile (es. cache temporanee, rendering, editing video su workstation con backup separato).

+
+ 📀 Min dischi: 2 + 💾 Capacità: N × size + 🛡 Fault tolerance: 0 + ⚡ Lettura: ottima + ✍ Scrittura: ottima +
+
+
+
✅ Pro
+
    +
  • Massime prestazioni in lettura e scrittura
  • +
  • Usa il 100% della capacità dei dischi
  • +
  • Semplicità di configurazione
  • +
+
+
+
❌ Contro
+
    +
  • Zero ridondanza
  • +
  • 1 guasto = dati irrecuperabili
  • +
  • Non adatto a produzione critica
  • +
+
+
+
+ 🎬 Editing video + 🎮 Gaming temporaneo + 🧪 Ambienti di test +
+
+
+
RAID 0 — 4 dischi
+
+
sda
sdb
sdc
sdd
+
+
+
S1
+
A1
A2
+
A3
A4
+
+
S2
+
B1
B2
+
B3
B4
+
+
S3
+
C1
C2
+
C3
C4
+
+
+
+ ⚠️ Se sda si guasta → stripe A1, B1, C1 persi → array FAILED +
+
+
+
+ +
+ + +
+
+

RAID 1

+ Mirroring puro + Alta ridondanza +
+
+
+

Ogni dato viene scritto in modo identico su tutti i dischi dell'array. Se un disco si guasta, i dati sono ancora disponibili su quello rimanente. La lettura può essere parallelizzata su più dischi aumentando le performance in read.

+

È il livello più semplice e affidabile per proteggere i dati. Il costo è che si sfrutta solo la capacità di un disco, indipendentemente da quanti dischi sono nell'array.

+
+ 📀 Min dischi: 2 + 💾 Capacità: 1 × size + 🛡 Fault tolerance: N-1 dischi + ⚡ Lettura: buona + ✍ Scrittura: normale +
+
+
+
✅ Pro
+
    +
  • Massima ridondanza
  • +
  • Recovery immediato da 1 guasto
  • +
  • Lettura veloce (multi-disk)
  • +
+
+
+
❌ Contro
+
    +
  • Capacità utile = 1 solo disco
  • +
  • Scrittura rallentata dal sync
  • +
  • Costoso per grandi capacità
  • +
+
+
+
+ 🗄 Database critici + 💻 OS di boot + 🏦 Dati finanziari +
+
+
+
RAID 1 — 2 dischi
+
+
sda (originale)
sdb (copia)
+
+
+
S1
+
A
A
+
+
S2
+
B
B
+
+
S3
+
C
C
+
+
S4
+
D
D
+
+
+
+ ✅ sda guasto → sdb ancora operativo → dati accessibili +
+
+
+
+ +
+ + +
+
+

RAID 2 ⚠ Obsoleto

+ Hamming ECC +
+
+

RAID 2 utilizza la codifica di correzione degli errori di Hamming (ECC) distribuita su dischi dedicati. I dati vengono distribuiti bit per bit (bit-level striping), e i bit di parità ECC vengono scritti su dischi separati dedicati.

+

Questo livello era studiato per rilevare e correggere errori sui singoli bit direttamente a livello hardware, prima che i dischi moderni integrassero la correzione ECC internamente. Oggi non viene più utilizzato in pratica: l'ECC è gestita dall'elettronica interna di ogni disco, rendendo RAID 2 inutilmente complesso e costoso.

+
+
🏛
+
Contesto storico: RAID 2 era usato nei mainframe degli anni '80-'90 prima che i dischi IDE/SCSI integrassero la correzione errori. Richiedeva da 3 a 10+ dischi solo per la parità ECC.
+
+
+
+ +
+ + +
+
+

RAID 3 ⚠ Obsoleto

+ Parità su disco dedicato +
+
+

RAID 3 usa lo striping a livello di byte (byte-level striping) con un disco dedicato esclusivamente alla parità. Tutti i dati sono distribuiti byte per byte tra i dischi dati, e la parità corrispondente viene sempre scritta sullo stesso disco fisso.

+

Il problema principale è che il disco di parità diventa un collo di bottiglia: ogni singola operazione di lettura/scrittura richiede un accesso a quel disco, che si deteriora prima degli altri. RAID 3 è stato largamente sostituito da RAID 5, che distribuisce la parità su tutti i dischi.

+
+ 📀 Min dischi: 3 + 💾 Capacità: (N-1) × size + 🛡 Fault tolerance: 1 disco +
+
+
⚙️
+
Differenza con RAID 5: in RAID 3 la parità è sempre sullo stesso disco fisso. In RAID 5 la parità ruota tra tutti i dischi (distributed parity), eliminando il collo di bottiglia.
+
+
+
+ +
+ + +
+
+

RAID 4 Raro

+ Block-level + parità dedicata +
+
+

Simile a RAID 3 ma con striping a livello di blocco anziché byte. I dati vengono distribuiti a blocchi sui dischi dati, con un disco fisso dedicato alla parità. Permette letture parallele di blocchi indipendenti, ma le scritture soffrono ancora del collo di bottiglia del disco di parità.

+

RAID 4 è rimasto in uso in alcune implementazioni di storage specializzato (es. vecchi NetApp WAFL) ma oggi è quasi completamente soppiantato da RAID 5.

+
+ 📀 Min dischi: 3 + 💾 Capacità: (N-1) × size + 🛡 Fault tolerance: 1 disco +
+
+
+ +
+ + +
+
+

RAID 5

+ Parità distribuita + 1 guasto tollerato +
+
+
+

RAID 5 distribuisce i dati e la parità su tutti i dischi dell'array, eliminando il collo di bottiglia di un disco di parità dedicato. Per ogni stripe, la parità (calcolata con XOR) ruota su un disco diverso.

+

Con un disco guasto, tutti i dati possono essere ricostruiti matematicamente dagli altri. Questo processo si chiama rebuild e può richiedere ore o giorni per array di grandi dimensioni.

+

Attenzione: durante il rebuild l'array è in stato DEGRADED e un secondo guasto causerebbe la perdita totale dei dati. Per questo motivo si consiglia sempre un disco spare hot-standby.

+
+ 📀 Min dischi: 3 + 💾 Capacità: (N-1) × size + 🛡 Fault tolerance: 1 disco + ⚡ Lettura: ottima + ✍ Scrittura: buona +
+
+
+
✅ Pro
+
    +
  • Buon equilibrio capacità/ridondanza
  • +
  • Lettura molto veloce
  • +
  • Parità distribuita (no bottleneck)
  • +
+
+
+
❌ Contro
+
    +
  • Solo 1 guasto tollerato
  • +
  • Rebuild lento su dischi grandi
  • +
  • Scrittura random più lenta (write penalty)
  • +
+
+
+
+ 🏢 File server aziendali + 🖥 NAS domestici + 📁 Storage archivi +
+
+
+
RAID 5 — 4 dischi (parità ruotante)
+
+
sda
sdb
sdc
sdd
+
+
+
S1
+
D1
D2
+
D3
P
+
+
S2
+
D4
D5
+
P
D6
+
+
S3
+
D7
P
+
D8
D9
+
+
S4
+
P
D10
+
D11
D12
+
+
+
+ ⚠️ sdb guasto → DEGRADED, rebuild necessario. 2° guasto = FAILED. +
+
+
+
+ +
+ + +
+
+

RAID 6

+ Doppia parità + 2 guasti tollerati +
+
+
+

RAID 6 estende RAID 5 aggiungendo un secondo blocco di parità indipendente per ogni stripe (parità P e parità Q, calcolate con algoritmi diversi — es. Reed-Solomon). Questo permette di tollerare il guasto simultaneo di due dischi qualsiasi.

+

È particolarmente indicato per array con molti dischi di grande capacità, dove il rischio di un secondo guasto durante il rebuild (che dura ore o giorni) è statisticamente significativo.

+
+ 📀 Min dischi: 4 + 💾 Capacità: (N-2) × size + 🛡 Fault tolerance: 2 dischi + ⚡ Lettura: ottima + ✍ Scrittura: più lenta di RAID5 +
+
+
+
✅ Pro
+
    +
  • Sopravvive a 2 guasti simultanei
  • +
  • Ideale per array grandi
  • +
  • Standard nei NAS enterprise
  • +
+
+
+
❌ Contro
+
    +
  • Perdi 2 dischi di capacità
  • +
  • Scrittura più lenta (doppia parità)
  • +
  • Più CPU/controller necessario
  • +
+
+
+
+ 🏭 Storage enterprise + ☁️ Cloud storage + 📊 Data center + 🗃 Archivi a lungo termine +
+
+
+
RAID 6 — 5 dischi (P e Q ruotanti)
+
+
sda
sdb
sdc
sdd
sde
+
+
+
S1
+
D1
D2
+
D3
P
+
Q
+
+
S2
+
D4
D5
+
P
Q
+
D6
+
+
S3
+
D7
P
+
Q
D8
+
D9
+
+
+
+ ✅ 2 dischi qualsiasi guasti → DEGRADED ma operativo → rebuild possibile +
+
+
+
+ +
+ + +
+
+

RAID 10

+ Stripe di mirror + 1 per coppia +
+
+
+

RAID 10 (o RAID 1+0) combina mirroring e striping. I dischi vengono prima organizzati in coppie mirror, poi le coppie vengono messe in stripe. Il risultato è un array ad altissime prestazioni con ridondanza garantita per ogni coppia.

+

Un guasto è tollerato per ciascuna coppia mirror (fino a N/2 dischi, ma mai entrambi della stessa coppia). Se entrambi i dischi di una coppia mirror si guastano, l'array è FAILED.

+

È il livello preferito per database ad alto I/O e applicazioni che richiedono sia velocità che affidabilità, quando il costo di avere metà capacità non è un problema.

+
+ 📀 Min dischi: 4 (pari) + 💾 Capacità: (N/2) × size + 🛡 Fault tolerance: 1 per coppia + ⚡ Lettura: eccellente + ✍ Scrittura: eccellente +
+
+
+
✅ Pro
+
    +
  • Prestazioni top in lettura e scrittura
  • +
  • Rebuild più rapido (solo mirror)
  • +
  • Ideale per database SQL
  • +
+
+
+
❌ Contro
+
    +
  • Usa solo il 50% della capacità
  • +
  • Costoso (servono 4+ dischi)
  • +
  • Mirror pair perso = FAILED
  • +
+
+
+
+ 🗄 MySQL / PostgreSQL + 🚀 High-performance apps + 💼 Virtualizzazione + 🏥 Sistemi critici H24 +
+
+
+
RAID 10 — 4 dischi (2 mirror + stripe)
+
+
+
Mirror 1
+
+
sda
sdb
+
+
+
S1
+
A
A
+
+
S2
+
B
B
+
+
S3
+
C
C
+
+
+
+
+
Mirror 2
+
+
sdc
sdd
+
+
+
S1
+
D
D
+
+
S2
+
E
E
+
+
S3
+
F
F
+
+
+
+
+
+ Stripe: Mirror1 + Mirror2 in parallelo.
+ ✅ sda guasto → sdb tiene il mirror
+ ❌ sda+sdb guasti → mirror 1 perso → FAILED +
+
+
+
+ +
+ + +
+ 📋 Confronto tra i livelli RAID +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LivelloMin dischiCapacità utileFault toleranceLetturaScritturaUso tipicoNote
RAID 02N × size0 dischiEccellenteEccellenteCache, editingNo backup = disastro
RAID 121 × sizeN-1 dischiBuonaNormaleOS, databaseCostoso per TB
RAID 23+Variabile1 discoMediaMediaObsoletoSolo teorico
RAID 33(N-1) × size1 discoBuona seq.Bottleneck PObsoletoParità fissa
RAID 43(N-1) × size1 discoBuonaBottleneck PRaroSostituito da RAID5
RAID 53(N-1) × size1 discoEccellenteBuonaNAS, file serverStandard di fatto
RAID 64(N-2) × size2 dischiEccellentePiù lenta di R5Enterprise, cloudDoppia parità P+Q
RAID 104 (pari)(N/2) × size1 per coppiaEccellenteEccellenteDB, virtualiz.Mirror pair perso = FAILED
+
+ +
+
🎯
+
+ Come scegliere il livello giusto?
+ Hai bisogno di massima velocità e hai un backup? → RAID 0.
+ Hai 2 dischi e vuoi semplice ridondanza? → RAID 1.
+ Hai 3-6 dischi e vuoi il bilanciamento tipico per un NAS? → RAID 5.
+ Hai array grandi (8+ dischi) e temi il rebuild lungo? → RAID 6.
+ Hai budget, servono prestazioni max E ridondanza per un database critico? → RAID 10. +
+
+ + +
+
+
Errori non fatali — CRC / Overheat / Slow
+
+
Tipi di errore e azioni consigliate
+
+
+ CRC errors — Spesso indica un problema di cavo o connessione SATA, non necessariamente il disco. Prima azione: sostituire il cavo e verificare il connettore. +
+
+ Overheat — Temperatura critica: rischio guasto imminente. Migliorare il raffreddamento, pianificare sostituzione preventiva. +
+
+ Slow — Disco lento: degrada le prestazioni dell'intero array. Monitorare con smartctl e pianificare sostituzione. +
+
+
+
+ +
+ +
+
Filesystem su RAID (simulato)
+
mkfs.ext4 /dev/md0
+
mount /dev/md0 /mnt
+

Una volta montato: ls /mnt, touch /mnt/file, echo "testo" > /mnt/file, cat /mnt/file, rm /mnt/file, df -h.

+
+ +
+ + + +
+ + +
+ + + + +
+ + + + +
+ +
+

🔍 5.1 Diagnosi RAID

+

La diagnosi è il primo passo obbligatorio davanti a qualsiasi problema. Prima di toccare qualsiasi cosa, bisogna capire cos'è successo, quale disco è coinvolto e qual è lo stato attuale dell'array. Usare sempre i comandi in questo ordine.

+
+ + +
+
+
+ 01 + cat /proc/mdstat +
+ Diagnosi +
+
+
+
+ +

Legge il file virtuale /proc/mdstat generato in tempo reale dal kernel Linux. Contiene lo stato di tutti gli array RAID software attivi nel sistema. È il primo comando da eseguire in qualsiasi situazione.

+ +

Sempre come primo passo: all'avvio del turno, dopo un allarme, dopo una modifica all'array, durante il rebuild per monitorare l'avanzamento.

+ +
    +
  • Lo stato dopo status=: OK, DEGRADED, FAILED
  • +
  • I tag tra parentesi quadre: [U] = disco attivo, [_] = disco mancante, [R] = disco in rebuild
  • +
  • La riga recovery = con la percentuale durante il rebuild
  • +
+
+
+ +
+md0 : active raid5 sda[U] sdb[U] sdc[U] sdd[U] + status=OK blocks=3000GB [ UUUU ] +
+ +
+md0 : active raid5 sda[U] sdb[F] sdc[U] sdd[U] + status=DEGRADED blocks=3000GB [ U_UU ] +
+ +
+md0 : active raid5 sda[U] sdb[R] sdc[U] sdd[U] + status=DEGRADED [ U.UU ] + [==>.................] recovery = 12.3% (ETA ~ 180s) +
+ +
+md0 : active raid5 sda[F] sdb[F] sdc[U] sdd[U] + status=FAILED [ __UU ] +→ 2 dischi guasti in RAID5 = array FAILED (dati irrecuperabili via RAID) +
+
+
+
+
+ +
+ + +
+
+
+ 02 + mdadm --detail /dev/md0 +
+ Diagnosi +
+
+
+
+ +

Mostra informazioni dettagliate sull'array: livello RAID, capacità, stato di ogni disco, numero di guasti, spare presenti e stato del rebuild. È il comando di diagnosi più completo.

+ +

Dopo cat /proc/mdstat per identificare esattamente quale disco è in stato FAILED, REBUILDING o SPARE. Necessario prima di qualsiasi operazione di recovery.

+ +
    +
  • Colonna State per ogni disco: active sync, faulty, spare rebuilding
  • +
  • Riga State : dell'array: clean, degraded
  • +
  • Riga Failed Disks : e Spare Disks :
  • +
  • Riga Rebuild : con la percentuale se attivo
  • +
+
+
+ +
+/dev/md0: + Raid Level : raid5 + Array Size : 3000 GB + Failed Disks : 1 + Spare Disks : 0 + State : degraded + + Number State Device + 0 active sync /dev/sda + 1 faulty /dev/sdb ← disco guasto + 2 active sync /dev/sdc + 3 active sync /dev/sdd +
+ +
+mdadm: cannot open /dev/md0: No such file or directory +→ array non esiste o non è stato creato ancora +
+
+
+
+
+ +
+ + +
+
+
+ 03 + lsblk +
+ Diagnosi +
+
+
+
+ +

Mostra la struttura ad albero di tutti i dispositivi di blocco (dischi, partizioni, array RAID, volumi LVM). Permette di vedere quali dischi fisici partecipano all'array e quali risultano mancanti o non montati.

+ +

Per verificare che tutti i dischi siano visibili al sistema e per controllare se il filesystem è montato. Utile anche per scoprire il nome corretto dei dispositivi (es. sda, sdb…).

+ +
    +
  • La colonna TYPE: disk = disco fisico, raid5 = array RAID
  • +
  • La colonna MOUNTPOINT: se l'array è montato e dove
  • +
  • Dischi non elencati = non rilevati dal kernel (guasto hardware grave)
  • +
+
+
+ +
+NAME SIZE TYPE MOUNTPOINT +sda 1000G disk +sdb 1000G disk (failed) +sdc 1000G disk +sdd 1000G disk +md0 3000G raid5 /mnt +
+ +
+# sdb non appare nella lista +→ disco fisicamente non rilevato: + controlla cavi SATA, connettori, alimentazione +
+
+
+
+
+ +
+ + +
+
+
+ 04 + dmesg | tail +
+ Diagnosi +
+
+
+
+ +

Mostra gli ultimi messaggi del buffer del kernel Linux. Il kernel registra in tempo reale tutto ciò che accade: errori di I/O, problemi SATA, errori CRC, temperature, eventi RAID. È la fonte più diretta di informazioni su cosa è andato storto.

+ +

Quando un disco risulta FAILED o in stato anomalo, o quando si vuole capire come e quando è avvenuto il guasto. Indispensabile per distinguere un guasto fisico del disco da un problema di cavo/connessione.

+ +
    +
  • I/O error su un dispositivo → guasto disco o cavo
  • +
  • UDMA CRC error count increased → problema cavo SATA
  • +
  • temperature critical → disco in overheat
  • +
  • md/raid: md0: Disk failure → RAID ha marcato il disco come guasto
  • +
+
+
+ +
+[12345.678] ata2.00: UDMA CRC error count increased +[12346.001] ata2.00: exception Emask 0x0 SAct 0x0 +→ possibile problema cavo SATA su sdb +
+ +
+[12400.123] end_request: I/O error, dev sdb, sector 2048 +[12400.200] md/raid:md0: Disk failure on sdb, disabling device. +[12400.210] md/raid:md0: Operation continuing on 3 devices. +
+ +
+# dmesg: read kernel buffer failed: Operation not permitted +→ serve privilegi root: usa sudo dmesg | tail +
+
+
+
+
+ +
+ + +
+
+
+ 05 + smartctl -a /dev/sdX +
+ Diagnosi +
+
+
+
+ +

Interroga il sistema SMART (Self-Monitoring, Analysis and Reporting Technology) integrato nel disco. Legge attributi interni come settori ricollocati, temperatura, errori CRC, ore di utilizzo e test diagnostici. Permette di prevedere guasti imminenti prima che si manifestino.

+ +

Per ogni disco sospetto identificato da mdadm --detail o dmesg. Sostituire sdX con il nome del disco da analizzare (es. sda, sdb…).

+ +
    +
  • Reallocated_Sector_Ct > 0 → settori ricollocati: disco che sta cedendo
  • +
  • Current_Pending_Sector > 0 → settori in attesa di ricollocazione
  • +
  • UDMA_CRC_Error_Count > 0 → errori di trasmissione (spesso cavo)
  • +
  • Temperature_Celsius > 55°C → overheat critico
  • +
  • Riga SMART overall-health: PASSED o FAILED!
  • +
+
+
+ +
+SMART overall-health: FAILED! + +ID# ATTRIBUTE_NAME RAW_VALUE + 5 Reallocated_Sector_Ct 214 +197 Current_Pending_Sector 18 +199 UDMA_CRC_Error_Count 0 +194 Temperature_Celsius 38 +→ disco con molti settori ricollocati: sostituire subito +
+ +
+SMART overall-health: PASSED (but CRC errors) + +ID# ATTRIBUTE_NAME RAW_VALUE + 5 Reallocated_Sector_Ct 0 +199 UDMA_CRC_Error_Count 24 +194 Temperature_Celsius 36 +→ disco probabilmente OK, controllare cavo SATA +
+ +
+smartctl: cannot open /dev/sdb: No such device +→ disco non rilevato dal kernel: problema hardware +
+
+
+
+
+ +
+ + + + +
+ +
+

🔧 5.2 Recovery RAID

+

Il recovery si esegue solo dopo aver completato la diagnosi. L'ordine delle operazioni è preciso e non va invertito: prima rimuovere il disco guasto, poi aggiungere il nuovo, poi avviare il rebuild. Monitorare sempre fino al completamento.

+
+ + +
+
+
+ R1 + mdadm /dev/md0 --fail /dev/sdX +  (o: mdadm --fail /dev/md0 /dev/sdX) +
+ Recovery +
+
+
+
+ +

Forza il kernel a marcare un disco come FAILED all'interno dell'array RAID. Questo non rimuove il disco, ma lo disabilita logicamente. L'array entra in stato DEGRADED.

+ +

Quando un disco mostra segni di degrado (overheat, CRC, slow) ma non è ancora entrato in FAILED automaticamente. Permette di controllare la situazione prima della rimozione.

+ +

Se il disco è già in stato FAILED (marcato automaticamente dal kernel), questo comando non è necessario. Procedere direttamente con --remove.

+
+
+ +
+$ mdadm /dev/md0 --fail /dev/sdb +mdadm: set /dev/sdb faulty in /dev/md0 +→ sdb marcato FAILED, array in DEGRADED +
+ +
+mdadm: Cannot set device faulty: Device or resource busy +→ rebuild in corso, attendere il completamento +
+
+
+
+
+ +
+ + +
+
+
+ R2 + mdadm /dev/md0 --remove /dev/sdX +  (o: mdadm --remove /dev/md0 /dev/sdX) +
+ Recovery +
+
+
+
+ +

Rimuove logicamente un disco FAILED dall'array RAID. Dopo questo comando il disco è in stato REMOVED e può essere fisicamente sostituito. L'array rimane DEGRADED.

+ +

Solo dopo che il disco è in stato FAILED (automatico o forzato con --fail). Non è possibile rimuovere un disco attivo senza prima marcarlo come guasto.

+ +

Sostituire fisicamente il disco (o usarne uno nuovo), poi eseguire --add per inserire il nuovo disco come spare e avviare il rebuild.

+
+
+ +
+$ mdadm /dev/md0 --remove /dev/sdb +mdadm: hot removed /dev/sdb from /dev/md0 +→ sdb rimosso, pronto per sostituzione fisica +
+ +
+mdadm: Cannot remove non-faulty device /dev/sdb +→ il disco non è in stato FAILED + usa prima: mdadm /dev/md0 --fail /dev/sdb +
+
+
+
+
+ +
+ + +
+
+
+ R3 + mdadm /dev/md0 --add /dev/sdY +  (o: mdadm --add /dev/md0 /dev/sdY) +
+ Recovery +
+
+
+
+ +

Aggiunge un nuovo disco all'array come spare. Se l'array è in stato DEGRADED, il rebuild può partire automaticamente o può essere avviato manualmente. Il disco deve avere dimensione uguale o maggiore al disco originale.

+ +

Dopo aver rimosso il disco guasto e inserito fisicamente il nuovo. Il disco nuovo (sdY) deve essere un disco vuoto, non formattato, non parte di altri array.

+ +

Se il nuovo disco è più piccolo del disco originale, il rebuild fallirà con un errore di dimensione. Verificare sempre la capacità con lsblk prima di procedere.

+
+
+ +
+$ mdadm /dev/md0 --add /dev/sde +mdadm: added /dev/sde as spare to /dev/md0 +→ sde aggiunto come SPARE, rebuild avviato +
+ +
+mdadm: /dev/sde: device too small (500GB) for array + minimum size required: 1000GB +→ usa un disco uguale o più grande di 1000GB +
+ +
+mdadm: /dev/sde is already a member of /dev/md0 +→ il disco è già nell'array +
+
+
+
+
+ +
+ + +
+
+
+ R4 + watch cat /proc/mdstat +  ⚠ non disponibile nel simulatore +
+ Linux reale +
+
+
+
+ +

Il comando watch esegue ripetutamente un comando (ogni 2 secondi per default) e aggiorna l'output a schermo. Usato con cat /proc/mdstat crea un monitor in tempo reale del rebuild su un sistema Linux reale, mostrando la percentuale di avanzamento e l'ETA aggiornati ogni 2 secondi.

+ +

Durante un rebuild attivo su un vero server Linux, per monitorare l'avanzamento senza dover rieseguire manualmente il comando ogni volta. Si esce con Ctrl+C.

+ +

Il comando watch non è supportato nel terminale simulato. Per monitorare il rebuild, usare ripetutamente cat /proc/mdstat. La barra di avanzamento del rebuild è visibile anche nella dashboard in tempo reale.

+
+
+ +
+md0 : active raid5 sda[U] sde[R] sdc[U] sdd[U] + status=DEGRADED [ U.UU ] + [=====>.............] recovery = 28.4% + finish=180s speed=55000K/sec +
+ +
+md0 : active raid5 sda[U] sde[U] sdc[U] sdd[U] + status=OK blocks=3000GB [ UUUU ] + +→ rebuild completato, array tornato clean ✅ +
+ +
+cat /proc/mdstat ← ripetere manualmente +La dashboard aggiorna la barra % in tempo reale +
+
+
+
+
+ +
+ + +
+ 📋 Sequenze di recovery complete +
+ +
+
+
RAID5 / RAID1 — 1 disco guasto → OK
+
+
cat /proc/mdstat → DEGRADED
+
mdadm --detail /dev/md0 → identifica sdb FAILED
+
smartctl -a /dev/sdb → conferma guasto
+
mdadm /dev/md0 --remove /dev/sdb
+
mdadm /dev/md0 --add /dev/sde → nuovo disco
+
mdadm /dev/md0 --rebuild
+
cat /proc/mdstat → attendi OK
+
+
+
+
RAID6 — 2 dischi guasti → OK
+
+
cat /proc/mdstat → DEGRADED (2 FAILED)
+
mdadm /dev/md0 --remove /dev/sdb
+
mdadm /dev/md0 --add /dev/sdg
+
mdadm /dev/md0 --rebuild → 1° rebuild
+
cat /proc/mdstat → attendi OK, poi ripeti per 2° disco
+
Ripeti: --remove → --add → --rebuild
+
cat /proc/mdstat → OK finale
+
+
+
+ +
+
Rebuild interrotto (powerfail) → riavvio
+
+
cat /proc/mdstat → DEGRADED, rebuild interrotto
+
mdadm --detail /dev/md0 → verifica stato spare ancora presente
+
mdadm /dev/md0 --rebuild → riprende dall'ultimo checkpoint
+
cat /proc/mdstat → attendi OK
+
+
+ +
+
⚠️
+
+ Array FAILED = dati irrecuperabili via RAID.
+ Questo accade con RAID0 (qualsiasi guasto), RAID5 con 2+ guasti, RAID6 con 3+ guasti, RAID10 con mirror pair perso. In questi casi non esiste un comando di recovery: bisogna ripristinare da backup esterno. Nel simulatore: conclude restore da backup. +
+
+ +
+ + + + +
+ +
+

⚠️ 5.3 Errori non fatali

+

Non tutti i problemi richiedono la sostituzione immediata del disco. Alcuni errori sono segnali di avvertimento che permettono di intervenire in modo preventivo. Ignorarli, però, può portare a un guasto definitivo. Capire la differenza è fondamentale.

+
+ + +
+
+
+ CRC + CRC Errors — errori di trasmissione dati +
+ Non fatale +
+
+
+
+ +

CRC (Cyclic Redundancy Check) è un meccanismo di controllo dell'integrità dei dati trasmessi sul cavo SATA. Un errore CRC significa che un blocco di dati è arrivato corrotto durante il trasferimento tra il disco e il controller. Non necessariamente il disco è guasto.

+ + +
    +
  • Cavo SATA danneggiato, piegato o di scarsa qualità
  • +
  • Connettore SATA allentato (disco o scheda madre)
  • +
  • Alimentazione instabile al disco
  • +
  • Solo raramente: problema interno al disco
  • +
+ + +
    +
  • 1 Eseguire dmesg | tail e smartctl -a /dev/sdX
  • +
  • 2 Se solo CRC errors alti (Reallocated=0): sostituire prima il cavo SATA
  • +
  • 3 Verificare con smartctl se il contatore si azzera o continua a crescere
  • +
  • 4 Se persiste dopo cambio cavo: pianificare sostituzione del disco
  • +
+
+
+ +
+[04231.001] ata2.00: UDMA CRC error count increased +[04231.100] ata2.00: exception Emask 0x0 SAct +[04231.200] ata2.00: cmd 60/08:00:... failed +→ probabile problema cavo su /dev/sdb +
+ +
+SMART overall-health: PASSED + + 5 Reallocated_Sector_Ct 0 +199 UDMA_CRC_Error_Count 24 +194 Temperature_Celsius 35 +→ disco OK, solo CRC errors → cambia cavo SATA +
+
+
💡
+
Regola pratica: CRC alto + Reallocated=0 = cavo. CRC alto + Reallocated>50 = disco da sostituire.
+
+
+
+
+
+ +
+ + +
+
+
+ 🌡 + Overheat — temperatura critica +
+ Urgente +
+
+
+
+ +

Un disco funziona in modo ottimale tra 20°C e 50°C. Sopra i 55°C entra in zona di rischio; sopra i 60°C può registrare errori di lettura/scrittura o ridurre la propria affidabilità in modo permanente. L'overheat è un segnale di rischio imminente ma non è ancora un guasto.

+ + +
    +
  • Ventola del case guasta o ostruita
  • +
  • Dischi troppo vicini senza airflow
  • +
  • Temperatura ambiente elevata (estate, locali non climatizzati)
  • +
  • Carico eccessivo su disco in fase di rebuild
  • +
+ + +
    +
  • Verificare temperatura con smartctl -a /dev/sdX → attributo 194 Temperature_Celsius
  • +
  • Migliorare il raffreddamento del case (ventole, spaziatura dischi)
  • +
  • Se temperatura >60°C: pianificare sostituzione preventiva prima del guasto
  • +
  • Non avviare rebuild con un disco in overheat: rallenta e rischia di peggiorare
  • +
+
+
+ +
+SMART overall-health: PASSED (but temperature high) + + 5 Reallocated_Sector_Ct 0 +194 Temperature_Celsius 61 ← critico +199 UDMA_CRC_Error_Count 0 +→ raffreddare subito, pianificare sostituzione +
+ +
+[09821.400] ata3.00: temperature critical +[09821.500] ata3.00: device reported high temperature +→ kernel avverte del rischio termico +
+
+
+
Soglie di temperatura HDD/SSD:
+ <45°C = ottimale · 45-55°C = accettabile · 55-60°C = attenzione · >60°C = sostituire
+
+
+
+
+
+ +
+ + +
+
+
+ 🐢 + Slow disk — disco lento +
+ Da monitorare +
+
+
+
+ +

Un disco lento non ha ancora smesso di funzionare, ma risponde ai comandi in modo più lento del normale. Questo degrada le prestazioni dell'intero array, poiché tutte le operazioni devono aspettare il disco più lento (in RAID, l'array è veloce quanto il disco più lento).

+ + +
    +
  • Settori in fase di ricollocazione (Current_Pending_Sector > 0)
  • +
  • Disco meccanico (HDD) in fase di degrado meccanico
  • +
  • Overheat che limita le prestazioni come misura di protezione
  • +
  • Carico I/O eccessivo combinato con altri processi
  • +
+ + +
    +
  • IOPS dell'intero array ridotti del 30-50%
  • +
  • Latenze elevate su tutte le operazioni
  • +
  • Se il disco rallenta ulteriormente, il kernel può marcarlo FAILED
  • +
+ + +

Monitorare con smartctl, verificare Current_Pending_Sector. Se il contatore cresce: pianificare sostituzione preventiva prima che il disco passi a FAILED.

+
+
+ +
+SMART overall-health: PASSED (but performance degraded) + + 5 Reallocated_Sector_Ct 8 +197 Current_Pending_Sector 6 ← attenzione +199 UDMA_CRC_Error_Count 2 +194 Temperature_Celsius 42 +→ settori in pending: monitorare, probabile degrado +
+ +
+IOPS nominali RAID5 (4 dischi): ~1200 +IOPS con 1 disco SLOW: ~720 (-40%) +IOPS con rebuild attivo: ~550 (-55%) +→ pianificare manutenzione in orario bassa attività +
+
+
📊
+
Current_Pending_Sector è l'attributo più importante: indica settori che il disco non riesce più a leggere correttamente ma non ha ancora sostituito. Se supera 20, il rischio di FAILED cresce rapidamente.
+
+
+
+
+
+ +
+ + + + +
+ +
+

💾 5.4 Filesystem su RAID

+

Il RAID gestisce la ridondanza e la distribuzione dei dati a livello fisico, ma da solo non basta per usare un disco. Sopra il RAID bisogna creare un filesystem (es. ext4) e montarlo in una directory. Solo a quel punto è possibile leggere e scrivere file.

+
+ + +
+
Struttura a strati — dal fisico al file
+
+
📂 /mnt/data/file.txt     ← file visibile all'utente
+
↑ montaggio (mount)
+
📁 Filesystem ext4        ← gestisce directory, permessi, inode
+
↑ creazione (mkfs.ext4)
+
🔧 /dev/md0 — Array RAID5   ← gestisce ridondanza e striping
+
↑ costruito da
+
💿 sda   sdb   sdc   sdd      ← dischi fisici
+
+
+ + +
+
+
+ F1 + mkfs.ext4 /dev/md0 +
+ Filesystem +
+
+
+
+ +

Crea un filesystem ext4 sull'array RAID. Formatta il volume logico /dev/md0 scrivendo le strutture dati del filesystem (superblock, inode table, bitmap). Operazione distruttiva: cancella tutti i dati esistenti.

+ +

Una sola volta, dopo aver creato l'array RAID per la prima volta. Non va eseguito dopo un rebuild (i dati sono già presenti sul filesystem).

+ +
    +
  • Array RAID creato e in stato OK (non FAILED, non DEGRADED)
  • +
  • Nessun filesystem già presente (o si accetta di sovrascrivere tutto)
  • +
+
+
+ +
+$ mkfs.ext4 /dev/md0 +mke2fs 1.47.0 +Creating filesystem with 786432 4k blocks... +Allocating group tables: done +Writing inode tables: done +Creating journal: done +Writing superblocks: done +→ filesystem ext4 creato su /dev/md0 ✅ +
+ +
+mkfs.ext4: I/O error: volume FAILED +→ array FAILED, impossibile creare filesystem + risolvere prima il problema RAID +
+
+
+
+
+ +
+ + +
+
+
+ F2 + mount /dev/md0 /mnt +
+ Filesystem +
+
+
+
+ +

Monta il filesystem dell'array RAID nella directory /mnt (o qualsiasi altra directory esistente). Dopo il mount, tutti i file dell'array diventano accessibili tramite quella directory.

+ +

Dopo aver creato il filesystem con mkfs.ext4. Deve essere eseguito ad ogni riavvio del sistema (oppure aggiunto a /etc/fstab per il mount automatico).

+ +
umount /mnt
+

Smonta il filesystem in modo sicuro. Attendere che tutte le operazioni di I/O siano concluse prima di smontare.

+
+
+ +
+$ mount /dev/md0 /mnt +# nessun output = successo + +$ df -h +Filesystem Size Used Avail Use% Mounted on +/dev/md0 3.0T 1.1G 2.9T 1% /mnt +→ array montato e accessibile ✅ +
+ +
+mount: /mnt: can't read superblock from /dev/md0 +→ filesystem non creato: esegui mkfs.ext4 prima +
+
+
+
+
+ +
+ + +
+ 📁 Lettura, scrittura e verifica del volume +
+ +
+
+ +
+
+
+ F3 + df -h +
+ Verifica +
+
+

Mostra l'utilizzo del disco in formato leggibile. Permette di verificare capacità totale, spazio usato e spazio disponibile. Mostra anche il punto di mount.

+
+Filesystem Size Used Avail Use% Mounted on +/dev/md0 3.0T 48G 2.9T 2% /mnt +
+
+
+ + +
+
+
+ F4 + ls /mnt +
+ Lettura +
+
+

Lista il contenuto della directory montata. Se restituisce una lista vuota o (vuoto) significa che il filesystem è montato ma non contiene file.

+
+$ ls /mnt +documento.txt backup.tar logs/ +# oppure: (vuoto) se appena formattato +
+
+
+
+ +
+ +
+
+
+ F5 + touch /mnt/file +
+ Scrittura +
+
+

Crea un file vuoto. Test minimale per verificare che il filesystem sia scrivibile. Se fallisce con I/O error, l'array ha un problema.

+
+$ touch /mnt/test.txt +# successo = nessun output +
+
+
+ + +
+
+
+ F6 + echo / cat / rm +
+ Test completo +
+
+

Test completo di scrittura, lettura e cancellazione su file. Sequenza consigliata per verificare la funzionalità del volume dopo un rebuild o una riparazione.

+
+$ echo "test RAID OK" > /mnt/verifica.txt +$ cat /mnt/verifica.txt +test RAID OK +$ rm /mnt/verifica.txt +# volume funzionante ✅ +
+
+echo: I/O error: volume FAILED +→ array non accessibile, dati non scrivibili +
+
+
+
+
+ + +
+
+ 🔧 Comandi facoltativi ma utili +
+
+
+ Diagnostica avanzata +

mdadm --examine /dev/sdX

+

Legge i metadati RAID scritti sul disco, anche se non è più parte di un array attivo. Utile per recuperare informazioni su array distrutti o disco rimosso accidentalmente.

+
+
+ Controllo filesystem +

fsck /dev/md0

+

Controlla e ripara il filesystem ext4 sopra l'array RAID. Va eseguito solo con il filesystem smontato. Utile dopo crash di sistema o powerfail durante scrittura.

+
+
+ Identificazione +

blkid

+

Mostra UUID, tipo di filesystem e label di tutti i dispositivi. Utile per identificare il volume RAID nel file /etc/fstab per il mount automatico al boot.

+
+
+ Layout dischi +

fdisk -l

+

Elenca tutti i dischi e le partizioni con dimensioni. Permette di verificare la dimensione esatta di ogni disco prima di usarlo come spare, evitando l'errore "spare too small".

+
+
+ + +
+
+ 📋 Tutti i comandi disponibili nel simulatore +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ComandoCategoriaFunzioneDisponibile
cat /proc/mdstatDiagnosiStato array RAID in tempo reale✅ Sì
mdadm --detail /dev/md0DiagnosiDettaglio completo array e dischi✅ Sì
lsblkDiagnosiStruttura dispositivi di blocco✅ Sì
dmesg | tailDiagnosiMessaggi kernel recenti✅ Sì
smartctl -a /dev/sdXDiagnosiStato SMART del disco✅ Sì
mdadm /dev/md0 --fail /dev/sdXRecoveryMarca disco come FAILED✅ Sì
mdadm /dev/md0 --remove /dev/sdXRecoveryRimuove disco FAILED dall'array✅ Sì
mdadm /dev/md0 --add /dev/sdYRecoveryAggiunge nuovo disco come spare✅ Sì
mdadm /dev/md0 --rebuildRecoveryAvvia il rebuild dell'array✅ Sì
mdadm --stop-rebuild /dev/md0RecoveryInterrompe il rebuild✅ Sì
powerfailSimulazioneSimula blackout, interrompe rebuild✅ Sì
mkfs.ext4 /dev/md0FilesystemCrea filesystem ext4 sull'array✅ Sì
mount /dev/md0 /mntFilesystemMonta il filesystem✅ Sì
umount /mntFilesystemSmonta il filesystem✅ Sì
df -hFilesystemSpazio disco utilizzato✅ Sì
ls / touch / echo / cat / rmFilesystemOperazioni su file✅ Sì
blkidExtraUUID e tipo filesystem✅ Sì
fdisk -lExtraLayout completo dischi✅ Sì
watch cat /proc/mdstatLinux realeMonitor continuo (Linux reale, ogni 2s)❌ Non nel simulatore — usa cat
mdadm --examine /dev/sdXAvanzatoMetadati RAID su disco❌ Non disponibile
fsck /dev/md0AvanzatoControllo/riparazione filesystem❌ Non disponibile
+
+ +
+ +
+ +
+
+
+
+ + + +