Wie bestimme ich, welche Datei einen bestimmten Sektor belegt?


34

Ich habe eine Festplatte mit 3 fehlerhaften Sektoren. Ich kenne die Sektornummern und der Computer kann immer noch in Windows booten. Ich möchte die Sektorreparatur mit einem HDD-Diagnosetool des Herstellers ausführen, aber bevor ich das tue, möchte ich wissen, welche Dateien betroffen sind. Gibt es eine Möglichkeit, herauszufinden, welche Datei oder welche Dateien diese Sektoren belegen?


1
Der Sektoreditor von roadkil ist möglicherweise ein Teil des Weges, listet jedoch keine Programme auf.
Barlop

Siehe auch So finden Sie heraus, welche Datei sich in einem bestimmten Sektor befindet - dieselbe Frage, aber für ein NTFS-Dateisystem, auf das unter Linux zugegriffen wird.
sleske

Antworten:


22

Hier ist der Prozess mit WinHex , einem handlichen Hex-Editor, der Laufwerke direkt untersuchen und bearbeiten kann. Sei sehr vorsichtig; Dieses Tool kann Ihr System beschädigen, wenn es unsachgemäß verwendet wird. Öffnen Sie Datenträger nach Möglichkeit schreibgeschützt .

  1. Da Sie die fehlerhaften Sektorpositionen bereits haben, können Sie das Laufwerk direkt in WinHex öffnen ( Symbolleistenschaltfläche "Open Disk" ) und dann zum Sektor navigieren, um die Daten anzuzeigen ( Symbolleistenschaltfläche "Go to Sector" ). Angenommen, Ihre Sektorspeicherorte sind physische Sektoradressen, müssen Sie in diesem Schritt Ihr physisches Laufwerk öffnen .

    Dadurch wird die Datei nicht direkt identifiziert, aber der linke Bereich sollte die Partition identifizieren, die diesen Sektor und die entsprechende relative Sektoradresse enthält.

  2. Wenn die Partition, die Sie identifiziert haben, eine NTFS- oder FAT-Partition ist, können wir die Partition direkt öffnen ( "Open Disk" erneut). Dadurch wird die Partition in einer neuen Registerkarte geöffnet, sodass Sie nach Bedarf hin und her wechseln können. Verwenden Sie auf der Registerkarte " Partition " erneut die Funktion "Gehe zu Sektor" , geben Sie jedoch dieses Mal den übersetzten Sektor ein (den in der Laufwerksansicht angegebenen "relativen Sektor" ).

    Jetzt sollten Sie im linken Bereich einen Abschnitt über "Zuweisung des sichtbaren Speicherplatzes" sehen . Darunter befinden sich die Cluster-Nr., Die physische Sektor-Nr., Die logische (relative) Sektor-Nr. Und der Dateiname, wenn dieser Sektor tatsächlich zu einer Datei gehört.

Wenn Sie mit diesen Schritten nicht sofort eine Antwort erhalten, werden Ihre fehlerhaften Sektoren möglicherweise nicht verwendet. Wenn die Ergebnisse unklar sind, müssen Sie möglicherweise noch etwas graben, um Ihre Antwort zu finden.


1
Die herunterladbare Version gibt an, eine Testversion zu sein, scheint aber sehr leistungsfähig zu sein. Ich bin mir nicht sicher, wie die Probezeit ist. Lizenzoptionen finden
quack quixote

WinHex war die Bombe .... Gefunden, welche Dateien in Minuten von den fehlerhaften Sektoren (absolute Sektoren aus dem Oberflächenscan) betroffen waren. Tolles Tutorial. Vielen Dank, ich würde dich als "Quacksalber" abstimmen, aber ich habe nicht den Ruf, der notwendig ist ......

Kann die Benutzeroberfläche dazu gezwungen werden, diese Informationen preiszugeben, ohne den Sektor zu lesen? Ich führe eine Wiederherstellung auf einer Festplatte durch, die beim Lesen bestimmter Sektoren heruntergefahren (getrennt und ausgeschaltet) wird.
Sheldonh

Die winhex-Website scheint nicht verfügbar zu sein ( i.imgur.com/1FAX5cN.png ). gerade und einfach. frei. "sofortige Antwort";)
Costin Gușă

21

Versuchen Sie nfi.exe - Windows NT-Dateisystem (NTFS), Dienstprogramm für Informationen zum Dateisektor. Herunterladen von Microsoft OEM Support Tools Phase 3 SR2 .

> nfi.exe
Dumps information about an NTFS volume, and optionally determines
which volume and file contains a particular sector.

