Как определить, какой файл занимает данный сектор?

34

У меня жесткий диск с 3 плохими секторами. Я знаю номера секторов, и компьютер все еще может загружаться в Windows. Я хочу запустить восстановление сектора из средства диагностики жесткого диска от производителя, но прежде чем я сделаю это, я хотел бы знать, какие файлы затронуты. Есть ли способ выяснить, какой файл или файлы занимают эти сектора?

Йенс Эрат
источник
1
Секторный редактор Roadkil может пройти часть пути, просто не перечисляет программы.
Barlop
См. Также Как узнать, какой файл находится в определенном секторе - тот же вопрос, но для файловой системы NTFS, доступ к которой осуществляется из Linux.
слеске

Ответы:

22

Вот процесс с использованием WinHex , удобного шестнадцатеричного редактора, который может напрямую проверять и редактировать диски. Будь очень осторожен; этот инструмент может повредить вашу систему, если используется не по назначению. Открытые диски только для чтения, когда это возможно.

  1. Поскольку у вас уже есть поврежденные сектора, вы можете открыть диск в WinHex напрямую ( кнопка на панели инструментов «Открыть диск» ), а затем перейти к сектору для просмотра данных ( кнопка панели инструментов «Перейти к сектору» ). Предполагая, что местоположения вашего сектора являются адресами физического сектора, на этом шаге вам нужно открыть свой физический диск.

    Это не идентифицирует файл напрямую, но левая панель должна идентифицировать раздел, содержащий этот сектор и соответствующий ему относительный адрес сектора .

  2. Если указанный вами раздел является разделом NTFS или FAT, мы можем открыть этот раздел напрямую ( снова «Открыть диск» ). Это откроет раздел в новой вкладке, так что вы можете переключаться туда и обратно при необходимости. На вкладке раздела снова используйте функцию «Перейти к сектору» , но на этот раз введите переведенный сектор ( «относительный сектор», определенный на виде диска).

    Теперь на левой панели вы должны увидеть раздел «Распределение видимого дискового пространства» . Под этим находится # кластера, # физического сектора, логического (относительного) сектора # и имя файла, если этот сектор фактически принадлежит файлу.

Если эти шаги не дают немедленного ответа, ваши плохие сектора могут не использоваться. Если результаты неясны, вам, возможно, придется еще покопаться, чтобы найти свой ответ.

шарлатан
источник
1
загружаемая версия претендует на то, чтобы быть оценочной версией, но кажется очень способной Я не уверен, что такое испытательный срок. см. здесь варианты лицензий: x-ways.net/winhex/order.html
квик-кихот
WinHex был бомбой .... Нашел, какие файлы были затронуты плохими секторами (абсолютными секторами от сканирования поверхности) за считанные минуты. Удивительный учебник. Спасибо, я бы проголосовал за "кряква-кихота", но у меня нет 15 необходимых репутаций ......
Можно ли заставить пользовательский интерфейс раскрывать эту информацию, не читая сектор? Я выполняю восстановление на диске, который отключается (отключается и выключается), когда я читаю определенные сектора.
Шелдон
Веб-сайт winhex отключен / недоступен ( i.imgur.com/1FAX5cN.png ), попробуйте решение nfi ниже. прямо и просто. свободный. «немедленный ответ»;)
Костин Гуцэ
21

Попробуйте nfi.exe - служебную программу для файлового сектора файловой системы Windows NT (NTFS). Загрузите с Microsoft OEM Tools 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.

Обратите внимание, вы должны опустить "\\?" префикс пути блочного устройства. Пример:

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)
Роберт Кольер
источник
Я вошел в систему только для того, чтобы проголосовать. это должно быть помечено как ответ!
Костин Гуцэ
Если вы не знаете NT-device-path, вы можете попытаться найти его с dd --list. (Внимание пользователей с инструментами Unix в PATH: ddздесь C:\WINDOWS\system32\dd.exe, возможно, вам понадобится использовать полный путь)
пользователь
Windows 10 не имеет этой утилиты в system32. c:\Windows\System32>dd.exe 'dd.exe' is not recognized as an internal or external command, operable program or batch file.
Эйн Сидхе
1
Ссылка для скачивания на сайте Microsoft не работает
бассейн
1
Также можно найти на обратном пути машины web.archive.org/web/20150329185738/http://…
mkey
8

Большинство программ дефрагментации показывают карту диска, отображающую все кластеры на диске, которые можно затем щелкнуть (найти помеченные как поврежденные ), чтобы просмотреть файлы, расположенные в этом кластере.

Как сказал Уолтер, любая комбинация дисков и ОС за последнее десятилетие или около того обеспечит автоматическое перемещение файлов из поврежденных секторов (микропрограмма диска обычно справляется с этим, но дисковые инструменты, такие как chkdskили дефрагментаторы, обычно также делают это).


Defraggler:

введите описание изображения здесь

Defrag-A-File:

введите описание изображения здесь

Vopt:

введите описание изображения здесь

