Il filesystem dei settori danneggiati del disco rigido dipende dal filesystem?


3

Mi chiedevo dove siano memorizzati i settori difettosi sul disco rigido: - in un'area indipendente dal filesystem, in modo che se il disco rigido viene formattato di nuovo con lo stesso / diverso filesystem, si mostreranno come difettosi?

Lo chiedo perché il disco rigido del mio PVR digitale satellitare mostrava un comportamento errato, quindi ho collegato l'HD al mio PC, tuttavia poiché utilizza un filesystem proprietario (XTV), l'ho formattato con NTFS e rilasciato CHKDSK / F / R per verificare i settori: di conseguenza 24 settori sono stati contrassegnati come non validi.

Smontato il disco e collegato al PVR, il disco è stato reinizializzato con il filesystem XTV.

A questo punto mi chiedo se i settori contrassegnati come difettosi siano ancora contrassegnati o meno


Oltre alle risposte che stai ricevendo e alle cose che fai per riparare / sostituire il disco: potresti voler esaminare il comportamento del disco rigido dei PVR: alcuni di essi hanno i loro dischi rigidi in esecuzione quando non è necessario. Soprattutto se eseguono operazioni di scrittura non necessarie che riducono la durata del disco. Non sono riuscito a trovare molte informazioni su Google per "" videoregistratore "in esecuzione tutto il tempo" ", ma se stai pensando di sostituire l'unità, verifica anche la sostituzione dell'intero PVR. Tieni conto anche della tua bolletta elettrica.
Jan Doggen,

1
In generale, sia il microcodice del disco di basso livello sia il file system hanno strategie settoriali errate. Il microcodice utilizzerà i settori "di riserva" che ha (alcuni dei quali molto probabilmente potrebbero essere stati utilizzati per difetti di fabbricazione) mentre il file system (di nuovo, "in generale") "assegnerà" i settori danneggiati che trova (fondamentalmente dopo il "riserva" trabocca di aree) in un "file" di settore danneggiato. Dal momento che potrebbero essersi riscontrati difetti superficiali durante la formattazione della produzione, alcuni settori danneggiati nell'area "di riserva" non sono necessariamente indicativi di un problema, sebbene 24 sia probabilmente più di "pochi".
Daniel R Hicks,

Risposte:


2

I settori danneggiati del disco sono indipendenti dal FileSystem .

Esistono due elenchi di settori danneggiati che sono memorizzati nel disco nell'area denominata SystemArea che è anche sul piatto e precede i settori accessibili all'utente (ad es. OS) e sono gestiti dal disco stesso. I loro nomi sono P-List e G-List. L'elenco P è l'Elenco principale che viene scritto perennemente sul disco dopo che è stato prodotto e testato da settori difettosi. La G-List è Grown List gestita e gestita al volo. Dopo un po 'di tempo i settori possono andare male magneticamente, il che è assolutamente normale o possono andare male a causa di errori ECC. Con queste e altre cause al volo, la G-List tiene traccia dei settori danneggiati che puoi vedere. Esistono ovviamente alcuni strumenti su disco che è possibile manipolare solo G-List e G-List. Non è possibile modificare il contenuto di P-List.

Un file system può anche tenere traccia dei settori danneggiati. Puoi pensare a questo come a considerazioni sulla velocità di accesso. E quel meccanismo di tracciamento dipende dalle FS, purtroppo. Non possiamo dire "Oh, il mio fs sta mantenendo correttamente il tracking dei settori danneggiati" fino a quando non vediamo il codice sorgente di quel fs stesso. Non sappiamo se aggiorna G-List dal disco o meno quando si emette un formato del disco o un controllo del disco, come dovrebbe, per la sincronizzazione con settori danneggiati reali.

Tornando alla tua domanda originale, un file system deve essere una delle parti più sofisticate di un sistema operativo e il tuo file system XTV dovrebbe, dovrebbe farlo con i tracciamenti del settore fisico difettoso.


