diff --git a/guida.html b/guida.html index c219eb5..6ea0c11 100644 --- a/guida.html +++ b/guida.html @@ -328,7 +328,7 @@
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

+

Informatica di Sistema · ITIS · Versione simulatore v2.8

@@ -346,8 +346,9 @@
  • Stati dei dischi e del volume
  • La documentazione integrata
  • Il report finale
  • -
  • Errori comuni da evitare
  • -
  • Conclusione
  • +
  • Errori non fatali: CRC, Overheat, Slow
  • +
  • Errori comuni da evitare
  • +
  • Conclusione
  • @@ -756,7 +757,20 @@
    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.
    +
    Risultato atteso
    Elenco degli scenari disponibili: +
      +
    • raid0_fail — RAID0: un guasto → FAILED, conclude restore da backup
    • +
    • raid1_onefail — RAID1: sostituzione disco + rebuild
    • +
    • raid5_1fail — RAID5: recovery con 1 disco guasto
    • +
    • raid5_2fail — RAID5: 2 guasti → FAILED, conclude restore da backup
    • +
    • raid6_2fail — RAID6: recovery con 2 dischi guasti (uno alla volta)
    • +
    • raid10_pairfail — RAID10: mirror pair perso → FAILED
    • +
    • rebuild_interrupted — rebuild interrotto da powerfail, poi riavviato
    • +
    • wrong_size_spare — spare troppo piccolo (errore) poi corretto
    • +
    • crc_errors — disco in stato CRC: diagnosi + replace cable o conclude
    • +
    • overheat — disco in OVERHEAT: diagnosi + cool down o conclude
    • +
    +
    @@ -1031,12 +1045,47 @@ SMART overall-health: FAILED! +
    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.
    +
    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, come alternativa ai nuovi comandi hardware simulati.
    +
    Conclusioni frequenti
    +
      +
    • conclude restore da backup — array FAILED, dati persi
    • +
    • conclude sostituire cavo SATA — disco in stato CRC, causa probabile cavo
    • +
    • conclude migliorare raffreddamento — disco in OVERHEAT
    • +
    • conclude monitorare e pianificare sostituzione — disco SLOW
    • +
    +
    +
    +
    + +
    +
    replace cable /dev/sdXSimulazione
    +
    +
    Cosa fa
    Simula la sostituzione fisica del cavo SATA collegato al disco specificato. Azzera il contatore UDMA_CRC_Error_Count, resetta il link SATA e riporta il disco da stato CRC a OK.
    +
    Quando usarlo
    Dopo aver diagnosticato un disco in stato CRC con dmesg | tail e smartctl, se Reallocated_Sector_Ct = 0 (problema di cavo, non di disco). Nello scenario crc_errors.
    +
    Esempio
    replace cable /dev/sdd
    +
    Risultato atteso
    Il disco torna a stato OK. Nel terminale viene mostrato: cavo rimosso e installato, link SATA reset, CRC counter azzerato, suggerimento di monitorare nelle ore successive.
    +
    Errori possibili
    Se il disco non è in stato CRC: "replace cable: non è in stato CRC". Questo comando funziona solo su dischi con errori CRC.
    +
    Punteggio
    Nello scenario crc_errors: +8 punti per aver eseguito la sostituzione corretta del cavo.
    +
    Nota importante
    Se dopo la sostituzione del cavo il contatore CRC ricominciasse a crescere, il problema sarebbe nel disco o nel controller, non nel cavo. In quel caso si procederebbe con la sostituzione del disco.
    +
    +
    + +
    +
    cool down /dev/sdXSimulazione
    +
    +
    Cosa fa
    Simula un intervento di raffreddamento sul disco specificato: pulizia delle ventole, miglioramento dell'airflow nel case, spaziatura dei dischi. Riporta la temperatura nella zona ottimale e il disco da OVERHEAT a OK.
    +
    Quando usarlo
    Dopo aver diagnosticato un disco in stato OVERHEAT con smartctl e dmesg | tail. Nello scenario overheat.
    +
    Esempio
    cool down /dev/sdc
    +
    Risultato atteso
    La temperatura scende da 58–62°C a ~38°C. Il disco torna a stato OK. Il throttling termico viene rimosso. Il terminale suggerisce comunque di pianificare la sostituzione preventiva.
    +
    Errori possibili
    Se il disco non è in stato OVERHEAT: "cool down: non è in stato OVERHEAT".
    +
    Punteggio
    Nello scenario overheat: +8 punti per aver eseguito l'intervento di raffreddamento corretto.
    +
    Nota importante
    Il raffreddamento risolve il sintomo immediato, ma un disco che ha lavorato a lungo a temperature critiche è comunque a rischio. Il consiglio è di pianificare la sostituzione preventiva con mdadm --fail + --remove + --add + --rebuild.
    @@ -1161,8 +1210,8 @@ SMART overall-health: FAILED! 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. + OVERHEATTemperatura critica (sopra i 55–60°C). Il disco rischia di guastarsi a breve. Il sistema segnala l'allarme termico.Usare smartctl e dmesg | tail. Poi: cool down /dev/sdX per simulare l'intervento di raffreddamento, oppure conclude migliorare raffreddamento. Pianificare sostituzione preventiva. + CRCErrori CRC rilevati. Spesso indica un problema di cavo SATA o di connessione, non necessariamente del disco stesso.Usare dmesg | tail e smartctl. Se Reallocated = 0: usare replace cable /dev/sdX per simulare la sostituzione del cavo, oppure conclude sostituire cavo SATA.

    Stati del volume (array)

    @@ -1231,7 +1280,175 @@ SMART overall-health: FAILED! -

    Errori comuni da evitare

    +
    + + +

    Errori non fatali: CRC, Overheat, Slow

    + +

    Non tutti i problemi di un disco richiedono la sostituzione immediata. Il simulatore distingue tre stati di allerta che segnalano un disco in difficoltà ma ancora funzionante. Capire come gestirli — e come chiuderli correttamente — è fondamentale per l'esame.

    + +
    +
    💡
    +
    La differenza fondamentale: CRC e Overheat non sono guasti fisici immediati. FAILED lo è. Reagire allo stesso modo a tutti e tre è un errore di metodo valutato negativamente.
    +
    + +

    Griglia decisionale rapida

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ProblemaSintomo nel simulatorePrima azioneDecisione logicaChiusura corretta
    CRC errorsStato .crc, CRC counter > 0dmesg | tail
    smartctl -a /dev/sdX
    Realloc = 0 → cavo
    Realloc > 50 → disco
    replace cable /dev/sdX
    oppure conclude sostituire cavo SATA
    OverheatStato .overheat, temp > 55°Csmartctl -a /dev/sdX
    dmesg | tail
    Non è guasto ora, ma è imminente → non aspettarecool down /dev/sdX
    oppure conclude migliorare raffreddamento
    Slow diskStato .slow, IOPS ridottismartctl -a /dev/sdX
    verifica Current_Pending_Sector
    Pending < 20 → monitora
    Pending > 20 → sostituisci
    conclude monitorare e pianificare sostituzione
    FAILED (array)Array in stato FAILEDcat /proc/mdstat
    mdadm --detail /dev/md0
    Guasti oltre la tolleranza → nessun rebuild possibileconclude restore da backup
    + +

    CRC errors — procedura completa

    +

    Gli errori CRC (Cyclic Redundancy Check) segnalano che i dati hanno subito corruzione durante il trasferimento sul cavo SATA. Non è detto che il disco sia guasto: il problema è spesso nel cavo o nel connettore.

    + +
    +
    +
    1
    +
    + Leggo il log kernel +
    raidlab(OK)$ dmesg | tail
    +[04231.001] WARN: /dev/sdd: UDMA CRC errors detected
    +[04231.100] ata4.00: exception Emask 0x0 SAct — link reset
    + Il kernel segnala errori di trasmissione su /dev/sdd. Non dice ancora se è il cavo o il disco. +
    +
    +
    +
    2
    +
    + Analizzo i dati SMART +
    raidlab(OK)$ smartctl -a /dev/sdd
    +SMART overall-health: PASSED (but CRC errors)
    +
    +  5  Reallocated_Sector_Ct   0      ← nessun settore danneggiato
    +199  UDMA_CRC_Error_Count    24     ← errori di trasmissione
    +194  Temperature_Celsius     35
    + Reallocated = 0: il disco è integro fisicamente. Il problema è nel percorso del segnale (cavo, connettore). +
    +
    +
    +
    3
    +
    + NON faccio fail/remove immediato + Il disco non è guasto. Rimuoverlo sarebbe un errore di valutazione. Si interviene sul cavo. +
    +
    +
    +
    4
    +
    + Sostituisco il cavo +
    raidlab(OK)$ replace cable /dev/sdd
    +[sostituzione cavo SATA su /dev/sdd]
    +  UDMA_CRC_Error_Count: 24 → 0 (azzerato dal reset)
    +  Stato disco: CRC → OK
    +→ Monitorare nelle prossime ore con smartctl
    + Oppure, se si vuole solo registrare la decisione: conclude sostituire cavo SATA. +
    +
    +
    + +
    +
    ⚠️
    +
    Se CRC continua a crescere dopo il cambio cavo: a quel punto il problema è nel disco o nel controller. Si procede con la sequenza normale: mdadm --fail--remove--add--rebuild.
    +
    + +

    Overheat — procedura completa

    +

    Un disco surriscaldato (sopra i 55–60°C) non è ancora guasto, ma è un pre-failure: il guasto è imminente. Non bisogna aspettare.

    + + + + + + + +
    TemperaturaStatoAzione
    < 45°COttimaleNessuna
    45–55°CAccettabileMonitorare
    55–60°CAttenzioneMigliorare ventilazione
    > 60°CCriticoIntervenire subito, pianificare sostituzione
    + +
    +
    +
    1
    +
    + Analizzo SMART e dmesg +
    raidlab(OK)$ smartctl -a /dev/sdc
    +SMART overall-health: PASSED (but temperature high)
    +
    +194  Temperature_Celsius     61   ← critico: >60°C
    +  5  Reallocated_Sector_Ct   0
    +199  UDMA_CRC_Error_Count    0
    +
    +
    +
    +
    2
    +
    + Non avvio rebuild con disco in overheat + Un rebuild su un disco già a 61°C lo porterebbe certamente al guasto. Prima si raffredda, poi eventualmente si sostituisce. +
    +
    +
    +
    3
    +
    + Intervengo sul raffreddamento +
    raidlab(OK)$ cool down /dev/sdc
    +[intervento di raffreddamento su /dev/sdc]
    +  Temperatura: 61°C → 38°C (zona ottimale)
    +  Throttling termico: rimosso
    +  Stato disco: OVERHEAT → OK
    +→ Pianificare sostituzione preventiva
    + Oppure: conclude migliorare raffreddamento. +
    +
    +
    + +
    +
    🔧
    +
    Approccio "pro" (livello esame alto): dopo aver raffreddato, si pianifica la sostituzione preventiva prima del guasto improvviso: mdadm --fail /dev/md0 /dev/sdc--remove--add /dev/sdf--rebuild. Così si fa il rebuild in condizioni controllate invece di subirlo d'emergenza.
    +
    + +

    Slow disk — gestione

    +

    Un disco lento degrada le prestazioni dell'intero array (RAID è veloce quanto il suo disco più lento). Non è ancora guasto, ma può diventarlo.

    + + +

    Principio fondamentale — ogni prova deve concludersi

    +

    Un buon amministratore di sistema non si ferma alla diagnosi. Ogni sessione deve avere un risultato verificabile e documentato. Nel simulatore, il punteggio non è completo senza una chiusura esplicita:

    + + +
    + +

    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.

    @@ -1257,9 +1474,15 @@ SMART overall-health: FAILED!

    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.

    +

    9. Usare replace cable o cool down sul disco sbagliato

    +

    Il comando replace cable /dev/sdX funziona solo su dischi in stato CRC. Se il disco è in stato FAILED, OVERHEAT o OK, il comando restituisce un errore. Analogamente, cool down /dev/sdX funziona solo su dischi in stato OVERHEAT. Usare questi comandi sul disco sbagliato non produce effetti e il terminale avvisa con un messaggio esplicito. Controllare sempre lo stato con mdadm --detail /dev/md0 prima di applicare questi interventi.

    + +

    10. Chiudere uno scenario senza concludere

    +

    Gli scenari crc_errors e overheat richiedono due checkpoint per essere completati: la diagnosi (dmesg + smartctl) e la chiusura (replace cable / cool down oppure conclude). Se si esegue solo la diagnosi e ci si ferma, il punteggio rimane parziale e lo scenario non viene marcato come risolto. Ogni prova deve avere una fine esplicita e verificabile.

    + -

    Conclusione

    +

    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.

    @@ -1278,7 +1501,7 @@ SMART overall-health: FAILED!
    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

    +

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

    diff --git a/simulatore.html b/simulatore.html index 177800b..cf4cf72 100644 --- a/simulatore.html +++ b/simulatore.html @@ -106,11 +106,10 @@ label{display:flex;flex-direction:column;gap:6px;font-size:12px;color:var(--muted)} select,input[type="number"],input[type="text"]{ height:40px;border-radius:12px;border:1px solid rgba(255,255,255,.14); - background:#0d1220;color:rgba(255,255,255,.92); + background:rgba(10,14,28,.55);color:rgba(255,255,255,.92); padding:0 12px;outline:none;box-shadow:inset 0 0 0 1px rgba(255,255,255,.04); font-family:var(--sans) } - select option{background:#0d1220;color:rgba(255,255,255,.92);} select:focus,input:focus{border-color:rgba(167,139,250,.55);box-shadow:0 0 0 4px rgba(167,139,250,.15)} .controls{display:grid;grid-template-columns:1.1fr .7fr .7fr;gap:10px} @media (max-width: 720px){.controls{grid-template-columns:1fr}} @@ -959,43 +958,59 @@ display:flex;align-items:center;gap:10px;flex-wrap:wrap; background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.07); border-radius:10px;padding:8px 12px; + color:var(--text); } .tf-fault-dev{ font-family:var(--mono);font-size:13px;font-weight:700;color:var(--text); min-width:52px;flex-shrink:0; } - .tf-fault-select{ - background:#111827;border:1px solid rgba(255,255,255,.18); - border-radius:8px;padding:6px 28px 6px 10px;color:rgba(255,255,255,.92);font-size:12.5px; - font-family:var(--sans);outline:none;cursor:pointer; - background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='rgba(255,255,255,.55)' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E"); - background-repeat:no-repeat;background-position:right 9px center;appearance:none; - transition:border-color .2s; - } - .tf-fault-select option{background:#111827;color:rgba(255,255,255,.92);} - .tf-fault-select:focus{border-color:rgba(167,139,250,.6);} - .tf-fault-select.sel-FAILED{border-color:rgba(251,113,133,.6);color:var(--bad);} - .tf-fault-select.sel-FAILED option{color:rgba(255,255,255,.92);} - .tf-fault-select.sel-CRC{border-color:rgba(251,191,36,.6);color:var(--warn);} - .tf-fault-select.sel-CRC option{color:rgba(255,255,255,.92);} - .tf-fault-select.sel-OVERHEAT{border-color:rgba(251,146,60,.6);color:#fb923c;} - .tf-fault-select.sel-OVERHEAT option{color:rgba(255,255,255,.92);} - .tf-fault-select.sel-SLOW{border-color:rgba(96,165,250,.55);color:var(--info);} - .tf-fault-select.sel-SLOW option{color:rgba(255,255,255,.92);} - .tf-fault-desc{font-size:11.5px;color:var(--muted2);flex:1;line-height:1.35;} + /* ── Custom dropdown (sostituisce