Vom fehlerhaften Sektor zur "beschädigten Datei" - war es für Linux / ext3, kann ich es für Windows / NTFS tun?

17

Wenn eine SMART-Prüfung auf einer Festplatte einen fehlerhaften Sektor meldet, ist es wichtig, die Datei mit dem fehlerhaften Sektor zu identifizieren und aus Sicherungen wiederherzustellen. Im Folgenden zeige ich, wie ich dies für meinen Linux / ext3-VMWARE-Server getan habe - aber weiß jemand, ob dies für Windows / NTFS möglich ist?

So habe ich es für Linux / ext3 gemacht: Ich habe das Laufwerk zuerst gebeten, einen Hardware-Oberflächenscan durchzuführen (unterhalb der Betriebssystemebene mit den SMART-Schaltkreisen auf dem Laufwerk):

vserver:~# smartctl -t long /dev/sdc

Ich habe mir die Ergebnisse angesehen:

vserver:~# smartctl -a /dev/sdc
...
196 Reallocated_Event_Count 0x0032   100   100   000    Old_age   Always       -       1
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       9
...
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Completed: read failure       90%     27679         591363172

So wurde ein Sektor bereits als schlecht markiert, 9 wurden als Ersatz für den Sektorraum "Staging" markiert. Noch wichtiger ist, dass die erste nicht lesbare logische Blockadresse (LBA) 591363172 war.

Ich habe die Partition (und den Versatz darin) gefunden, in die diese Nummer "übersetzt" wurde:

vserver:~# fdisk -lu /dev/sdc
Device Boot      Start         End      Blocks   Id  System
/dev/sdc1           32   976773119   488386544   83  Linux

Die Partition begann bei Sektor 32. Also war der schlechte Sektor ...

vserver:~# bc -l
591363172-32+1
591363141

... mit einem Versatz von 591363141 Sektoren vom Beginn der Partition.

Jetzt konnte ich herausfinden, welche Datei "abgespritzt" wurde:

vserver:~# tune2fs -l /dev/sdc1 | grep Block\ size
Block size:               4096

Die Blockgröße dieses EXT3-Dateisystems betrug 4096 Byte, daher hat der fehlerhafte Sektor diesen Block im Dateisystem zerstört:

vserver:~# bc -l
591363141*512/4096
73920392.62500000000000000000

Und die Blocknummer (73920392) entsprach dieser Datei:

vserver:~# debugfs
debugfs 1.41.3 (12-Oct-2008)
debugfs:  open /dev/sdc1
testb 73920392
debugfs:  testb 73920392
Block 73920392 marked in use
debugfs:  icheck 73920392
Block           Inode number
73920392        18472967
debugfs:  ncheck 18472967
Inode           Pathname
18472967        /path/to/filewithbadsector

Und ich habe diese Datei von meinen Backups wiederhergestellt.

Gibt es ein gleichwertiges Verfahren für Windows / NTFS?

ttsiodras
quelle
Zu Ihrer Information: Die derzeit ausstehende Anzahl von 9 bedeutet, dass es 9 fehlerhafte Sektoren gibt, nicht nur einen. Der erweiterte Selbsttest stoppt nur bei dem ersten gefundenen. Bevor Sie von der Sicherung wiederherstellen, möchten Sie auch mit dem fehlerhaften Sektor umgehen, indem Sie Nullen darauf schreiben dd. Dadurch wird das Laufwerk gezwungen, es zu reparieren oder neu zuzuweisen.
Psusi
Ja, du hast recht. Nach der Wiederherstellung führte ich eine weitere SMART-Überprüfung durch und stellte fest, dass alles in Ordnung war. Das Schreiben der Datei überschrieb also anscheinend die 9 + 1 fehlerhaften Sektoren (und der Staging-Bereich lieferte Ersatz). Aber was ist mit Windows? :-)
ttsiodras
Ich denke, Ihre Berechnung für den Sektorversatz in einer Partition ist falsch. Sektornummern (andere als physische, auch bekannt als CHS) basieren alle auf Null, da Sektor 32 Partitionssektor 32-32 == 0 und nicht 1 ist.
Schockierenderweise hat dies noch niemand zu einer ein Jahr + alten Frage gesagt: Wenn Sie beginnen , fehlerhafte Sektoren auf dem Laufwerk zu sehen, bedeutet dies, dass Sie so viele haben, dass das automatische interne Remapping von fehlerhaften Blöcken dies nicht mehr kompensieren kann. Anstatt von Backups auf einem sterbenden Laufwerk wiederherzustellen, sollten Sie das Laufwerk austauschen und auf dem neuen Laufwerk wiederherstellen.
Voretaq7

Antworten:

7

Ich weiß, dass Sie einen NTFS-FS haben und Windows auf diesem FS ausführen. Ich weiß nicht, ob Sie ein Live-Linux "booten" können, um an diesem Treiber zu arbeiten, oder nicht.

Wenn Sie Linux von CD oder USB booten können, können Sie ntfsprogs verwenden. ansehen -

ntfscluster 

ntfsinfo 

Ich glaube, ntfscluster sagt Ihnen, welche Datei ein bestimmter Cluster speichert. Ich hoffe, das bringt Sie in die richtige Richtung.

JM Becker
quelle
Ich habe diesen Forumsbeitrag gefunden, der einen Utility-Wrapper für verschiedene Dateisysteme enthält und auch ntfscluster verwendet. ubuntuforums.org/showthread.php?t=1943721
Lethargie
Ja, ddrutility Funktion: Findet die Dateien auf schlechte Sektoren, auch eine Datei mit einer Sektorliste verwenden kann, könnten wir vielleicht „badblocks -NVS“ + „ddrutility“ verwenden
diyism