访问目录时出现“输入/输出错误”


80

我想列出并删除可移动硬盘驱动器上目录的内容。但是我遇到了“输入/输出错误”:

$ rm  pic -R
rm: cannot remove `pic/60.jpg': Input/output error
rm: cannot remove `pic/006.jpg': Input/output error
rm: cannot remove `pic/008.jpg': Input/output error
rm: cannot remove `pic/011.jpg': Input/output error

$ ls -la pic
ls: cannot access pic/60.jpg: Input/output error
-????????? ? ?    ?         ?            ? 006.jpg
-????????? ? ?    ?         ?            ? 006.jpg
-????????? ? ?    ?         ?            ? 011.jpg

我想知道是什么问题?

如何恢复或删除目录pic及其所有内容?

我的操作系统是Ubuntu 12.04,可移动硬盘具有ntfs文件系统。pic在可移动硬盘驱动器上不包含或不在其上的其他目录运行正常。


添加:

dmesg我尝试列出目录内容后的输出的最后一部分:

[19000.712070] usb 1-1: new high-speed USB device number 2 using ehci_hcd
[19000.853167] usb-storage 1-1:1.0: Quirks match for vid 05e3 pid 0702: 520
[19000.853195] scsi5 : usb-storage 1-1:1.0
[19001.856687] scsi 5:0:0:0: Direct-Access     ST316002 1A               0811 PQ: 0 ANSI: 0
[19001.858821] sd 5:0:0:0: Attached scsi generic sg2 type 0
[19001.861733] sd 5:0:0:0: [sdb] 312581808 512-byte logical blocks: (160 GB/149 GiB)
[19001.862969] sd 5:0:0:0: [sdb] Test WP failed, assume Write Enabled
[19001.865223] sd 5:0:0:0: [sdb] Cache data unavailable
[19001.865232] sd 5:0:0:0: [sdb] Assuming drive cache: write through
[19001.867597] sd 5:0:0:0: [sdb] Test WP failed, assume Write Enabled
[19001.869214] sd 5:0:0:0: [sdb] Cache data unavailable
[19001.869218] sd 5:0:0:0: [sdb] Assuming drive cache: write through
[19001.891946]  sdb: sdb1
[19001.894713] sd 5:0:0:0: [sdb] Test WP failed, assume Write Enabled
[19001.895950] sd 5:0:0:0: [sdb] Cache data unavailable
[19001.895953] sd 5:0:0:0: [sdb] Assuming drive cache: write through
[19001.895958] sd 5:0:0:0: [sdb] Attached SCSI disk
[19113.024123] usb 2-1: new high-speed USB device number 3 using ehci_hcd
[19113.218157] scsi6 : usb-storage 2-1:1.0
[19114.232249] scsi 6:0:0:0: Direct-Access     USB 2.0  Storage Device   0100 PQ: 0 ANSI: 0 CCS
[19114.233992] sd 6:0:0:0: Attached scsi generic sg3 type 0
[19114.242547] sd 6:0:0:0: [sdc] 312581808 512-byte logical blocks: (160 GB/149 GiB)
[19114.243144] sd 6:0:0:0: [sdc] Write Protect is off
[19114.243154] sd 6:0:0:0: [sdc] Mode Sense: 08 00 00 00
[19114.243770] sd 6:0:0:0: [sdc] No Caching mode page present
[19114.243778] sd 6:0:0:0: [sdc] Assuming drive cache: write through
[19114.252797] sd 6:0:0:0: [sdc] No Caching mode page present
[19114.252807] sd 6:0:0:0: [sdc] Assuming drive cache: write through
[19114.280407]  sdc: sdc1 < sdc5 >
[19114.289774] sd 6:0:0:0: [sdc] No Caching mode page present
[19114.289779] sd 6:0:0:0: [sdc] Assuming drive cache: write through
[19114.289783] sd 6:0:0:0: [sdc] Attached SCSI disk

1
I / O错误可能是硬件问题(RAM或硬盘损坏)。它还可能意味着文件系统损坏或驱动程序错误。因为这是NTFS,所以我不排除这个问题。
Gilles 2012年

Answers:


36

文件系统访问尝试期间的输入/输出错误通常表示硬件问题。

输入dmesg并检查输出的最后几行。如果光盘或其连接失败,则会在此处记录。

编辑您是否通过ntfs或安装它ntfs-3g?我记得,旧版ntfs驱动程序没有稳定的写入支持,而事实证明它ntfs-3g更加稳定和安全时,它在很大程度上被放弃了。


3
我将可移动硬盘驱动器连接到我的Ubuntu 12.04,并自动挂载了它。所以我猜ntfs-3g呢?
蒂姆(Tim)

7
不要“ ”。检查-您可以通过键入mount命令并查看输出来查看如何安装所有内容。
Shadur 2012年

1
(1)dmesg在尝试列出目录内容之后,我添加了输出的最后一部分。我不知道这有什么帮助。(2)通过查看以下内容的输出,我看不到它是通过nfts-3g还是ntfs挂载的mount/dev/sdb1 on /media/removable_drive type fuseblk (rw,nosuid,nodev,allow_other,default_permissions,blksize=4096)
Tim

2
fuseblk表示它使用的是“ fuser文件系统中用户空间”方法ntfs-3g。因此,您在这方面很出色。
Shadur 2012年

