Tentativo di rimuovere / diagnosticare singolo Current_Pending_Sector nei dati SMART


18

Sono in procinto di eseguire una nuova installazione di Linux e prima di procedere ho pensato che fosse un buon momento per verificare lo stato dell'HDD poiché, se necessario, posso sovrascrivere in modo sicuro tutti i dati sull'HDD.

Per prima cosa ho provato a controllare con smartmontools ... Il mio Seagate HDD riporta un settore in sospeso e uno non correggibile offline (presumibilmente lo stesso). Il conteggio dei settori riallocato è zero.

5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       0
...
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       1
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       1

Tuttavia, gli autotest SMART (brevi, lunghi, offline, di trasporto) non rilevano errori.

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Completed without error       00%      6631         -
# 2  Conveyance offline  Completed without error       00%      6630         -
# 3  Extended offline    Completed without error       00%      6622         -
# 4  Short offline       Completed without error       00%      6600         -
# 5  Extended offline    Completed without error       00%      6632         -

Ho anche provato a eseguire badblocks -wsv (test di passaggio 4 pattern in lettura / scrittura completo) sull'unità e non sono stati trovati blocchi danneggiati. Ho quindi seguito la guida (per quanto possibile, dal momento che ho eliminato il mio filesystem dopo aver eseguito i badblock) trovata qui: http://smartmontools.sourceforge.net/badblockhowto.html

Lì dice che se sovrascrivo il settore con tutti gli zeri il disco dovrebbe spostare (riallocare) il settore in sospeso. L'ultimo modello di scrittura dei Badblock è tutto a zero, quindi avrebbe dovuto farlo. tuttavia non è cambiato nulla Ho ancora quel conteggio di settore in sospeso 1.
Ho quindi provato a capire quale settore è quello problematico e nell'output SMART c'è un registro degli errori:

Error 2 occurred at disk power-on lifetime: 5344 hours (222 days + 16 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  84 51 7c 1b 1a 02 ae  Error: ABRT at LBA = 0x0e021a1b = 235018779

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  20 20 7f 18 1a 02 ae 00      00:09:05.228  READ SECTOR(S)
  20 20 01 17 1a 02 ae 00      00:09:05.228  READ SECTOR(S)
  20 20 01 01 00 00 a0 00      00:08:59.830  READ SECTOR(S)
  91 20 3f 01 00 00 af 00      00:08:59.826  INITIALIZE DEVICE PARAMETERS [OBS-6]
  10 20 01 01 00 00 a8 00      00:08:59.678  RECALIBRATE [OBS-4]

Error 1 occurred at disk power-on lifetime: 5009 hours (208 days + 17 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 00 b7 8c 02 e0  Error: UNC at LBA = 0x00028cb7 = 167095

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  25 20 1e 9e 8c 02 e0 00      00:02:20.691  READ DMA EXT
  25 20 1e 80 8c 02 e0 00      00:02:20.691  READ DMA EXT
  25 20 1e 62 8c 02 e0 00      00:02:20.690  READ DMA EXT
  25 20 1e 44 8c 02 e0 00      00:02:20.690  READ DMA EXT
  25 20 1e 26 8c 02 e0 00      00:02:20.690  READ DMA EXT

Quindi a quanto pare l'unità ha avuto due errori.

84 51 7c 1b 1a 02 ae  Error: ABRT at LBA = 0x0e021a1b = 235018779

e

40 51 00 b7 8c 02 e0  Error: UNC at LBA = 0x00028cb7 = 167095

Quindi ho pensato che questi fossero i numeri di settore: 167095 e 235018779. E ho provato a scrivere zeri con dd:

dd if=/dev/zero of=/dev/sda bs=512 count=1 seek=167095

Ora quello ha fatto bene. Tuttavia, quando ho provato con l'altro settore:

dd if=/dev/zero of=/dev/sda bs=512 count=1 seek=235018779

Ottengo dd: '/ dev / sda': impossibile cercare: argomento non valido . Ho quindi notato che il mio HDD ha solo 234441658 settori. Quindi questo è fuori portata. Ma allora perché SMART ha segnalato un errore su quell'indirizzo ?!

Qualcuno può aiutarmi a capirlo e anche consigliarmi come farlo correttamente se sto sbagliando? Sospetto che forse sbaglio nell'usare la dimensione del blocco 512 con dd. Questa è la dimensione del settore segnalata da SMART. forse quegli indirizzi LBA sono byte non blocchi, ho provato a impostare bs = 1 e scrivere solo un byte su quegli indirizzi sull'HDD. Ha funzionato (processo di scrittura dd) ... Tuttavia, il conteggio dei settori in sospeso non è cambiato dopo. Ho anche chiamato sync e smartctl -t offline / dev / sda per provare a "forzare" l'unità a riallocare il settore. Niente...

Ecco il mio pieno smartctl --all / dev / sda output:

smartctl 5.43 2012-06-30 r3573 [i686-linux-2.6.32-358.el6.i686] (local build)
Copyright (C) 2002-12 by Bruce Allen, http://smartmontools.sourceforge.net

=== START OF INFORMATION SECTION ===
Model Family:     Seagate Barracuda 7200.9
Device Model:     ST3120811AS
Serial Number:    6PT1N4VZ
Firmware Version: 3.AAE
User Capacity:    120,034,123,776 bytes [120 GB]
Sector Size:      512 bytes logical/physical
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   7
ATA Standard is:  Exact ATA specification draft version not indicated
Local Time is:    Mon Nov 18 12:03:00 2013 UTC
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status:  (0x82) Offline data collection activity
                    was completed without error.
                    Auto Offline Data Collection: Enabled.
Self-test execution status:      (   0) The previous self-test routine completed
                    without error or no self-test has ever 
                    been run.
Total time to complete Offline 
data collection:        (  430) seconds.
Offline data collection
capabilities:            (0x5b) SMART execute Offline immediate.
                    Auto Offline data collection on/off support.
                    Suspend Offline collection upon new
                    command.
                    Offline surface scan supported.
                    Self-test supported.
                    No Conveyance Self-test supported.
                    Selective Self-test supported.
SMART capabilities:            (0x0003) Saves SMART data before entering
                    power-saving mode.
                    Supports SMART auto save timer.
Error logging capability:        (0x01) Error logging supported.
                    General Purpose Logging supported.
Short self-test routine 
recommended polling time:    (   1) minutes.
Extended self-test routine
recommended polling time:    (  51) minutes.

SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   084   077   006    Pre-fail  Always       -       185600113
  3 Spin_Up_Time            0x0003   095   095   000    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   098   098   020    Old_age   Always       -       2185
  5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000f   073   055   030    Pre-fail  Always       -       25890559714
  9 Power_On_Hours          0x0032   093   093   000    Old_age   Always       -       6632
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   098   098   020    Old_age   Always       -       2229
187 Reported_Uncorrect      0x0032   099   099   000    Old_age   Always       -       1
189 High_Fly_Writes         0x003a   100   100   000    Old_age   Always       -       0
190 Airflow_Temperature_Cel 0x0022   071   056   045    Old_age   Always       -       29 (Min/Max 25/29)
194 Temperature_Celsius     0x0022   029   044   000    Old_age   Always       -       29 (0 13 0 0 0)
195 Hardware_ECC_Recovered  0x001a   052   046   000    Old_age   Always       -       194244099
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       1
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       1
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0
200 Multi_Zone_Error_Rate   0x0000   100   253   000    Old_age   Offline      -       0
202 Data_Address_Mark_Errs  0x0032   066   219   000    Old_age   Always       -       34

SMART Error Log Version: 1
ATA Error Count: 2
    CR = Command Register [HEX]
    FR = Features Register [HEX]
    SC = Sector Count Register [HEX]
    SN = Sector Number Register [HEX]
    CL = Cylinder Low Register [HEX]
    CH = Cylinder High Register [HEX]
    DH = Device/Head Register [HEX]
    DC = Device Command Register [HEX]
    ER = Error register [HEX]
    ST = Status register [HEX]
Powered_Up_Time is measured from power on, and printed as
DDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes,
SS=sec, and sss=millisec. It "wraps" after 49.710 days.

Error 2 occurred at disk power-on lifetime: 5344 hours (222 days + 16 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  84 51 7c 1b 1a 02 ae  Error: ABRT at LBA = 0x0e021a1b = 235018779

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  20 20 7f 18 1a 02 ae 00      00:09:05.228  READ SECTOR(S)
  20 20 01 17 1a 02 ae 00      00:09:05.228  READ SECTOR(S)
  20 20 01 01 00 00 a0 00      00:08:59.830  READ SECTOR(S)
  91 20 3f 01 00 00 af 00      00:08:59.826  INITIALIZE DEVICE PARAMETERS [OBS-6]
  10 20 01 01 00 00 a8 00      00:08:59.678  RECALIBRATE [OBS-4]

Error 1 occurred at disk power-on lifetime: 5009 hours (208 days + 17 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 00 b7 8c 02 e0  Error: UNC at LBA = 0x00028cb7 = 167095

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  25 20 1e 9e 8c 02 e0 00      00:02:20.691  READ DMA EXT
  25 20 1e 80 8c 02 e0 00      00:02:20.691  READ DMA EXT
  25 20 1e 62 8c 02 e0 00      00:02:20.690  READ DMA EXT
  25 20 1e 44 8c 02 e0 00      00:02:20.690  READ DMA EXT
  25 20 1e 26 8c 02 e0 00      00:02:20.690  READ DMA EXT

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Completed without error       00%      6631         -
# 2  Conveyance offline  Completed without error       00%      6630         -
# 3  Extended offline    Completed without error       00%      6622         -
# 4  Short offline       Completed without error       00%      6600         -
# 5  Extended offline    Completed without error       00%      6632         -

SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

AGGIORNARE:

Come suggerito nella risposta di Rob, ho provato a sovrascrivere l'intero HDD con zero. Controllato i valori SMART e quindi iniziato a leggere l'intero HDD. Ancora una volta controllato i valori SMART. Il risultato è: i valori SMART relativi al conteggio dei settori in sospeso / riallocati non cambiano, in entrambi i casi, immediatamente dopo la scrittura e quindi dopo la lettura. Riassegnato 0. In attesa 1.


1
Immagino che il tuo disco abbia 234441658 settori, ma i settori di backup rimappati al posto di settori danneggiati non contano in questo numero.
gronostaj,

Hmm, quindi quell'errore nel settore 235018779 significherebbe un errore nei settori di backup ... È possibile?
Ivan Kovacevic,

1
Bene, anche i settori di backup possono essere corrotti. Altrimenti realizzeremmo hard disk "immortali" solo da settori di backup.
gronostaj,

:) ... Beh, il mio ragionamento era che i settori di backup non sono in uso (e quindi sicuri). Ho presunto che la superficie dell'HDD possa essere danneggiata solo se le testine del disco fanno delle azioni improprie, a causa di un'interruzione di corrente o qualcosa del genere.
Ivan Kovacevic,

1
Supponendo che il settore 235018779 sia un settore di backup. Ciò significa che dovrei avere almeno 235018779 - 234441658 = 577121 settori di backup. Sono quasi 282 MB nei settori di backup. Mi sembra molto (troppo). O è? Stai solo pensando ad alta voce, forse non è un settore di backup ma un problema tecnico nella diagnostica SMART?
Ivan Kovacevic,

Risposte:


15

Un settore è contrassegnato in sospeso quando una lettura fallisce. Il settore in sospeso verrà contrassegnato riallocato se una scrittura successiva non riesce. Se la scrittura ha esito positivo, viene rimossa dagli attuali settori in sospeso e si presume che sia ok. (Il comportamento esatto potrebbe differire leggermente e lo esaminerò più avanti, ma questa è un'approssimazione abbastanza vicina per ora.)

Quando corri badblocks -w, ogni modello viene prima scritto, quindi letto. È possibile che la scrittura nel settore instabile abbia esito positivo ma la lettura successiva non riesca, il che lo aggiunge nuovamente all'elenco dei settori in sospeso. Proverei a scrivere zero su tutto il disco con dd if=/dev/zero of=/dev/sda, controllando lo stato SMART, quindi leggendo l'intero disco con dd if=/dev/sda of=/dev/nulle controllando di nuovo lo stato SMART.

Aggiornare:

Sulla base dei tuoi risultati precedenti con badblocks -w, mi sarei aspettato che il settore in sospeso venisse cancellato dopo aver scritto l'intero disco. Ma dal momento che ciò non è accaduto, è sicuro dire che questo disco non si comporta come previsto.

Rivediamo la descrizione del conteggio attuale del settore in sospeso :

Conteggio dei settori "instabili" (in attesa di essere rimappato, a causa di errori di lettura irrecuperabili). Se un settore instabile viene successivamente letto correttamente, il settore viene rimappato e questo valore viene ridotto. Gli errori di lettura su un settore non rimapperanno immediatamente il settore (poiché il valore corretto non può essere letto e quindi il valore da rimappare non è noto, e potrebbe diventare leggibile in seguito); invece, il firmware dell'unità ricorda che il settore deve essere rimappato e lo rimappa la prossima volta che viene scritto. [29] Tuttavia, alcune unità non rimappano immediatamente tali settori quando vengono scritte; invece l'unità tenterà prima di scrivere nel settore problematico e se l'operazione di scrittura ha esito positivo, il settore verrà contrassegnato come valido (in questo caso, il "Conteggio eventi di riallocazione" (0xC4) non verrà aumentato).

Ora passiamo in rassegna i punti importanti:

... il firmware dell'unità ricorda che il settore deve essere rimappato e lo rimappa la prossima volta che viene scritto. [29] Tuttavia, alcune unità non rimappano immediatamente tali settori quando vengono scritte; invece l'unità tenterà prima di scrivere nel settore problematico e se l'operazione di scrittura ha esito positivo, il settore verrà contrassegnato come valido.

In altre parole, il settore in sospeso avrebbe dovuto essere rimappato immediatamente oppure l'unità avrebbe dovuto tentare di scrivere nel settore e una delle due cose avrebbe dovuto accadere:

  1. La scrittura non è riuscita, nel qual caso il settore in sospeso avrebbe dovuto essere rimappato.
  2. La scrittura è riuscita, nel qual caso il settore in sospeso avrebbe dovuto essere eliminato ("contrassegnato come buono").

Ho accennato a questo in precedenza, ma la descrizione di Wikipedia del settore attuale in sospeso suggerisce che l' attuale conteggio del settore in sospeso dovrebbe essere sempre zero dopo una scrittura completa del disco . Dato che qui non è il caso, possiamo concludere che (a) Wikipedia è errata (o almeno errata per l'unità) o (b) il firmware dell'unità non è in grado di gestire correttamente questo stato di errore (che considererei un bug del firmware ).

Se un settore instabile viene successivamente letto correttamente, il settore viene rimappato e questo valore viene ridotto.

Poiché l'attuale conteggio del settore in sospeso è ancora invariato dopo aver letto l'intero disco, possiamo affermare che (a) il settore non è stato letto correttamente o (b) il settore è stato letto e contrassegnato correttamente, ma si è verificato un errore durante la lettura di un settore diverso. Ma poiché il conteggio del settore riallocato è ancora 0 dopo la lettura, possiamo escludere (b) come possibilità e possiamo concludere che il settore in sospeso era ancora illeggibile.

A questo punto, sarebbe utile sapere se l'unità ha registrato nuovi errori SMART. Il mio prossimo suggerimento sarebbe stato quello di verificare se Seagate ha un aggiornamento del firmware per l'unità, ma sembra che non lo facciano.

Anche se sconsiglio di continuare a utilizzare questa unità, sembra che tu possa essere disposto ad accettare i rischi connessi (vale a dire che potrebbe continuare ad agire in modo irregolare e / o potrebbe ulteriormente degradare o fallire catastroficamente). In tal caso, puoi provare a installare Linux, avviare da un CD di ripristino, quindi (con i filesystem non montati) utilizzare e2fsck -l nomefile per contrassegnare manualmente il blocco appropriato come non valido. (Assicurati solo di mantenere buoni backup!)

e2fsck -l nomefile

Aggiungere i numeri di blocco elencati nel file specificato dal nome file all'elenco dei blocchi danneggiati. Il formato di questo file è lo stesso di quello generato dal programma badblocks (8). Si noti che i numeri di blocco si basano sulla dimensione del blocco del file system. Pertanto, per ottenere risultati corretti, ai blocchi di blocchi (8) deve essere data la dimensione di blocco del filesystem. Di conseguenza, è molto più semplice e sicuro usare l'opzione -c per e2fsck, poiché assicurerà che i parametri corretti vengano passati al programma badblocks.

(Nota che e2fsck -cè preferibile e2fsck -l filename, e potresti anche voler provarlo, ma sulla base dei tuoi risultati finora, dubito fortemente che e2fsck -c troverà eventuali blocchi danneggiati.)

Ovviamente, dovrai fare un po 'di aritmetica per convertire l'LBA del settore difettoso (come fornito da SMART) in un numero di blocco del filesystem. Il Bad Blocks HowTo fornisce una formula utile:

  b = (int)((L-S)*512/B)
where:
b = File System block number
B = File system block size in bytes
L = LBA of bad sector
S = Starting sector of partition as shown by fdisk -lu
and (int) denotes the integer part.

Il HowTo contiene anche un esempio completo usando questa formula. Dopo aver installato il sistema operativo, è possibile confermare se un file occupa il settore instabile utilizzando debugfs (consultare la Guida per istruzioni dettagliate).

Un'altra opzione: partizione attorno al blocco sospetto sospetto Quando si installa il sistema operativo, è possibile provare anche a partizionare attorno all'errore. Se ho fatto bene la mia aritmetica, l'errore è di circa 81.589 MB, quindi può rendere / avviare un po 'piccolo e avviare la prossima partizione dopo il settore 167095, oppure saltare i primi 82 MB o così completamente.

ABRT 235018779 Sfortunatamente, per quanto riguarda l'errore ABRT nel settore 235018779, possiamo solo speculare, ma le specifiche ATA8-ACS ci danno alcuni indizi.

Da Working Draft AT Allegato 8 - Set di comandi ATA / ATAPI (ATA8-ACS) :

6.2.1 Bit di errore Abort (ABRT) 2. Abort deve essere impostato su uno se il comando non è supportato. Abort può essere impostato su uno se il dispositivo non è in grado di completare l'azione richiesta dal comando. Abort deve essere impostato su uno se è richiesto un indirizzo al di fuori dell'intervallo di indirizzi accessibili all'utente se IDNF non è impostato su uno.

Guardando i comandi che portano all'ABRT (diversi READ SECTOR (S) seguiti da ricalibrazione e reinizializzazione) ...

Abort deve essere impostato su uno se il comando non è supportato. - Sembra improbabile.

Abort può essere impostato su uno se il dispositivo non è in grado di completare l'azione richiesta dal comando. - Forse l'elenco P dei settori riallocati sposta gli indirizzi accessibili all'utente in modo che un indirizzo accessibile all'utente sia tradotto nel settore 235018779 e l'operazione di lettura non sia stata in grado di completare (per quale motivo, non sappiamo ... ma non si è verificato un errore CRC, quindi non credo che possiamo concludere che il settore 235018779 sia negativo).

Abort deve essere impostato su uno se è richiesto un indirizzo al di fuori dell'intervallo di indirizzi accessibili all'utente se IDNF non è impostato su uno. - Per me questo sembra molto probabile, e probabilmente lo interpreterei come il risultato di un bug del software (o il tuo sistema operativo o qualche programma che stavi eseguendo). In tal caso, non è un segnale di condanna imminente per il disco rigido.

Nel caso in cui non sei ancora stanco di eseguire la diagnostica ...

È possibile riprovare smartctl -t long /dev/sdaa vedere se produce altri errori nel registro SMART oppure è possibile lasciarlo come file X non risolto ;) e controllare periodicamente il registro SMART per vedere se si verifica nuovamente. In ogni caso, se si continua a utilizzare l'unità senza farla riallocare o cancellare il settore in sospeso, si sta già correndo un rischio.

Utilizzare un filesystem di checksum

Per un po 'più di sicurezza, potresti prendere in considerazione l'uso di un filesystem di checksum come ZFS o btrfs per proteggere dal danneggiamento dei dati di basso livello. E non dimenticare di eseguire backup frequenti se hai qualcosa che non può essere facilmente riprodotto.


Buona idea, ci proverò adesso.
Ivan Kovacevic,

1
Che ne dici di provare questo solo con quel settore difettoso 167095? :)
settimana

Naah è troppo noioso: D. Proverò prima con il settore sospetto, sicuramente un consiglio intelligente, se ciò non fa nulla lo lascerò funzionare su tutto il disco nel caso in cui ...
Ivan Kovacevic

@week che dovrebbe fare il trucco, ma sembra che abbia problemi a concentrarsi sul settore danneggiato, quindi è per questo che ho suggerito di fare l'intero disco.
rapina il

1
Se c'è ancora un settore in sospeso dopo aver scritto sull'intera unità, la rimappatura del settore danneggiato non funziona correttamente e dovresti sostituire l'unità (o, se sei un giocatore d'azzardo, continua a usarlo sapendo che potrebbe comportarsi in modo irregolare) .
rapina il