Giusto. Alcuni file system riconosceranno che è stato rimappato un settore danneggiato dal microcodice del disco e salteranno usando l'intero blocco, in modo che le prestazioni del disco non siano influenzate.
Daniel R Hicks,

@The_aLiEn, quello che hai scritto sembra contraddire la risposta di Sergey ... afferma che i settori danneggiati vengono mantenuti nelle strutture del filesystem .... Chissà se la G-List viene aggiornata una volta che un errore viene intercettato a livello di filesystem?
Riccardo,

1
@Riccardo la sua affermazione non è sbagliata ma un po 'breve. Come dicevo, un file system può e dovrebbe e, come tutti sappiamo, mantiene su se stesso i cattivi tracciamenti del settore. Ma questo non è l'unico posto in cui i settori vengono monitorati. Il tracciamento del file system è il punto di vista del software. La potenza hardware è la lista che ho menzionato sopra. E ancora: We don't know whether it updates G-List from the disk or not when issuing a disk format or a disk check, **as it should**, to sync with real bad sectors.un FileSystem dovrebbe sincronizzarsi con la G-List, dove sync significa bidirezionale;)
The_aLiEn

2
Ho ricevuto una dichiarazione da un tecnico WDC, sostenendo che la G-List viene aggiornata quando il sistema operativo trova un settore danneggiato
Riccardo,

Questa è una buona notizia. Ciò significa che ora sappiamo che i file system sul mercato in realtà hanno implementazioni per il rilevamento del settore danneggiato a livello di hardware che stavo indicando come "dovrebbe". Ma, rispondo al mio argomento originale, è il file system che [dovrebbe] aggiornare [s] la G-List e il file system soggetto XTV deve avere tale implementazione. Non c'è bisogno di essere così sospettosi al riguardo, sto pensando che stia facendo il suo lavoro su tutte queste sincronizzazioni.
The_aLiEn

1

La cosa migliore che puoi fare con un disco che ha già 24 settori danneggiati è di buttarlo via e sostituirlo con uno nuovo (spero che il tuo PVR non sia bloccato su un particolare disco e accetti tale sostituzione). Se il disco ha iniziato a funzionare male, di solito il processo non si interrompe e presto vedrai migliaia di settori danneggiati o un errore completo del disco. Oppure il disco potrebbe diventare molto lento, con conseguente interruzione della registrazione o della riproduzione quando lo si utilizza in un PVR.

Per quanto riguarda la tua domanda, il CHKDSK /F /Rcomando segna settori danneggiati solo a livello di file system: le informazioni su tali settori vengono archiviate solo nelle strutture NTFS e vanno perse quando il disco viene riformattato. Quindi ora hai un disco con 24 settori illeggibili, ma il tuo PVR non ne sa nulla e proverà felicemente a usare quei settori.

Tuttavia, i dischi rigidi sono in grado di eseguire la rimappatura dei settori danneggiati: esiste un "Elenco dei difetti sviluppati" memorizzato sul disco stesso, che viene utilizzato per reindirizzare i tentativi di accedere a settori che sono andati male in un'area di riserva. Questo rimappatura non è visibile al computer (o a qualsiasi altro dispositivo che utilizza il disco), tranne quando si utilizzano speciali utility di basso livello.

La rimappatura di solito è innescata da un tentativo di scrivere in un settore che è stato precedentemente osservato come illeggibile dal disco. Quindi potresti provare a ignorare il problema e sperare in meglio, perché il tuo PVR non dovrebbe provare a leggere quei settori che non ha ancora scritto dopo la riformattazione e il disco conosce quei 24 settori danneggiati (perché ha provato a leggerli durante il CHKDSKtest) e dovrebbero rimapparli quando alcuni dati sono scritti lì. Ovviamente, questo non aiuterà se alcuni altri settori andranno male in seguito (il che è molto probabile che accada con un disco che ha iniziato a rompersi).