Usage: nfi drive-letter [logical-sector-number]

        Drive-letter can be a single character or a character followed
        by a colon (i.e., C or C: are acceptable).

        Logical-sector-number is a decimal or 0x-prefixed hex
        number, specifying a sector number relative to the volume
        whose drive letter is given by drive-letter. If not
        specified, then information about every file on the volume
        is dumped.

   nfi NT-device-path physical-sector-number

        Determines which volume a given physical sector on a drive is
        within, and then which file on the volume it is in.

        NT-device-path is the NT-style path to a physical device.
        It must not include a partition specification.

        Physical-sector-number is a decimal or 0x-prefixed hex
        number, specifying a sector number relative to the physical
        drive whose device path is given by NT-device-path.

    nfi full-win32-path

        Dumps information about a particular file. full-win32-path
        must start with a drive letter and a colon.

Beachten Sie, dass Sie das "\\?" Präfix des Blockgerätepfads. Beispiel:

C:\Users\admin\Downloads>nfi \Device\Harddisk0\DR0 28521816
NTFS File Sector Information Utility.
Copyright (C) Microsoft Corporation 1999. All rights reserved.


***Physical sector 28521816 (0x1b33558) is in file number 5766 on drive C.
\IMAGES\win7HDD.vhd
    $DATA (nonresident)
        physical sectors 32863720-34098663 (0x1f575e8-0x2084de7)
        physical sectors 28519912-32863719 (0x1b32de8-0x1f575e7)
        physical sectors 25727944-26291143 (0x18893c8-0x1912bc7)
        physical sectors 95163976-115106143 (0x5ac1648-0x6dc615f)

Ich habe mich nur angemeldet, um dies zu verbessern. Dies sollte als Antwort markiert werden!
Costin Gușă

Wenn Sie es nicht wissen NT-device-path, können Sie versuchen, es mit zu finden dd --list. (Achtung für Benutzer mit Unix-Tools in PATH: ddHier C:\WINDOWS\system32\dd.exemüssen Sie möglicherweise den vollständigen Pfad verwenden.)
Benutzer

Windows 10 hat dieses Dienstprogramm in system32 nicht. c:\Windows\System32>dd.exe 'dd.exe' is not recognized as an internal or external command, operable program or batch file.
Aen Sidhe

1
Der Download - Link auf der Microsoft - Website ist tot
Becken

1
Kann auch auf der Wayback-Maschine gefunden werden. Web.archive.org/web/20150329185738/http://…
mkey

8

Die meisten Defragmentierungsprogramme zeigen eine Laufwerkskarte mit allen Clustern auf dem Laufwerk an, auf die Sie klicken können (suchen Sie nach den als fehlerhaft gekennzeichneten Clustern ), um die in diesem Cluster befindlichen Dateien anzuzeigen.

Wie Walter sagte, werden alle Festplatten- und Betriebssystemkombinationen der letzten zehn Jahre sicherstellen, dass Dateien aus fehlerhaften Sektoren automatisch verschoben werden (Laufwerksfirmware übernimmt dies normalerweise, aber auch Festplattentools wie chkdskoder Defragmentierer tun dies normalerweise).


Defraggler:

Bildbeschreibung hier eingeben

Eine Datei defragmentieren:

Bildbeschreibung hier eingeben

Vopt:

Bildbeschreibung hier eingeben


Sieht vielversprechend aus, ich werde es versuchen.
ChrisWue

6

DiskView von Sysinternals führt genau diese Funktion aus: Sie können eine Festplattenübersicht des Laufwerks anzeigen und sehen, welche Dateien welche Cluster belegen.

Leider scheint es keine Möglichkeit zu geben, die Namen von Systemdateien anzuzeigen.

DiskView-Hauptfenster DiskView-Systemdatei



Aus diesem Grund habe ich es als separate Antwort veröffentlicht, da es sich um ein speziell für diesen Zweck entwickeltes Tool handelt, mit dem die Frage beantwortet wird. Es ist jedoch begrenzt (ich verwende immer noch FAT32 in großem Umfang), sodass es nicht das A und O ist. alle lösung. (Noch?)
Synetech

5

Sie können fsutilan der Administrator-Eingabeaufforderung verwenden. Unterbefehl volumehat queryclusterUnterbefehl. Siehe Windows-Befehlszeilenreferenz Fsutil .

Fsutil verwendet die Clusternummer im logischen Laufwerk als Eingabeargument anstelle der Sektornummer. Es sollte jedoch einfach sein, diese Zahl zu berechnen:
cluster # = (absolute_sector - start_of_partition_sector) / sector_per_cluster.

Beispielausgabe:

c:\tmp> fsutil volume querycluster C: 5235
Cluster 0x0000000000001473, verwendet von
 ----D \Program Filesx86)\LibreOffice 4\program\fwilo.dll::$DATA

3

Soweit ich weiß, wird ein Laufwerk, wenn es eine bestimmte Anzahl von Lesefehlern auf einem Sektor trifft, als schlecht markiert und sein Inhalt wird an eine andere Stelle auf dem Laufwerk kopiert. Dies geschieht normalerweise, bevor die Daten in diesem Sektor vollständig unlesbar geworden sind.