5

L'articolo Bad Sector Remapping fornisce l'algoritmo utilizzato.

Esistono due elenchi di difetti sul disco rigido:

  • L'elenco P sono difetti rilevati durante la fabbricazione e sono anche noti come difetti primari. Seguono sequenzialmente i settori normali. Un settore danneggiato indicherà la sua sostituzione utilizzando un numero di turno (prima è +1, quindi +2 ecc.).
  • G-List sono difetti che si sviluppano durante l'uso normale dell'unità e sono noti come difetti sviluppati. Non ci sono vincoli alla loro allocazione e non devono seguire in sequenza i difetti dell'elenco P. Un settore danneggiato indicherà la sua sostituzione utilizzando un semplice numero di settore.

Pertanto, il fatto che il tuo settore danneggiato sia 577121 settori oltre il normale ultimo settore non significa che tu abbia 577121 settori danneggiati, a meno che non sia un difetto dell'elenco P. Un difetto della G-list può essere posizionato ovunque, quindi è del tutto possibile che il firmware lo abbia assegnato alla fine dello spazio del settore di riserva.

Da wikipedia Attributi ATA SMART noti :

Conteggio settori riallocati

Conteggio dei settori riallocati. Quando il disco rigido rileva un errore di lettura / scrittura / verifica, contrassegna quel settore come "riallocato" e trasferisce i dati a un'area riservata speciale (area di riserva). Questo processo è anche noto come rimappatura e i settori riallocati sono chiamati "rimappa". Il valore grezzo normalmente rappresenta un conteggio dei settori danneggiati che sono stati trovati e rimappati.