Un'altra cosa che puoi fare è visitare il sito Web del produttore del disco e scaricare un'utilità di test del disco (ad es. SeaTools per un disco Seagate), quindi collegare il disco al computer ed eseguire un test multimediale completo. Questa utility potrebbe essere in grado di forzare la rimappatura dei settori danneggiati dal disco, in modo che il disco non sembri avere settori danneggiati quando vi si accede in modo normale (almeno mentre non appaiono altri settori danneggiati a causa del continuo deterioramento del disco). Se il disco è in una forma particolarmente difettosa, l'utilità potrebbe mostrare che richiede la sostituzione (ma avere solo alcuni settori danneggiati che potrebbero essere rimappati di solito non è considerato un problema grave da queste utilità).

Tieni presente che se scegli di eseguire l'utilità di test del produttore del disco, devi collegare il disco direttamente a un controller SATA (o IDE, se il disco e il computer sono obsoleti) e non tramite un adattatore esterno con un'interfaccia USB o FireWire, perché l'utilità del disco deve essere in grado di inviare comandi ATA arbitrari al disco, il che non è possibile quando si utilizzano molti chip controller USB-SATA o FireWire-SATA (e anche se è possibile, molto probabilmente l'utilità non lo supporta). In alcuni casi potrebbe essere necessario modificare le impostazioni del BIOS per far funzionare l'utility del disco (ad esempio, disabilitare la modalità AHCI o RAID se non sono supportate dall'utility); in questo caso è necessario prestare particolare attenzione al ripristino di tali impostazioni, altrimenti il ​​sistema operativo potrebbe non avviarsi più (o, peggio ancora, un array RAID potrebbe essere distrutto se si utilizzava la modalità RAID).


0

In breve, se si osservano blocchi poveri in uno dei file system, è probabile che l'area di servizio per reindirizzare il settore danneggiato sia piena. Ti suggerisco di dare questo nemico HDD)).

Vedi errore del disco su eventlog:

powershell Get-Eventlog system -newest 10 -EntryType Error -Source Disk

Vedi tutti gli eventi del disco su eventlog:

powershell Get-Eventlog system -Source Disk

Verifica lo stato SMART, smartChk.vbs:

Dim strComputer 
Dim strLogin 
Dim strPassword 
On Error Resume Next 

strComputer = "."

If strLogin = "" or strComputer = "." then 
   Set    objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\WMI") 
else 
   Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator") 
   Set objWMIService = objSWbemLocator.ConnectServer(strComputer, _ 
  "root\CIMV2", _ 
  strLogin, _ 
  strPassword, _ 
  "MS_409") 
end If 

Set    SmartDataItems = objWMIService.ExecQuery("SELECT * FROM MSStorageDriver_FailurePredictData", "WQL", 48) 

    InstanceName = Array() 
    SmartData = Array() 
    SmartLength = Array() 
    RowCount = 0 
    For Each objItem In SmartDataItems 
      Redim Preserve InstanceName(RowCount) 
      InstanceName(RowCount) = objItem.InstanceName 
      Redim Preserve SmartData(RowCount) 
      SmartData(RowCount) = objItem.VendorSpecific 
      Redim Preserve SmartLength(RowCount) 
      SmartLength(RowCount) = objItem.Length 
      RowCount = RowCount + 1 
Next 
Set    SmartDataItems = Nothing 

ThresholdData = Array() 
Redim Preserve ThresholdData(RowCount) 
PredictFailure = Array() 
Redim Preserve PredictFailure(RowCount) 
Reason = Array() 
Redim Preserve Reason(RowCount) 

RowCount = 0 
    Set    ThresholdItems = objWMIService.ExecQuery("SELECT * FROM MSStorageDriver_FailurePredictThresholds", "WQL", 48) 
For Each objItem In ThresholdItems 
      ThresholdData(RowCount) = objItem.VendorSpecific 
      RowCount = RowCount + 1 
Next 
Set    ThresholdItems = Nothing 

RowCount = 0 
    Set    PredictStatusItems = objWMIService.ExecQuery("SELECT * FROM MSStorageDriver_FailurePredictStatus", "WQL", 48) 
    For Each objItem In PredictStatusItems 
          PredictFailure(RowCount) = objItem.PredictFailure 
          Reason(RowCount) = objItem.Reason 
          RowCount = RowCount + 1 
    Next 
