Contrassegnare i settori danneggiati sul disco rigido senza formattare


22

Ho notato che sul mio server Ubuntu di casa un'unità viene letta solo per qualche motivo. Scavando ho scoperto che questo può accadere quando gli hard disk hanno errori. Ho usato i badblock per verificare la presenza di errori e in effetti ho alcuni settori danneggiati.

Nella maggior parte dei casi, l'unica azione razionale è tentare di eseguire il backup dei dati, rimuovere l'HDD e acquistarne uno nuovo. Tuttavia, questo server non ha nulla di cui non ho già eseguito il backup in più punti e mi piacerebbe usarlo fino alla sua morte. Lo uso per lo streaming di musica e l'esecuzione di alcuni semplici script. In ogni caso, sarebbe una grande confusione reinstallare tutto.

C'è un modo per contrassegnare questi blocchi danneggiati senza formattare un hdd?

Risposte:


29

Presumo che tu stia parlando di blocchi fisici danneggiati su un disco e non di file system corrotti.

Per verificare le condizioni fisiche del disco è consigliabile installarlo smartmontools

sudo apt-get install smartmontools

Questo funziona perché tutti i dischi moderni registrano il loro stato di integrità utilizzando un sistema chiamato SMART

Utilizzare il smartctrlcomando per leggere questo stato. Ad esempio per leggere tutti gli attributi dalla prima chiamata su disco

sudo smartctl --all /dev/sda

Fai attenzione a una linea che parla dello stato generale della salute. Una volta che questo indica un errore, è molto probabile che il disco si guasterà presto.

SMART overall-health self-assessment test result: PASSED

Altre righe che si desidera verificare sono il conteggio dei settori in sospeso e i settori riallocati.

ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       48
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       2

Gli elenchi riallocati solitamente nel campo non elaborato indicano il numero di settori danneggiati scambiati dal disco con quelli di riserva funzionanti. In sospeso sono settori che potrebbero essere riallocati nel caso in cui la scrittura successiva non riesca.

È anche possibile attivare gli autotest del disco quando supportati dal modello

sudo smartctl -t long /dev/sda

Per forzare il controllo di tutti i settori, utilizzare badblocksin una modalità in cui i dati vengono scritti. Fai attenzione che, sebbene in generale sia sicuro da eseguire, caricherà ulteriormente i tuoi dischi, il che potrebbe causare un errore. Avere sempre un backup dei tuoi dati.

sudo badblocks -svvn -c 262144 /dev/sda

Se il disco è stato completamente elaborato in questo modo, il controller del disco avrebbe dovuto sostituire tutti i blocchi danneggiati con quelli funzionanti e il conteggio riallocato verrà aumentato nel registro SMART.


2
Qual è l'influenza -co il numero di blocchi che vengono testati contemporaneamente o in altre parole perché hai un valore così grande rispetto al valore predefinito di 64?
Greole,

4
la dimensione del blocco predefinita di 1024 byte moltiplicata per il valore predefinito di 64 blocchi alla volta porta a 64 KB elaborati per ogni richiesta. Con i dischi moderni con una velocità di trasmissione fino a 150 MiB / s, ciò comporta un sovraccarico maggiore di quello con cui mi sento a mio agio. Voglio dare all'unità la possibilità di elaborare i dati nel modo più efficiente senza attendere i dati sul bus.
user228505

Dice: / dev / sda è apparentemente in uso dal sistema; non è sicuro eseguire badblocks!
Dim

1
@Dims Ti dice di non eseguirlo su un disco montato attivamente. Smonta prima il disco. Nel tuo caso potrebbe essere l'unità di sistema. Quindi avvia prima un sistema di salvataggio.
user228505,

2
@Dims Esiste l'opzione -force se si desidera eseguirla comunque. cioè sudo badblocks -svvn -c 262144 / dev / sda -force
ADR
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.