Conteggio settore in sospeso corrente

Conteggio dei settori "instabili" (in attesa di essere rimappato, a causa di errori di lettura irrecuperabili). Se un settore instabile viene successivamente letto correttamente, il settore viene rimappato e questo valore viene ridotto. Gli errori di lettura su un settore non rimapperanno immediatamente il settore (poiché il valore corretto non può essere letto e quindi il valore da rimappare non è noto, e potrebbe diventare leggibile in seguito); invece, il firmware dell'unità ricorda che il settore deve essere rimappato e lo ridisegnerà alla successiva scrittura.

Quindi, in effetti, gli errori in sospeso sono molto peggio di quelli rimappati, poiché l'errore è abbastanza difficile da impedire la lettura del contenuto originale per rimappare. In effetti, i contenuti di quel settore sono probabilmente persi per sempre.

Il documento MHDD Strumento di diagnostica del disco rigido di livello molto basso spiega i codici di errore come:

UNC : data is uncorrectable
ABRT : command was aborted

Quindi il settore 167095 non è correggibile e la lettura / scrittura su 235018779 è stata interrotta.

Poiché la scrittura in entrambi i settori non ha modificato lo stato da in sospeso a rimappato, mi sembra che anche il settore della sostituzione sia negativo. La mia teoria è che il settore 167095 è stato rimappato al settore 235018779, ma che purtroppo anche quest'ultimo è negativo e che il firmware non sa come rimappare i settori difettosi. Il risultato è un settore non correggibile.