Set    PredictStatusItems = Nothing 

Set oDict = CreateObject("Scripting.Dictionary") 
CreateDict(oDict) 

Set objFSO = CreateObject("Scripting.FileSystemObject") 

If strComputer = "." then 
   Set objTextFile = objFSO.OpenTextFile("HDD_Smart.csv", 2, True) 
else 
   Set objTextFile = objFSO.OpenTextFile("HDD_Smart_" & strComputer & ".csv", 2, True) 
end If 

For CurrentDisk = 0 to RowCount - 1 
     objTextFile.WriteLine("Drive: " & Replace(Mid(InstanceName(CurrentDisk), 9, InStr(InstanceName(CurrentDisk), "__") - 9), "_", " ")) 
     objTextFile.WriteLine("PredictFailure: " & PredictFailure(CurrentDisk)) 
     objTextFile.WriteLine("Reason: " & Reason(CurrentDisk)) 
     objTextFile.WriteLine("ID;Attribute;Type;Flag;Threshold;Value;Worst;Raw;Status;") 
     aSmartData = SmartData(CurrentDisk) 
     aThresholdData = ThresholdData(CurrentDisk) 

     If IsArray(aSmartData) AND IsArray(aThresholdData) Then 
         LastID = 0 
         For x = 2 To SmartLength(CurrentDisk) + 2 Step 12 
              If LastID > aSmartData(x)  then 
                 x = 514 
              else 
                 LastID = aSmartData(x)                      

              If aSmartData(x) <> 0 Then 
                  objTextFile.Write(aSmartData(x) & ";") 
                  If oDict.Item(aSmartData(x)) = "" Then 
                        objTextFile.Write("VendorSpecific(" & aSmartData(x) & ");") 
                  else 
                        objTextFile.Write(oDict.Item(aSmartData(x)) & ";") 
                  end If 

                  If aSmartData(x + 1) MOD 2 Then 
                        objTextFile.Write("Pre-Failure;") 
                  Else 
                        objTextFile.Write("Advisory;") 
                  End If 

'                      objTextFile.Write(aSmartData(x + 1) & ";") 
                  aFlag = aSmartData(x + 1) 
                  txtFlag = "" 
                  If (aFlag And &H1) <> 0 Then txtFlag = "LC," End If 
                  If (aFlag And &H2) <> 0 Then txtFlag = txtFlag & "OC," End If 
                  If (aFlag And &H4) <> 0 Then txtFlag = txtFlag & "PR," End If 
                  If (aFlag And &H8) <> 0 Then txtFlag = txtFlag &  "ER," End If 
                  If (aFlag And &H10) <> 0 Then txtFlag = txtFlag &  "EC," End If 
                  If (aFlag And &H20) <> 0 Then txtFlag = txtFlag &  "SP," End If 
                  If txtFlag <> "" then 
                     txtFlag = Left(txtFlag, Len(txtFlag)-1 ) 
                  end If 
                  objTextFile.Write txtFlag & ";" 

                  objTextFile.Write(aThresholdData(x + 1) & ";") 'Threshold 
                  objTextFile.Write(aSmartData(x + 3) & ";")      'Value 
                  objTextFile.Write(aSmartData(x + 4) & ";")      'Worst 
                  objTextFile.Write((aSmartData(x + 8) * 65536 + aSmartData(x + 7) * 4096 + aSmartData(x + 6) * 256 + aSmartData(x + 5)) & ";")      'Raw 
                  If aSmartData(x + 3) >= aThresholdData(x + 1) Then 
                       objTextFile.WriteLine("OK;") 
                  else 
                       objTextFile.WriteLine("NOT OK;") 
                  end If 
              end If 
              end If 
         Next 
         else 
             objTextFile.WriteLine("NO DRIVE WITH SMART FOUND;") 
         end If 
         objTextFile.WriteLine 
    Next 

    objTextFile.WriteLine 
    objTextFile.WriteLine("LC - life critical;") 
    objTextFile.WriteLine("OC - online collection;") 
    objTextFile.WriteLine("PR - performance related;") 
    objTextFile.WriteLine("ER - error rate;") 
    objTextFile.WriteLine("EC - event count;") 
    objTextFile.WriteLine("SP - self preserving;") 
    objTextFile.Close 

    Wscript.echo "HDD_SMART Is Done!" 

