cp无法复制,并显示以下错误:“ cp:读取'file'时出错:输入/输出错误”和“ cp:扩展'file'时失败:输入/输出错误”


10

我是Ubuntu上Oracle Virtualbox的用户。而且我曾经复制vdi文件作为一种备份。以前,我多次执行此操作(复制vdi文件,然后将其复制回)没有任何问题。

但是今天我遇到了这个错误

VirtualBox VMs/win_7$ cp ../../Bkps/win_7.vdi .
cp: error reading ‘../../Bkps/win_7.vdi’: Input/output error
cp: failed to extend ‘./win_7.vdi’: Input/output error

我用谷歌搜索了一下,但是从类似问题的建议中我并没有感到遗憾。有人可以建议如何解决这个问题吗?

来自的输出dmesg是(我对此一无所知)

[ 2347.982876] ata1.00: exception Emask 0x0 SAct 0x1900406f SErr 0x0 action 0x0
[ 2347.982887] ata1.00: irq_stat 0x40000008
[ 2347.982895] ata1.00: failed command: READ FPDMA QUEUED
[ 2347.982908] ata1.00: cmd 60/08:70:d0:da:f4/00:00:2e:00:00/40 tag 14 ncq 4096 in
[ 2347.982908]          res 41/40:08:d0:da:f4/00:00:2e:00:00/00 Emask 0x409 (media error) <F>
[ 2347.982915] ata1.00: status: { DRDY ERR }
[ 2347.982919] ata1.00: error: { UNC }
[ 2348.395657] ata1.00: configured for UDMA/133
[ 2348.395727] sd 0:0:0:0: [sda] Unhandled sense code
[ 2348.395733] sd 0:0:0:0: [sda]  
[ 2348.395737] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[ 2348.395741] sd 0:0:0:0: [sda]  
[ 2348.395745] Sense Key : Medium Error [current] [descriptor]
[ 2348.395752] Descriptor sense data with sense descriptors (in hex):
[ 2348.395764]         72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00 
[ 2348.395770]         2e f4 da d0 
[ 2348.395772] sd 0:0:0:0: [sda]  
[ 2348.395774] Add. Sense: Unrecovered read error - auto reallocate failed
[ 2348.395775] sd 0:0:0:0: [sda] CDB: 
[ 2348.395776] Read(10): 28 00 2e f4 da d0 00 00 08 00
[ 2348.395781] end_request: I/O error, dev sda, sector 787798736
[ 2348.395792] ecryptfs_decrypt_page: Error attempting to read lower page; rc = [-5]
[ 2348.395795] ata1: EH complete
[ 2348.395797] ecryptfs_readpage: Error decrypting page; rc = [-5]
[ 2351.264987] ata1.00: exception Emask 0x0 SAct 0x7f80400 SErr 0x0 action 0x0
[ 2351.264998] ata1.00: irq_stat 0x40000008
[ 2351.265005] ata1.00: failed command: READ FPDMA QUEUED
[ 2351.265019] ata1.00: cmd 60/08:50:d0:da:f4/00:00:2e:00:00/40 tag 10 ncq 4096 in
[ 2351.265019]          res 41/40:08:d0:da:f4/00:00:2e:00:00/00 Emask 0x409 (media error) <F>
[ 2351.265025] ata1.00: status: { DRDY ERR }
[ 2351.265029] ata1.00: error: { UNC }
[ 2351.403371] ata1.00: configured for UDMA/133
[ 2351.403425] sd 0:0:0:0: [sda] Unhandled sense code
[ 2351.403426] sd 0:0:0:0: [sda]  
[ 2351.403428] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[ 2351.403429] sd 0:0:0:0: [sda]  
[ 2351.403430] Sense Key : Medium Error [current] [descriptor]
[ 2351.403433] Descriptor sense data with sense descriptors (in hex):
[ 2351.403434]         72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00 
[ 2351.403439]         2e f4 da d0 
[ 2351.403442] sd 0:0:0:0: [sda]  
[ 2351.403444] Add. Sense: Unrecovered read error - auto reallocate failed
[ 2351.403445] sd 0:0:0:0: [sda] CDB: 
[ 2351.403446] Read(10): 28 00 2e f4 da d0 00 00 08 00
[ 2351.403451] end_request: I/O error, dev sda, sector 787798736
[ 2351.403463] ecryptfs_decrypt_page: Error attempting to read lower page; rc = [-5]
[ 2351.403466] ecryptfs_readpage: Error decrypting page; rc = [-5]
[ 2351.403470] ata1: EH complete

