我是 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
我对此进行了一些 Google 搜索,但不幸的是,从类似问题的建议中我什么也没找到。有人能建议如何解决这个问题吗?
输出是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
非常感谢您的帮助,提前谢谢您
答案1
对我来说,我在尝试复制总计约 128GB 的磁盘映像时遇到了此错误。cp
我试图将整个文件加载到内存中,以便将其重写回来,但这显然行不通,所以必须分块进行。我发现对文件进行分块的最佳方法是强制通过 ssh。
scp user@localhost:/path/to/source /path/to/dest
您必须使用user@localhost
;省略它将恢复为cp
类似行为。
答案2
如果这不是虚拟机内的“磁盘”,而是存储虚拟机映像的真实物理磁盘,那么看起来就很糟糕。
/dev/sda 上存在读取错误
。自动的通过将磁盘块标记为坏块永远,并使用不同的。
为了实现这一点,硬盘需要读取数据再一次,也许尝试几百次读取。
但磁盘放弃关于此:
“Add. Sense:未恢复的读取错误 - 自动重新分配失败”
磁盘上确实存在严重错误 - 但尚不清楚这些错误是否仅存在于一个位置,或者是否会扩散,以及它们是否会随着时间的推移而增加。
硬盘可能很快就会出现故障,
例如“现在”。
或者下周,或者根本不会。
如果测试结果正常e2fsck
,你仍然不能将它用于任何重要的事情。
一旦e2fsck
确认存在中等错误,最好直接更换它。
否则,备份尽快
启动一个 Live CD 左右(或者找到卸载/不挂载/home
)
并检查是否有坏块,例如
sudo e2fsck -c -v /dev/sdXN
考虑到在更大的机械的硬盘,检查坏块可能需要很多时间,可能在几小时甚至一两天之间。部分原因是程序需要单独检查每个磁盘块,并单独处理问题。但是,如果磁盘在读取时出现错误,则多次重试e2fsck
在知道存在问题之前,需要对每个磁盘块进行多层次的检查。
e2fsck
运行自动修复模式并让计算机静置一段时间可能是正确的做法:
sudo e2fsck -p -c -v /dev/sdXN
答案3
您的硬盘扇区已损坏。DRDY ERR - 设备就绪检查错误。UNC - 无法纠正。
由于各种原因,例如在大量写入期间突然关机,高温,执行读写操作以及硬盘的质量在这种情况下起着重要作用。
一旦某个扇区损坏并且内核尝试访问这些扇区,那么您就会收到此错误。
您可以使用 seatools 暂时恢复此错误。但无法永久修复此问题,以后可能还会再次出现。
如果运气好的话,那么几天内它就不会再复发。
最好将数据备份到新硬盘上并更换硬盘。