如何修复NTFS分区中的“输入/输出错误”?

我用Ubuntu替换了一个有问题的Windows Vista安装。一切都正常,只是我无法访问我所有文件所在的主硬盘。这是我收到的错误信息:
Error mounting: mount exited with exit code 13: ntfs_attr_pread_i: ntfs_pread failed: Input/output error
Failed to read NTFS $Bitmap: Input/output error
NTFS is either inconsistent, or there is a hardware fault, or it's a
SoftRAID/FakeRAID hardware. In the first case run chkdsk /f on Windows
then reboot into Windows twice. The usage of the /f parameter is very
important! If the device is a SoftRAID/FakeRAID then first activate
it and mount a different device under the /dev/mapper/ directory, (e.g.
/dev/mapper/nvidia_eahaabcc1). Please see the 'dmraid' documentation
for more details

这一定是硬件问题吗?如果不是,是否有办法在Ubuntu上修复硬盘?

6个回答

ntfsfix对我来说起作用了:
sudo ntfsfix /dev/sdb1

提供在ntfs-3g软件包中。

1在按照http://askubuntu.com/a/364298/50885的指示后,继续上面的步骤来挂载USB设备 :) - CoDe
这个命令顺利完成,但是仍然显示“挂载卷...OK”,但是当我尝试挂载时,输出结果与问题中的相同。 - YourHelper

chkdsk /R 是在NTFS出现问题时非常重要的命令。不幸的是,我不知道有哪个Linux工具能够做到与它相似的功能。简而言之,要运行它,你需要一张Windows恢复光盘。

如果你手头没有这样的光盘,可以在另一个支持论坛的帖子中找到一个ISO文件(参见第一个答案)。

虽然有像ntfsfix(属于ntfsprogs软件包)这样的工具可以对NTFS磁盘进行表面检查,但它们通常无法修复驱动器。


3你可以安装VirtualBox并在其中安装一个XP系统。在fstab中阻止驱动器挂载(如果是USB挂载:在VBox中添加USB过滤器,以便XP能够看到“原始”USB驱动器),将驱动器挂载到XP上并运行chkdsk命令。 - Déjà vu
@ringø 如果Windows无法挂载它怎么办?它显示您的新设备无法正常工作的消息,那么我如何检查呢? - Mostafa Hussein

NTFS是微软的闭源文件系统,如果需要修复它,你需要运行chkdsk /f命令,而这需要在Windows操作系统下进行。 如果问题与硬件有关,你将需要更换硬盘驱动器。

不仅限于Windows。 - BVengerov

我曾经遇到过类似的情况,然后我将硬盘连接到Windows系统上,接着弹出一个窗口询问是否要检查磁盘错误。
如果没有弹出窗口,可以打开“我的电脑”,右键点击驱动器,然后选择“属性”,在其中找到一个名为“工具”的选项卡。

disk checking

选择“立即检查”
如果您不安全地移除硬盘,就会发生这种类型的错误。

背景:

所以我遇到了差不多相同的问题。我的硬盘上NTFS分区中有大约12个文件无法访问,也无法删除。通过backintime的错误日志得知了这些文件。我在vmware上启动了我的Windows 7,在共享文件夹中访问包含这些文件的文件夹,并将它们复制到一个新的文件夹中。但出于某种原因,我也无法从Windows 7中删除这些文件(大小为0字节)。毫不奇怪,操作系统对这些文件没有低级别访问权限。

ntfsfix无法修复,显示一切正常,而fsck则表示设备一切正常。由于文件是通过网络驱动器共享的,我无法运行chkdsk /R。而且我在物理机上没有安装Windows 7。

解决方案(适用于vmplayer的步骤,但也可以轻松地应用于virtualbox):

  1. 在您的虚拟机中添加一个新的硬盘(必须以root身份启动vmplayer)
  2. 当提示选择磁盘类型时,请选择物理磁盘
  3. 选择正确的设备(因此需要以root身份启动vmplayer)
  4. 选择“使用单独的分区”
  5. 选择包含有问题文件的分区
  6. 完成添加
  7. 启动虚拟机

对于我来说,Windows 7检测到新的分区并在启动时进行了磁盘检查。它需要清理很多(索引)。有问题的文件已经消失了。问题解决了。


在VirtualBox中,我没有看到添加物理磁盘的选项。肯定有办法可以做到,但出于某种原因,我使用的Mac版本却没有提供这个选项给我。 - Sridhar Sarnobat

我在将SD卡格式化为NTFS后得到了这个问题,我只需要先卸载它就可以了。
sudo umount -l /dev/sdx1

然后挂载又正常了