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?
dd
. Dadurch wird das Laufwerk gezwungen, es zu reparieren oder neu zuzuweisen.