当磁盘上的 SMART 检查报告坏扇区时,能够识别有坏扇区的文件并从备份中恢复它非常重要。下面,我展示了如何为我的 Linux/ext3 VMWARE 服务器执行此操作 - 但有人知道这是否可以用于 Windows/NTFS 吗?
以下是我针对 Linux/ext3 执行的操作:我首先要求驱动器进行硬件表面扫描(低于操作系统级别,使用驱动器上的 SMART 电路):
vserver:~# smartctl -t long /dev/sdc
我查看了结果:
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
因此,一个扇区已被标记为坏扇区,9 个扇区被标记为从“暂存”扇区空间替换。更重要的是,第一个不可读的逻辑块地址 (LBA) 是 591363172。
我找到了这个数字“翻译”到的分区(以及其中的偏移量):
vserver:~# fdisk -lu /dev/sdc
Device Boot Start End Blocks Id System
/dev/sdc1 32 976773119 488386544 83 Linux
该分区从第 32 扇区开始。因此,坏扇区是......
vserver:~# bc -l
591363172-32+1
591363141
...距分区开头偏移 591363141 个扇区的位置。
现在我可以找到哪个文件被“感染”了:
vserver:~# tune2fs -l /dev/sdc1 | grep Block\ size
Block size: 4096
该 EXT3 文件系统的块大小为 4096 字节,因此坏扇区破坏了文件系统中的这个块:
vserver:~# bc -l
591363141*512/4096
73920392.62500000000000000000
并且区块编号(73920392)对应到此文件:
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
我从备份中恢复了该文件。
是否有可以针对 Windows/NTFS 遵循的等效程序?
答案1
我知道您有一个 NTFS FS,并在该 FS 上运行 Windows。我不知道您是否“可以”启动实时 Linux 以在该驱动程序上运行。
如果你可以从 CD 或 USB 启动 Linux,则可以使用 ntfsprogs。查看 -
ntfscluster
ntfsinfo
我相信 ntfscluster 会告诉您特定群集存储了哪些文件。我希望这能为您指明正确的方向。
答案2
是的,使用 nfi.exe
从 SMART 报告工具中找出哪些扇区是坏的,然后使用 nfi.exe(Windows 2000 时代的 Microsoft 工具,只需花点功夫并通过 Google 搜索即可下载)
Usage: nfi.exe 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.
例如:
C:\>nfi.exe I 0x10035fec0
NTFS File Sector Information Utility.
Copyright (C) Microsoft Corporation 1999. All rights reserved.
***Logical sector 4298505920 (0x10035fec0) on drive I is in file number 144581.
\System Volume Information\Dedup\ChunkStore\{F3F1DCDF-134B-4A3E-AFD5-5F698E42667A}.ddp\Data\000004ad.00000001.ccc
$STANDARD_INFORMATION (resident)
$FILE_NAME (resident)
$DATA (nonresident)
logical sectors 3835371584-3835371615 (0xe49b2040-0xe49b205f)
logical sectors 3834572320-3834572335 (0xe48eee20-0xe48eee2f)
logical sectors 4298461240-4298859703 (0x100355038-0x1003b64b7)
logical sectors 4298870832-4300569335 (0x1003b9030-0x100557af7)