我在专用 CentOS 服务器中的硬盘上遇到了问题,症状如下:
- 随机 MySQL 数据库损坏-- 表已损坏并多次修复。每次修复几个小时后,它们又会损坏。MySQL 已完全卸载并安装新版本,数据库已从备份中恢复,但几个小时后表又损坏了。
- 随机 Rsync 传输损坏-- 从另一台服务器传输 2GB 的数据库备份时,该文件被损坏了几次,然后才最终成功传输。
- 随机文件复制损坏-- 测试时,我将 6GB 数据库备份复制到另一个文件 (cp file1 file2),并使用 md5sum 测试这两个文件,并收到不同的签名。这是可重复的:每次复制文件时,我都会得到不同的 md5 签名。复制后,md5 签名不会改变。
我已经进行的测试:
- 文件复制测试-- 如上所述,复制大文件似乎会导致新副本损坏,并且似乎是基于写入的。
- 智能控制-- 使用 smartctl 检查和测试驱动器未发现任何问题。我遇到过其他硬盘故障,使用 smartctl 时问题很明显。
- 系统日志-- 与我之前在其他服务器上遇到的硬盘问题不同,日志中没有 IO 错误消息。
此时我的问题是:
- 我可以执行哪些其他测试来确认问题?我只能远程访问服务器。
- 除了硬盘之外,是否还有其他潜在原因导致此问题?
- 有什么方法可以监控或检查将来的这个问题吗?
我只是想在提交更换服务请求之前确保问题出在硬盘上(如果不是硬盘上的问题,我最终可能会花费一些钱)。
更新:我更换了硬盘,但在复制大文件时出现了相同的损坏错误,所以问题不在于硬盘,除非我足够幸运,遇到两个出现完全相同问题的硬盘。使用“cmp”命令,我发现损坏文件中的字节 MSB 总是从 0 翻转为 1。我正在更换整个服务器硬件,所以我不知道问题的确切原因。
答案1
硬盘错误往往会被内核捕获。您的服务器是否有 ECC RAM(应该有)...如果没有它,内存错误可能会被忽略。RAID 适配器等上的任何缓存 RAM 也是如此。拔出 DIMM,清洁触点并重试,或尝试运行 Memtest。
检查驱动器上的 SMART 错误可能会有所帮助。驱动器可能会在没有 SMART 错误的情况下发生故障,但通常边缘驱动器会有这些错误。“smartctl -a /dev/sd[x]”或 smartctl --test=long /dev/sd[x] 应该会提供更多信息。
答案2
您是否在内核日志中看到 HD 写入错误?请务必检查驱动器的 SMART 统计数据,例如:http://www.captain.at/howto-linux-smartmontools-smartctl.php
此外,损坏的内存可能会导致文件损坏。您是否有对机器的远程 KVM 访问权限?在这种情况下,您应该运行 memtest 或类似程序(http://www.memtest.org/)