19

正如Sadhur所说,这可能是由磁盘硬件问题引起的,dmesg输出是检查此错误的正确位置。

您可以从Linux发出磁盘的表面扫描/sbin/badblocks /dev/sda

检查手册页以进行更彻底的测试,了解基本修补程序(块重定位)。这与文件系统无关,因此即使在NTFS文件系统上也可以使用,因为它在“磁盘表面”级别上运行。

我个人将其设置为每月从cron运行。当然,您需要检查邮箱中是否收到cron邮件(默认情况下通常不是这种情况)。这些邮件最终以/var/mail/$USER或类似形式出现。

我创建了/etc/cron.d/badblocks

30 4 * * 3 root [ -x /sbin/badblocks ] && [ $(date +\%d) -le 7 ] && /sbin/badblocks /dev/sda

谢谢!要运行您建议的命令,就/sbin/badblocks /media/removable_drive我而言?
蒂姆(Tim)

否。根据dmesg输出,您必须使用sdb:/sbin/badblocks /dev/sdb或sdc。我真的不知道发生了什么/您是怎么做的dmesg
jippie 2012年

您可以/dev/sd{x}使用fdisk -l命令找到磁盘
lucidyan '18

记住badblocks应用程序可以接受开始和结束块,以防您想“暂停/继续” :)
Aquarius Power

9

您的文件系统已损坏,对于NTFS卷,您应该chkdsk在Windows系统下运行,但是几乎无法恢复。有时您可能需要格式化磁盘。


谢谢!我的其他目录都很好。我不能格式化整个驱动器,仅从相关目录中回收空间吗?
2012年

1
@Tim,您必须将所有其余部分复制出来,格式化并复制回去...我不知道是否可以删除单个节点...不熟悉NTFS结构
雏菊2012年

3
格式化之前,请badblocks在Linux上尝试使用该命令。
jippie 2012年

7

对我有效的解决方案是将ntfs-3g版本从2014版本降级到2012版本。这应该可以解决您的ntfs分区访问问题。从长远来看,这不是解决方案,因为最终您将需要运行最新版本。

更多信息在这里


3
非常感谢。那解决了我的问题。我从源代码安装了最新的稳定版本(2016.2.22),现在它可以正常工作。我使用的安装说明:tuxera.com/community/open-source-ntfs-3g
Ricardo Pereira

好的,这很高兴。因此,从2012年到2016年年初之间,基本上没有一个窗口,在此期间该驱动器根本不起作用。

2

我只是想将解决方案添加到该线程中以使他人受益-当电源出现故障时,我在系统上做了一些工作-我必须以错误的顺序重新连接SATA电缆,因为当我切换它们时,一切都可以正常工作-不知道为什么引导磁盘需要位于特定的SATA端口上,反正可能是其他人的答案。


2

没有人提到如果Linux工具无法正常工作并且只能使用Mac而不能使用Windows时该怎么办。

可以使用Paragon NTFS在OS X上修复

就我而言gparted,要去找一台找不到的Windows PC。但是Mac出现了,为此提供了出色的软件。安装了试用版,进行了验证,然后进行了修复 -瞧!


我在macOS上遇到过一个案例,当时这种错误是由于在构建工具链中使用sshfs(貌似)而产生的。通过brew安装osxfuse和sshfs有所帮助。
sdd

2

我只是想分享我的经验:在FreeBSD 10.3上,我将外部硬盘驱动器安装在

$ sudo ntfs-3g /dev/da0s1 /media

在硬盘驱动器内部,我执行了一个mkdir操作:创建一个目录,然后使用mv命令将一些文件移动到该目录中。最后,我执行了以下命令:

$ sudo sync

然后,将硬盘驱动器安装在内核为4.4.0-78-generic的Linux机器上。现在,当我列出硬盘驱动器的内容时​​,在FreeBSD上创建的名为的目录Jeff如下所示:

$ ls -lhrtci
ls: cannot access 'Jeff': Input/output error
total 20K
  ? d????????? ? ?    ?       ?            ? Jeff

在此处输入图片说明

另外,当尝试删除Jeff目录时,我收到以下错误消息:

$ sudo rm -f -R Jeff
rm: cannot remove 'Jeff': Input/output error

在此处输入图片说明

我无法摆脱JeffLinux机器上的目录,因此我使用了FreeBSD机器,然后再次将硬盘驱动器重新安装在FreeBSD上。但是lscdrm在FreeBSD命令生成相同的Input/output error。看起来FreeBSD ntfs-3g软件包上有一个错误。


更新

我将所有数据从外部硬盘驱动器移至Linux机器,当然Jeff由于I / O错误而无法移动损坏的文件。然后,我将外部硬盘驱动器重新格式化,包括将音量清零和坏扇区检查,如下所示:

$ sudo mkfs.ntfs /dev/sdb1

然后将所有数据移回外部卷。这样,我丢失了名为的损坏文件Jeff,但是,我的外部硬盘驱动器没有任何I / O错误。


0

我发布了当我尝试访问发生此错误的磁盘时,它试图将最后复制的文件写入到最后一个文件中,然后访问尝试失败,因为已写入的记录与最后复制的项目不匹配,因此失败。拯救磁盘的最健康方法是删除Windows中复制的最后一个或多个项目。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.