无需 Windows 即可修复损坏的 NTFS 分区

无需 Windows 即可修复损坏的 NTFS 分区

我的 NTFS 分区不知为何损坏了(这是我安装 Windows 时留下的痕迹)。

GParted 屏幕截图显示了不同的分区

我正在把 fdisk 和 blkid 的调试输出这里

同时,任何操作系统都无法挂载我的根分区,该分区位于我的 NTFS 分区旁边。不过,我不确定这是否与此有关。我在尝试挂​​载我的根分区 (sda5) 时收到以下错误

mount: wrong fs type, bad option, bad superblock on /dev/sda5,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

ubuntu@ubuntu:~$ dmesg | tail
[ 1019.726530] Descriptor sense data with sense descriptors (in hex):
[ 1019.726533]         72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00 
[ 1019.726551]         1a 3e ed 92 
[ 1019.726558] sd 0:0:0:0: [sda]  Add. Sense: Unrecovered read error - auto reallocate failed
[ 1019.726568] sd 0:0:0:0: [sda] CDB: Read(10): 28 00 1a 3e ed 40 00 01 00 00
[ 1019.726584] end_request: I/O error, dev sda, sector 440331666
[ 1019.726602] JBD: Failed to read block at offset 462
[ 1019.726609] ata1: EH complete
[ 1019.726612] JBD: recovery failed
[ 1019.726617] EXT4-fs (sda5): error loading journal

当我打开 gparted(使用 live CD)时,我的 NTFS 驱动器旁边会出现一个感叹号,显示GParted 屏幕截图显示错误

chkdsk有没有不用 Windows 即可运行的方法?

我尝试运行的fsck结果如下:

ubuntu@ubuntu:~$ sudo fsck /dev/sda
fsck from util-linux-ng 2.17.2
e2fsck 1.41.14 (22-Dec-2010)
fsck.ext2: Superblock invalid, trying backup blocks...
fsck.ext2: Bad magic number in super-block while trying to open /dev/sda

The superblock could not be read or does not describe a correct ext2
filesystem.  If the device is valid and it really contains an ext2
filesystem (and not swap or ufs or something else), then the superblock
is corrupt, and you might try running e2fsck with an alternate superblock:
    e2fsck -b 8193 <device>

更新:我能够通过 Hiren 的 BootCD 运行 chkdsk 来修复 NTFS 分区,但似乎超级块问题仍然存在。

更新 2:修复使用超级块的问题e2fsck -c /dev/sda5

答案1

注意:这个答案已经过时,如果您读过错误,则不建议这样做。

使用 安装 ntfs-3g 。然后在 NTFS 分区上sudo apt-get install ntfs-3g运行该命令。ntfsfix

例如:

ntfsfix /dev/hda6

ntfsfix v2.0.0 (libntfs 10:0:0)
 
Usage: ntfsfix [options] device

    Attempt to fix an NTFS partition.

    -h, --help             Display this help
    -V, --version          Display version information



Developers' email address:

[email protected] Linux NTFS
homepage: http://www.linux-ntfs.org

对于较新的 Ubuntu,您可以同时使用-b-d选项。-b尝试修复坏簇和-d修复脏状态。因此命令可以是

sudo ntfsfix -b -d /dev/sda6

--help向他们展示

ntfsfix v2015.3.14AR.1 (libntfs-3g)

Usage: ntfsfix [options] device
    Attempt to fix an NTFS partition.

    -b, --clear-bad-sectors Clear the bad sector list
    -d, --clear-dirty       Clear the volume dirty flag
    -h, --help              Display this help
    -n, --no-action         Do not write anything
    -V, --version           Display version information

答案2

我刚刚使用 Linux 命令行(但很友好)实用程序“testdisk”修复了我的 USB 驱动器。我的驱动器甚至无法在 Windows 中安装,而 Windows 8 发现了 6 个分区(而驱动器只有一个分区)。

要使用该实用程序,请安装它:

sudo apt-get install testdisk

然后运行它:

sudo testdisk

并按照说明进行操作。您必须搜索分区,然后写入更改。

希望这对任何人都有帮助。

答案3

只是为了澄清你的一些观点。

我尝试运行 fsck 得到以下结果:

ubuntu@ubuntu:~$ sudo fsck /dev/sda

...

fsck.ext2: Bad magic number in super-block while trying to open /dev/sda

现在,这并不奇怪,因为您尝试 fsck 磁盘,而不是其分区。fsck 所做的是,它尝试识别 FS 类型。由于您为其提供了原始磁盘表面,因此它无法识别并诉诸默认类型 - ext,调用 fsck.ext。

fsck.ext 在该位置未找到任何 FS 签名,并尝试查找超级块。最终失败,因为其磁盘只有 NTFS 分区类型。

这就是您出现此错误的原因。

正确的命令是:

sudo fsck /dev/sda1

这将为第一个 SATA 硬盘的第一个分区提供数据,而不是第一个 SATA 磁盘本身。

答案4

我同意@psusi:磁盘需要更换,请参阅我在已接受答案下的评论。这样做根本ntfsfix无济于事,只会延迟以下基本操作:

  1. 尽快备份磁盘上的所有数据
  2. 更换新磁盘

没有必要真正检查 SMART 诊断程序 - 它们无论如何都只能发现一小部分错误。红旗是以下两行:

[ 1019.726558] sd 0:0:0:0: [sda]  Add. Sense: **Unrecovered read error** - auto reallocate failed
[ 1019.726602] JBD: **Failed to read block** at offset 462

一旦磁盘开始出现不可恢复的读取错误 (URE),应立即更换,并且仅用于数据恢复。(过多的非 URE 也表示需要更换。)

磁盘应被视为必须每隔几年更换一次的消耗品,因此拥有真正好的备份(自动、每日、完整、至少到外部驱动器)至关重要。

相关内容