Synetech
источник
Выглядит многообещающе, я попробую.
ChrisWue
6

DiskView от Sysinternals выполняет именно эту функцию: отображать карту диска накопителя и видеть, какие файлы занимают какие кластеры.

К сожалению, похоже, нет способа отображения имен системных файлов.

Главное окно DiskView Системный файл DiskView

Synetech
источник
Вот почему я опубликовал его в качестве отдельного ответа, потому что это инструмент, созданный специально для этой цели, поэтому он отвечает на вопрос, но он ограничен (я все еще широко использую FAT32), поэтому он не является универсальным все решение. (Еще?)
Synetech
5

Вы можете использовать fsutilиз командной строки администратора. Подкоманда volumeимеет queryclustersubsubcommand. См. Справочник по командной строке Windows Fsutil .

Fsutil принимает номер кластера в логическом диске в качестве входного аргумента вместо номера сектора. Но должно быть легко вычислить это число:
cluster # = (absolute_sector - start_of_partition_sector) / sector_per_cluster.

Пример вывода:

c:\tmp> fsutil volume querycluster C: 5235
Cluster 0x0000000000001473, verwendet von
 ----D \Program Filesx86)\LibreOffice 4\program\fwilo.dll::$DATA
NorbertM
источник
3

насколько я знаю, когда диск сталкивается с определенным количеством ошибок чтения в секторе, он помечается как плохой, и его содержимое копируется в другое место на диске. это обычно происходит до того, как данные по этому сектору становятся полностью нечитаемыми.

Я пытаюсь найти источник этого, просто прочитал вчера, но не могу вспомнить, где.

от человека hdparm (8)

Также обратите внимание, что флаг --repair-sector можно использовать для восстановления (любых) поврежденных секторов, когда они больше не нужны, в том числе секторы, которые действительно были повреждены (диск, вероятно, переназначит их в новую область на носителе).

Итог: вам не нужно заботиться о плохих секторах, прошивка жесткого диска сделает это за вас. единственное, что вам нужно сделать, это получить новый диск до того, как их станет слишком много, и ваш диск умрет.

Baarn
источник
Я уверен, что перераспределение происходит при записи, а не при чтении. SMART-данные накопителя, кажется, подтверждают это. Число ожидающих секторов велико (больше 0), в то время как Счетчик перераспределения секторов равен 0. Для меня это означает: есть плохие сектора, отмеченные для перераспределения, но они еще не были перераспределены.
ChrisWue
Вы пробовали CHKDSK? en.wikipedia.org/wiki/CHKDSK
Baarn
посмотрите на опцию / r
Baarn
Однако получить информацию о файлах, хранящихся в этом секторе, невозможно.
Баарн
2

DiskExplorer от RunTime позволяет вам исследовать диск по секторам. Это платное ПО ($ 70 за версию NTFS), но можно попробовать бесплатно. У них есть версии для NTFS, FAT и Linux (ext2 / 3).

альтернативный текст

шарлатан
источник
Это выглядело многообещающе, но, к сожалению, это не работает. DiskExplorer отображает «Недопустимая запись MFT» для каждого сектора диска.
я ожидаю, что есть шаг настройки, который вы пропускаете, если он показывает это для всех секторов, но я не использовал этот инструмент долгое время, поэтому я не могу дать вам прямые инструкции с ним. я добавлю еще один ответ с отдельным инструментом; возможно, кто-то еще вмешается при правильном использовании этого.
Квик-кихот
Это не проблема конфигурации, просто Disk Explorer очень сложен и сложен в использовании. Это не достаточно автоматически. (Старая DOS-программа Norton Disk Doctor была похожа, но намного проще в использовании, потому что она автоматически считывала и настраивалась на структуры файловой системы. Жаль, что она не поддерживала NTFS и была прекращена.)
Synetech
0

Я знаю, что поток старый, но для записи, для всех, кто имеет такую ​​проблему, есть способ проверить это из Linux. Всегда можно использовать live linux на флешке cd / usb, например slax, который очень легко запустить. Во всяком случае, вернемся к делу.

Сегодня я нашел несколько хитрых димоновских журналов с предупреждениями о нечитаемых секторах и решил исследовать это. После исследования, которое я в итоге запустил (# - подсказка, указывающая права root, вместо этого можно использовать sudo, если вы работаете как обычный пользователь):

# smartctl -H /dev/sda2

SMART overall-health self-assessment test result: PASSED

Что указывает на то, что этот диск несколько здоров, и это хорошо. Но я следил и продолжал исследовать и бежать badblocks.

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

271521948

Так была некоторая badblock , которые я хотел бы знать , какой файл он принадлежит и обнаружил , что это может быть сделано с debugfs, проблема заключалась в том , что мой раздел был NTFS , поэтому я использовал ntfstools , который является ключевым:

# 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"избавиться от множества бесполезной информации, отображаемой ntfscluster/

Так что в случае с ntfs все, что нужно, это ntfscluster -s $SECTOR.

пижма
источник