Function CreateDict(oDict) 
    oDict.Add 1, "Raw Read Error Rate" 
    oDict.Add 2, "Throughput Performance" 
    oDict.Add 3, "Spin-Up Time" 
    oDict.Add 4, "Start/Stop Count" 
    oDict.Add 5, "Reallocated Sectors Count" 
    oDict.Add 6, "Read Channel Margin" 
    oDict.Add 7, "Seek Error Rate Rate" 
    oDict.Add 8, "Seek Time Performance" 
    oDict.Add 9, "Power-On Hours (POH)" 
    oDict.Add 10, "Spin Retry Count" 
    oDict.Add 11, "Recalibration Retries Count" 
    oDict.Add 12, "Device Power Cycle Count" 
    oDict.Add 13, "Soft Read Error Rate" 
    oDict.Add 184,"End-to-End error"
    oDict.Add 187,"Reported UNC Errors"
    oDict.Add 190,"Airflow Temperature (WDC)"
'    oDict.Add 190, "HDA Temperature" 
    oDict.Add 191, "G-Sense Error Rate Frequency" 
    oDict.Add 192, "Power-Off Park Count" 
    oDict.Add 193, "Load/Unload Cycle Count" 
    oDict.Add 194, "HDA Temperature" 
    oDict.Add 195, "Hardware ECC Corrected Count" 
    oDict.Add 196, "Reallocated Event Count" 
    oDict.Add 197, "Current Pending Sector Count" 
    oDict.Add 198, "Off-Line Scan Uncorrectable Sector Count" 
    oDict.Add 199, "UltraDMA CRC Error Count" 
    oDict.Add 200, "Write Error Rate" 
    oDict.Add 201, "Soft Read Error Rate" 
    oDict.Add 202, "Address Mark Errors Frequency" 
    oDict.Add 203, "ECC errors (Maxtor: ECC Errors)" 
    oDict.Add 204, "Soft ECC Correction" 
    oDict.Add 205, "Thermal Asperity Rate (TAR)" 
    oDict.Add 206, "Flying Height" 
    oDict.Add 207, "Spin High Current" 
    oDict.Add 208, "Spin Buzz" 
    oDict.Add 209, "Offline Seek Perfomance" 
    oDict.Add 210, "Vibration During Write" 
    oDict.Add 211, "Vibration During Read" 
    oDict.Add 212, "Shock During Write" 
    oDict.Add 220, "Disk Shift" 
    oDict.Add 221, "G-Sense Error Rate" 
    oDict.Add 222, "Loaded Hours" 
    oDict.Add 223, "Load/Unload Retry Count" 
    oDict.Add 224, "Load Friction" 
    oDict.Add 225, "/Unload Cycle Count" 
    oDict.Add 226, "Load 'In'-time" 
    oDict.Add 227, "Torque Amplification Count" 
    oDict.Add 228, "Power-Off Retract Cycle" 
    oDict.Add 230, "GMR Head Amplitude" 
    oDict.Add 231, "Temperature"
    oDict.Add 240, "Head Flying Hours" 
    oDict.Add 250, "Read Error Retry Rate" 
End Function 

Avere settori illeggibili non significa che l'area di riserva sia piena: la rimappatura viene eseguita solo quando viene riscritto un settore danneggiato (o, in alcuni casi molto rari, quando il disco è riuscito a leggere un settore dopo un numero elevato di tentativi). In caso di errori di scrittura , tuttavia, il disco deve essere sicuramente spostato in un cestino.
Sergey Vlasov,

@SergeyVlasov Con esso è possibile rimuovere la piastra di copertura e cospargere con alcool o acqua))) Perché solo nel secchio?
STTR,
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.