Ich versuche, eine Quelle dafür zu finden, lese sie erst gestern, kann mich aber nicht erinnern, wo.

von man hdparm (8)

Beachten Sie auch, dass das Flag --repair-sector verwendet werden kann, um (alle) fehlerhaften Sektoren wiederherzustellen, wenn sie nicht mehr benötigt werden, einschließlich der Sektoren, die wirklich fehlerhaft waren (das Laufwerk ordnet diese wahrscheinlich einem neuen Bereich auf dem Datenträger zu).

Fazit: Sie müssen sich nicht um fehlerhafte Sektoren kümmern, die Festplattenfirmware erledigt das für Sie. Sie müssen nur ein neues Laufwerk beschaffen, bevor zu viele vorhanden sind und Ihr Laufwerk abstirbt.


Ich bin mir ziemlich sicher, dass die Neuzuweisung beim Schreiben und nicht beim Lesen erfolgt. Die SMART-Daten des Laufwerks scheinen dies zu bestätigen. Die Anzahl der ausstehenden Sektoren ist hoch (größer als 0), während die Anzahl der Sektorumverteilungen 0 beträgt. Für mich bedeutet dies: Es sind fehlerhafte Sektoren für die Umverteilung markiert, diese wurden jedoch noch nicht neu zugeordnet.
ChrisWue

Hast du CHKDSK ausprobiert? en.wikipedia.org/wiki/CHKDSK
Baarn

schau dir die / r Option an
Baarn

Es scheint jedoch nicht möglich zu sein, Informationen über die in diesem Sektor gespeicherten Dateien abzurufen.
Baarn

2

Mit dem DiskExplorer von RunTime können Sie ein Laufwerk nach Sektor untersuchen. Es ist Payware (70 US-Dollar für die NTFS-Version), kann aber kostenlos ausprobiert werden. Sie haben Versionen für NTFS, FAT und Linux (ext2 / 3).

Alt-Text


Das sah vielversprechend aus, aber leider funktioniert es nicht. DiskExplorer zeigt für jeden Sektor des Laufwerks "Ungültiger MFT-Eintrag" an.

Ich gehe davon aus, dass es einen Konfigurationsschritt gibt, den Sie vermissen, wenn dieser für alle Sektoren angezeigt wird, aber ich habe dieses Tool lange nicht mehr verwendet, sodass ich Ihnen keine direkten Anweisungen geben kann. Ich werde eine weitere Antwort mit einem separaten Tool hinzufügen. Vielleicht mischt sich jemand anderes mit der richtigen Verwendung ein.
Quack Quijote

Es ist kein Konfigurationsproblem, sondern der Disk Explorer ist nur sehr kompliziert und schwer zu bedienen. Es ist nicht automatisch genug. (Das alte DOS-Programm Norton Disk Doctor war ähnlich, aber viel einfacher zu verwenden, da es automatisch gelesen und an Dateisystemstrukturen angepasst wurde.
Schade, dass

0

Ich weiß, dass Thread alt ist, aber für alle, die ein solches Problem haben, gibt es eine Möglichkeit, es von Linux aus zu überprüfen. Man kann immer etwas Live-Linux auf CD / USB-Sticks verwenden, wie zum Beispiel Slax, das sehr einfach zu bedienen ist. Wie auch immer, zurück zum Geschäft.

Ich hatte heute einige SmartDeamon-Protokolle mit Warnungen zu unlesbaren Sektoren gefunden und mich entschlossen, dies zu untersuchen. Nach der Recherche starte ich schließlich (# zeigt an, dass root-Rechte vorhanden sind, sudo kann stattdessen verwendet werden, wenn einer als normaler Benutzer ausgeführt wird):

# smartctl -H /dev/sda2

SMART overall-health self-assessment test result: PASSED

Was darauf hinweist, dass dieses Laufwerk etwas gesund ist, was gut ist. Aber ich folgte und recherchierte weiter und rannte badblocks.

# badblocks -v /dev/sda2 > ~/log/sda2.badsectors
# cat ~/log/sda2.badsectors

271521948

So gibt es einige badblock war , die ich wollte wissen , welche Datei es gehört und fand , dass es getan werden könnte , mit debugfs, war das Problem , dass meine Partition ntfs war so habe ich ntfstools was der Schlüssel ist:

# ntfscluster -s 271521948 /dev/sda2 > 271521948.secinfo 2>&1
# cat 271521948.secinfo | grep -v "extent"

Searching for sector 271521948
Inode 142427 /tmp/dl/setup_torch_2.exe/$DATA
* one inode found

/ grep -v "extent"ist es, viele nutzlose Informationen loszuwerden, die von ntfscluster/ angezeigt werden

Also im Falle von ntfs ist alles was man braucht ntfscluster -s $SECTOR.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.