Bell'articolo, ho sicuramente imparato qualcosa di nuovo! Tuttavia, ciò non spiega ancora perché il settore danneggiato segnalato nei log SMART sia persino nell'area del settore di riserva e non nel normale spazio utilizzabile e perché il contatore del settore in sospeso sia ancora 1 e il contatore del settore riallocato 0. Se tutto ha funzionato come dovrebbe questi due contatori avrebbero dovuto invertire i loro valori.
Ivan Kovacevic,

1
Vedi la mia modifica sopra.
harrymc,

Grazie! Informazioni fantastiche! Ora ho una domanda: poiché il 167095 non è stato rimappato, è consigliabile utilizzare questo HDD? L'HDD ha appena contrassegnato quel settore come cattivo e eviterà di usarlo in futuro. Fondamentalmente ho bisogno di decidere: posso procedere e installare Linux, o dovrei buttare via questo HDD acquistarne uno nuovo e installare Linux, oppure posso fare qualcosa (eseguire un comando) per contrassegnare quel settore come cattivo manualmente e installare Linux (mio opzione preferita).
Ivan Kovacevic,

1
Un disco di grandi dimensioni con solo due settori danneggiati non merita di essere danneggiato. Dato che i badblock hanno avuto successo, si spera che questo settore sia stato considerato negativo. Vorrei provare a installare Linux su di esso, ma farei un formato completo se la tua distribuzione può farlo durante l'installazione. Ma se questo fosse per un importante sistema di produzione, cambierei il disco, per ogni evenienza.
harrymc,
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.