我是 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
非常感谢任何帮助,在此先感谢您
对我来说,我在尝试复制总计大约 128GB 的磁盘映像时遇到了这个错误。
cp
试图将整个内容加载到内存中以便将其重写回来,但这显然行不通,因此必须分块完成。我发现对文件进行分块的最好方法是通过 ssh 强制它。你必须使用
user@localhost
; 省略它会恢复到cp
类似的行为。如果这不是 virtualbox 中的“磁盘”,而是存储 vm 映像的真实物理磁盘,那看起来很糟糕。
/dev/sda 上有读取错误。通过将磁盘块永远标记为坏块
, 可以自动处理,并使用不同的块代替。 为此,硬盘需要再读取一次数据,可能要尝试数百次读取。 但是磁盘放弃了这个:
“Add.Sense:未恢复的读取错误 - 自动重新分配失败”
磁盘上确实存在严重的错误——只是尚不清楚它们是仅在一个位置,还是分散开来,以及它们是否会随着时间的推移而增加。
硬盘可能很快就会出故障,
就像“刚才”一样。
或者下周,或者根本没有。
如果它在
e2fsck
测试中没有问题,你仍然不能将它用于任何重要的事情。一旦
e2fsck
确认有介质错误,最好直接更换。否则,尽快备份,
启动 live CD 左右(或找到卸载/不安装
/home
的方法),并检查坏块,例如
sudo e2fsck -c -v /dev/sdXN
考虑到在较大的机械硬盘上,检查坏块可能会花费很多时间,从几小时到一两天不等。部分原因是程序需要分别检查每个磁盘块,并分别处理问题。而且,如果磁盘在读取时出现错误,则在多个级别上进行多次重试
e2fsck
甚至不知道存在问题。对于每个磁盘块。e2fsck
以自动修复模式运行并暂时搁置计算机可能是正确的做法:sudo e2fsck -p -c -v /dev/sdXN
有关详细信息,请参阅ubuntuforums:/var/log/messages中的随机冻结和“未恢复的读取错误”。
硬盘的扇区已损坏。DRDY ERR - 设备就绪检查错误。UNC - 不可纠正。
由于各种原因,例如在大量写入期间突然关闭,高温,进行的读写操作以及硬盘的质量在这种情况下起着重要作用。
一旦一个扇区被损坏,如果内核试图访问这些扇区,那么您将收到此错误。
您可以使用 seatools 暂时从该错误中恢复。但不会永远解决这个问题,它可能会在一段时间后再次出现。
运气好的话,几天内不会再出现。
最好将数据备份到新硬盘上,更换硬盘。
...我遇到了类似的问题...在我的情况下,我使用的是 USB 适配器 ...只需运行 >
rsync -avz $YOUR_FILE $FILE_DIRECTORY_LOCATION/;
使用此方法在 USBxHDsata 之间传输 > 300G