在没有 Windows 的情况下修复损坏的 NTFS 分区

Nem*_*emo 107 partitioning fsck ntfs hard-drive

我的 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
Run Code Online (Sandbox Code Playgroud)

当我打开 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>
Run Code Online (Sandbox Code Playgroud)

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

更新 2:使用固定超级块问题e2fsck -c /dev/sda5

Rol*_*Xor 125

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

例如:

ntfsfix /dev/hda6

ntfsfix v2.0.0 (libntfs 10:0:0)

用法:ntfsfix [选项] 设备

Attempt to fix an NTFS partition.

-h, --help             Display this help
-V, --version          Display version information
Run Code Online (Sandbox Code Playgroud)

开发者的电子邮件地址:

linux-ntfs-dev@lists.sf.netLinux NTFS 主页:http : //www.linux-ntfs.org


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

sudo ntfsfix -b -d /dev/sda6
Run Code Online (Sandbox Code Playgroud)

--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
Run Code Online (Sandbox Code Playgroud)

  • 抱歉,这不正确:问题的第一个版本在日志中包含“sd 0:0:0:0: [sda] Add. Sense: Unrecovered read error - auto reallocate failed”行 - Unrecovered Read Error (URE ) 表示驱动器出现故障。如果您遇到未恢复的 *write* 错误,则可以忍受一段时间(驱动器重新映射块),但 URE 不行。有关类似错误,请参阅 http://superuser.com/questions/114675/external-hard-drive-is-no-longer-recognized-gives-buffer-io-errors。请参阅 http://en.wikipedia.org/wiki/SMART#cite_note-labs.google.com-1 - 巨大的 Google 分析。 (6认同)
  • 不幸的是,这不是一个有用的答案——问题实际上不是如何修复 NTFS 文件系统结构,而是块设备级别(低于 NTFS)的不可恢复的读取错误。这意味着(正如 psusi 已经说过的那样)“您的磁盘已经过时了”-唯一的选择是购买新硬盘并从备份中恢复。如果您没有最新的备份,您可以尝试使用 GNU ddrescue(“apt-get install gddrescue”)将尽可能多的数据恢复到磁盘映像文件。Google for Ubuntu 磁盘恢复以获得更多帮助。 (5认同)
  • @RolandTaylor:我确信它是有帮助的,但是当日志中存在可见的不可恢复的读取错误时告诉某人运行文件系统检查对他们没有帮助。他们可能能够暂时修复他们的错误,但磁盘硬件确实出现故障,而 ntfix 对此无济于事。 (3认同)

Die*_*cic 18

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

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

sudo apt-get install testdisk
Run Code Online (Sandbox Code Playgroud)

然后运行它:

sudo testdisk
Run Code Online (Sandbox Code Playgroud)

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

希望这可以帮助任何人。

  • 这太棒了..修复了我的外部硬盘上损坏的分区表!谢谢!伏 (3认同)

小智 14

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

我尝试运行 fsck 结果如下:

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

...

fsck.ext2: Bad magic number in super-block while trying to open /dev/sda
Run Code Online (Sandbox Code Playgroud)

现在,这并不奇怪,因为您正在尝试 fsck 磁盘,而不是它的分区。fsck 所做的是,它尝试识别 FS 类型。因为你给了它原始磁盘表面,它无法识别并求助于默认类型 - ext,调用 fsck.ext。

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

这就是您遇到此错误的原因。

正确的命令是:

sudo fsck /dev/sda1
Run Code Online (Sandbox Code Playgroud)

这将提供第一个 sata 硬盘驱动器的第一个分区,而不是第一个 sata 磁盘本身。


小智 6

在 Ubuntu 14.04 中试试这个

sudo ntfsfix /dev/sdXY
Run Code Online (Sandbox Code Playgroud)

XY你的分区在哪里。(/dev/sda2在你的情况下)


psu*_*usi 5

你的磁盘是吐司。检查磁盘实用程序中的 SMART 诊断进行确认;它应该说你有很多坏扇区,需要更换驱动器。


Ric*_*Vel 5

我同意@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
Run Code Online (Sandbox Code Playgroud)

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

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


hey*_*ema 5

fsck并且gparted应用程序不能用于修复 ntfs 分区的问题。ntfsfix不应该用来尝试解决此问题。

通常应使用 Windows 工具。然而,chkdsk这并没有帮助。

您可以尝试testdisk从 Ubuntu 操作系统使用。

sudo apt-get update# 更新软件数据库

sudo apt-get install testdisk# 安装测试盘

sudo testdisk# 启动测试盘

请访问http://www.cgsecurity.org/wiki/TestDisk_Step_By_Step获取有关使用此工具的帮助。