非常感谢您的帮助,在此先感谢您


也许vdi文件所在的磁盘已满?试试df -h
Volker Siegel 2014年

哦,等等-您是在virtualbox还是在外部进行所有操作?
Volker Siegel 2014年

@VolkerSiegel我在主机系统上进行此操作。副本存储所在的分区以及我尝试制作副本的分区有280GB可用空间,因此这已经足够了,因为我已经说过很多次了。我想这可能是硬盘的错误
user907860 2014年

/ dev / sda分区上的文件系统是什么?(mount | grep /dev/sda
Volker Siegel 2014年

@VolkerSiegel输出为/dev/sda5 on /home type ext4 (rw)
user907860

Answers:


7

如果这不是virtualbox内的“磁盘”,而是存储vm映像的实际物理磁盘,则看起来非常糟糕。

/ dev / sda上存在读取错误。通过将磁盘永远标记为坏块
可以自动进行处理,而改用其他磁盘块。 为此,硬盘需要再读取一次数据,也许要尝试几百次读取。 但是磁盘放弃了

“添加。意义:无法恢复的读取错误-自动重新分配失败”

磁盘上确实存在严重的错误-尚不清楚它们是仅在一个位置还是在一个位置传播,以及它们是否随时间增加。

硬盘可能很快就会失效,
例如“ just now”
还是下周,或者根本没有。

如果它在e2fsck测试中没问题,您仍然不能将其用于任何重要的事情。

一旦e2fsck确认存在中等错误,最好是将其替换。

否则,请尽快进行备份
启动实时CD左右(或找到一种方法来卸载/ 不装载/home),
并检查是否有坏块,例如通过

sudo e2fsck -c -v /dev/sdXN

考虑到在较大的机械硬盘上,检查坏块可能要花费很多时间,可能要花费数小时甚至一两天。部分原因是程序需要分别检查每个磁盘块,并分别解决问题。但是,如果磁盘在读取时出现错误,则很多重试都会在多个级别进行,e2fsck甚至不知道存在问题。对于每个磁盘块。

e2fsck在自动修复模式下运行并让计算机搁置一段时间可能是正确的事情:

sudo e2fsck -p -c -v /dev/sdXN

有关详细信息,请参见ubuntuforums:随机冻结和/ var / log / messages中的“未恢复的读取错误”


我不明白您所说的“实际物理磁盘”是什么意思。这不是真实的磁盘,这是Virtualbox虚拟驱动器的文件
user907860

好的,有一些问题需要确认,我可能是错误的:该文件win_7.vdi是vm映像,对吗?它在任何虚拟机之外,对吗?我的意思是文件win_7.vdi在真实磁盘上-对吗?该dmesg输出是从VM外,对吧?在这种情况下,dmesg日志中的错误位于真实的硬盘/ dev / sda上。
Volker Siegel 2014年

是的,对您的所有问题都“正确”
user907860

很好-但是对磁盘不利...您能更换它吗?它可能很快就会失败,例如“刚才”。还是下周,或者根本没有。如果它在e2fsck测试中没问题,您仍然不能将其用于任何重要的事情。
Volker Siegel 2014年

好的,谢谢,现在我在工作,所以我将尽快检查您的答案
user907860 2014年

6

对我来说,尝试复制总计约128GB的磁盘映像时遇到此错误。cp试图将整个内容加载到内存中以将其改写回去,但这显然行不通,因此必须分块完成。我发现对文件进行分块的最好方法是强制通过ssh。

scp user@localhost:/path/to/source /path/to/dest

你必须使用user@localhost; 省略它会恢复为cp类似行为。


2

硬盘的扇区已损坏。DRDY ERR-设备就绪检查错误。UNC-无法纠正。

由于各种原因,例如在大量写入过程中突然关闭,高温,执行的读取操作以及硬盘的质量在这种情况下起着重要的作用。

一旦扇区损坏,并且如果内核尝试访问这些扇区,则将收到此错误。

您可以使用seatools暂时从此错误中恢复。但是不会永远解决此问题,它可能会在以后再次发生。

如果幸运的话,它不会在几天后再次发生。

更好地将数据备份到新硬盘上并更换硬盘。

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.