从坏扇区到“损坏的文件” - 适用于 Linux/ext3,我可以适用于 Windows/NTFS 吗?

从坏扇区到“损坏的文件” - 适用于 Linux/ext3,我可以适用于 Windows/NTFS 吗?

当磁盘上的 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)

相关内容