我有3个坏扇区的硬盘。我知道扇区号,并且计算机仍然可以启动到Windows。我想使用制造商的HDD诊断工具运行扇区修复,但是在此之前,我想知道哪些文件受到了影响。有没有办法找出哪些文件正在占用这些扇区?
我有3个坏扇区的硬盘。我知道扇区号,并且计算机仍然可以启动到Windows。我想使用制造商的HDD诊断工具运行扇区修复,但是在此之前,我想知道哪些文件受到了影响。有没有办法找出哪些文件正在占用这些扇区?
Answers:
这是使用WinHex的过程,WinHex是一个方便的十六进制编辑器,可以直接检查和编辑驱动器。 要特别小心; 如果使用不当,此工具可能会损坏您的系统。尽可能以只读方式打开磁盘。
由于已经存在错误的扇区位置,因此可以直接在WinHex中打开驱动器(“打开磁盘”工具栏按钮),然后导航到该扇区以查看数据(“转到扇区”工具栏按钮)。假设您的扇区位置是物理扇区地址,则需要在此步骤中打开物理驱动器。
这不会直接识别文件,但是左侧窗格应该识别包含该扇区的分区及其对应的相对扇区地址。
如果您确定的分区是NTFS或FAT分区,我们可以直接打开该分区(再次“打开磁盘”)。这将在新选项卡中打开分区,因此您可以根据需要来回切换。在分区选项卡中,再次使用“转到扇区”功能,但是这次输入转换后的扇区(在驱动器视图中标识的“相对扇区”)。
现在,在左侧窗格中,您应该看到有关“可见驱动器空间的分配”的部分。在此之下是群集号,物理扇区号,逻辑(相对)扇区号以及文件名(如果该扇区实际上属于文件)。
如果这些步骤不能为您提供立即的答案,则可能是您的坏扇区没有被使用。如果结果不清楚,您可能需要做更多的挖掘才能找到答案。
尝试nfi.exe-Windows NT文件系统(NTFS)文件扇区信息实用程序。从Microsoft OEM支持工具第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
,您可能需要使用完整路径)
c:\Windows\System32>dd.exe 'dd.exe' is not recognized as an internal or external command, operable program or batch file.
大多数碎片整理程序会显示一个磁盘映射,其中显示了磁盘上的所有群集,然后可以单击(查找标记为bad的群集)以查看位于该群集中的文件。
正如Walter所说,过去十年左右的任何磁盘和操作系统组合都将确保自动从坏扇区中重定位文件(驱动器固件通常可以解决此问题,但是磁盘工具(如chkdsk
碎片整理程序)也通常可以做到)。
碎片整理程序:
碎片整理文件:
Vopt:
您可以fsutil
在管理员命令提示符下使用。子命令volume
具有子子命令querycluster
。请参阅Windows命令行参考Fsutil。
Fsutil将逻辑驱动器中的群集号作为输入参数,而不是扇区号。但是,计算此数字应该很容易:
cluster#=(absolute_sector-start_of_partition_sector)/ ectors_per_cluster。
输出示例:
c:\tmp> fsutil volume querycluster C: 5235
Cluster 0x0000000000001473, verwendet von
----D \Program Filesx86)\LibreOffice 4\program\fwilo.dll::$DATA
据我所知,当驱动器在某个扇区上遇到一定数量的读取错误时,它会被标记为不良,并将其内容复制到驱动器上的另一个位置。这通常发生在该扇区上的数据变得完全不可读之前。
我试图为此寻找一个资源,只是昨天才读,却不记得在哪里。
还请注意,--repair-sector标志可用于在不再需要时恢复(任何)坏扇区,包括真正坏的扇区(驱动器可能会将它们重新映射到介质上的新区域)。
底线:您不必担心坏扇区,硬盘驱动器固件会为您完成。唯一需要做的就是在驱动器数量过多之前就换一个新驱动器,然后驱动器就会死掉。
运行时的DiskExplorer允许您按扇区检查驱动器。它是付费软件(NTFS版本为70美元),但可以免费试用。它们具有适用于NTFS,FAT和Linux(ext2 / 3)的版本。
我知道线程很旧,但是对于记录有这种问题的每个人,有一种方法可以从linux检查它。人们总是可以在cd / usb棒上使用一些实时Linux,例如超级容易运行的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
。