在设置开发实验室时,我有一个在 SATA RAID 0 上运行 ESXi 4.1.0(免费许可证)的桌面系统(在我开始这项工作时已经购买并配置;我愿意接受与我的问题相关的硬件输入。)到目前为止,它的客户机包括两个 Win2008 Server R2 64 位 VM 和 Ubuntu 10.04 64 位 VM。我正在安装到 Windows 服务器上。
我们一直在复制一些相当大的文件(超过 1 GB)用于安装,希望从(虚拟)硬盘驱动器安装比从网络或 BD-ROM 安装更快。问题是他们不断得出与原始文件不同的校验和。文件大小相同,但 md5sum 报告的数字不同(安装程序也是如此,因为当校验和不匹配时它会拒绝继续。)
我尝试过直接从 BD-ROM 复制(将操作系统驱动器连接到主机系统的物理驱动器)。我尝试过将大文件从同事的蓝光驱动器复制到他的 Windows 机器上;当我这样做时,校验和匹配。但是当我通过网络共享从他的机器复制到 VM 客户机时,校验和不再匹配。
我以为这意味着目标驱动器已损坏,于是在 vSphere 中将其删除,并添加了另一个新创建的驱动器。问题仍然存在。我不确定下一步该怎么做。
答案1
所以这是内存条损坏和影响 SATA 的 Linux 内核错误造成的。我在上面安装了 Ubuntu 10.04,最后让 memtest86+ 运行了一整晚(因为之前运行了 1.5 次也没有解决问题)。
移除损坏的 RAM 后,我开始在 /var/syslog 中看到 SATA 错误,类似于:
Dec 8 14:56:17 george kernel: [ 36.442340] ata4.00: exception Emask 0x10 SAct 0x4 SErr 0x4010000 action 0xe frozen
Dec 8 14:56:17 george kernel: [ 36.442355] ata4.00: irq_stat 0x00400040, connection status changed
Dec 8 14:56:17 george kernel: [ 36.442366] ata4: SError: { PHYRdyChg DevExch }
Dec 8 14:56:17 george kernel: [ 36.442375] ata4.00: failed command: READ FPDMA QUEUED
Dec 8 14:56:17 george kernel: [ 36.442388] ata4.00: cmd 60/08:10:88:a9:87/00:00:1b:00:00/40 tag 2 ncq 4096 in
Dec 8 14:56:17 george kernel: [ 36.442389] res 40/00:64:30:aa:8b/00:00:12:00:00/40 Emask 0x10 (ATA bus error)
Dec 8 14:56:17 george kernel: [ 36.442408] ata4.00: status: { DRDY }
Dec 8 14:56:17 george kernel: [ 36.442418] ata4: hard resetting link
Dec 8 14:56:23 george kernel: [ 41.724689] ata4: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
Dec 8 14:56:24 george kernel: [ 42.445422] ata4.00: configured for UDMA/133
Dec 8 14:56:24 george kernel: [ 42.445432] ata4: EH complete
我终于发现了这个错误:https://bugs.launchpad.net/ubuntu/+source/linux/+bug/285892?comments=all这让我尝试了较早的 Linux 内核(Ubuntu 8.04 附带的内核)。从那时起,机器一直运行良好。