我正在 Hyper-V 集群上构建 CentOS 6.2 Web 服务器,但遇到了一个重大问题。当前的设置是这样的:
操作系统:CentOS 6.2。最小服务器安装 安装的软件包括:
- Hyper-V Linux 集成驱动程序
- 网络敏
- 阿帕奇2
- MySQL 5.*
- 带有 APC php 加速器的 php 5
- 网络服务器正在运行 Moodle(如果提及它有任何区别的话)
我最后安装的是“Hyper-V Linux 集成驱动程序”之后...几天后,整个操作系统因控制台上的“任务阻塞超过 120 秒”错误而锁定。我现在发现这个错误在长时间的运行时间内会引起丑陋的后果,并且会在第二次下载后通过 yum update 命令标记来触发。
我已经fsck
按照其他论坛上的建议进行了尝试,但没有成功。大多数其他论坛都指出硬件问题是导致此处无法使用 Hyper-V 集群的原因(当前正在运行十几个高需求服务,没有任何问题)
编辑:(应该第一次提到这个)这个错误是我在整个内核锁定之前看到的最后一件事。此后修复它的唯一方法是硬重新启动虚拟机。
非常感谢任何解决或诊断问题的帮助。
先感谢您)
更新1:
好的,这里严重升级。我现在同一集群的另外 2 台 Linux 机器也出现了相关问题,并且它们都同时崩溃了。我有一台 Ubuntu 服务器抱怨状态:{DRDY},第二台 CentOS 6.2 服务器抱怨与第一台服务器相同的错误,并且第一台服务器以新的方式崩溃了......
Ubuntu DRDY 错误
第一次 CentOS 内核崩溃
更新2: 好的,我们修复了集群,但两个 CentOS 虚拟机的问题仍然存在。我已经解决了 centOS 的第一个问题,将其移至非集群的 Hyper-V 并将所有 Linux 集成驱动程序列入黑名单,然后完全卸载它们。看来是客户计算机的 Linux 集成驱动程序以及集群系统的问题导致了此问题。第二台 CentOS 机器就没那么幸运了...尽管我已将其移至非集群 Hyper-V 并将驱动程序列入黑名单,但不幸的是,它仍然在卸载 Linux 集成驱动程序的过程中崩溃了。现在我遇到了一个非常大的问题,驱动程序包显示在 rpm 数据库中,但只显示一半。
问题:有没有一种方法可以在不使用 rpm 或 yum 的情况下完全删除这些驱动程序,因为现在两者都抱怨它在那里,但又不在那里,无法删除它,并且尝试执行任何占用磁盘空间太大的操作(例如使用 rpm 和 yum),导致整个系统再次崩溃。按照这个速度,我最终可能会完全重建它,但我需要它在托管关键服务时尽快稳定下来。
答案
好的,我最后一个麻烦的 CentOS 虚拟机现在已经修复了。为了删除损坏的 Linux 集成驱动程序并稳定系统,我执行了以下操作:
- 我下载了 CentOS Live CD 并在有故障的虚拟机中启动它。
然后我创建了一个新文件夹
$mkdir /mnt/OS
然后安装有故障的操作系统的根文件系统(在我的例子中是 sda2)
$mount /dev/sda2 /mnt/OS
然后我安装启动分区(在我的例子中是 sda1)
$mount /dev/sda1 /mnt/OS/boot
然后我 chroot 到故障操作系统
$chroot /mnt/OS
然后运行 rpm remove package 命令(确保在此过程中删除所有重复项)
$rpm -e --allmatches kmod-microsoft-hyper-v
这个过程可能需要一些时间,但完成后我可以重新启动虚拟机,并且我的系统在没有集成驱动程序的情况下启动并运行,但它现在允许包更新而不会崩溃。
在此之后,我想我将把 Hyper-V 驱动程序排除在外,直到我确信它们可以工作并且稳定为止。
答案1
您的内核已启用此任务块检测功能。在大多数情况下,这应该没问题,因为它不是真正的块。您只需使用上面建议的命令即可禁用此功能。
我以前遇到过类似的问题。在内核中,如果您使用 down(semaphore) 而不是 down_interruptable(semaphore) 来等待信号量,并且该信号量在 120 秒内没有启动。它将打印该信息。其实信号量在120秒内没有释放是可以的。
如果除了这个 INFO 之外一切正常,只需通过 echo 0 禁用它即可。