Linux操作系统硬件稳定性指南设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Linux操作系统硬件稳定性指南
(转载整合)
CPU 和内存疑难问题解答
Linux 负有盛名的特点之一是其非凡的稳定性。然而,如果您的硬件有缺陷或配置不正确,即使是世界上最稳定的操作系统也不会对您有什么帮助。本文中,Daniel Robbins 将告诉您如何诊断和修复CPU 问题,并告诉您如何测试RAM 缺陷。通过学习本文,您将学会确保您的Linux 系统达到尽可能好的的稳定性。
在Linux 世界中,我们中的许多人已遭受过令人深恶痛绝的硬件问题之苦。许多人曾经配置了一台Linux 机器、安装了最喜欢的分发软件、编译并安装了一些附加应用程序并且使各个部件都运行顺利,到最后发现新系统中有一个致命的硬件错误?无论是随机分段错误、数据毁坏、硬锁定、还是丢失数据其结果都是一样的-- 硬件故障使通常情况下可靠的Linux 操作系统几乎无法顺利运行。本文中,我们将深入探讨如何检测CPU 和RAM 问题-- 在缺陷部件造成一些严重的破坏之前就允许更换它们。
如果您正遭遇不稳定问题并且猜测该问题与硬件有关,我鼓励您测试CPU 和内存以确保它们工作正常。但是,即使您尚未遇到这些问题,执行CPU 和内存测试仍不失为一个好主意。在测试CPU 和内存中,您可能会检测到硬件问题,它可能会在某个不适当的时候给您带来麻烦,并可能已经造成了数据丢失或让您花了数小时却搜索不到问题的根源。正确地,前瞻性地应用这些技术可帮助您避开这些令人头疼的问题,并且如果系统通过了测试,您即可放心,系统是符合规范的。
CPU 问题
如果您有一个非常糟糕的CPU,您的机器可能无法引导Linux 或仅运行几分钟便被锁定。由于症状非常明显,所以容易诊断出这种不良状态下的CPU 是有缺陷的。但更多的是
一些不易检测到的细微的CPU 缺陷;一般情况下,不太明显的错误能引起机器无明显原因的不时锁定,或导致某些进程意外死掉。多数CPU 不稳定问题可通过“考验”CPU 来触发-- 给CPU 分配大量的工作,促使其变热,甚至在可能的情况下使它休眠。让我们看一下压力测试CPU 的一些方法。
当听说测试CPU 稳定性的最好方法之一是Linux 内建的-- 内核编译,您可能会感到奇怪。gcc 编译器是测试一般CPU 稳定性的一个很好的工具,内核编译将充分使用gcc。通过在/usr/src/linux 目录创建并运行下面的脚本可以对您的机器进行industrial-strength 内核编译压力测试:
cpubuild 脚本
#!/bin/bash make dep while [ "foo" = "foo" ] do make clean make -j2 bzImage if [ $? -ne 0 ] then echo OUCH OUCH OUCH OUCH exit 1 fi done 您将注意到此脚本重复编译内核。原因很简单-- 一些CPU 有断断续续的小故障,使得它们在95% 的时间里顺利地编译内核,但又不时地使内核编译崩溃。通常情况下,这是因为在处理器加热到一定温度(在该温度下处理器变得不稳定)之前可能进行了5 个或更多内核编译。
在上面的脚本中,注意调整-j 选项,使紧跟它的数字等于系统中CPU 的数目加1;换句话说,若是单处理器使用"2",双处理器使用"3",依此类推。-j 选项告诉make 程序行平行编译内核,确保在编译每个源文件后总有至少一个gcc 进程准备就绪-- 确保CPU 承受的压力达到最大。如果下午不准备使用Linux 机器,请继续运行此脚本并让机器重新编译内核几个小时。
可能的CPU 问题
如果脚本持续几个小时运行顺利,祝贺您!您的CPU 已经通过了第一个测试。但是,上述脚本可能会意外死掉。如何知道是CPU 有问题而不是其它的问题呢?如果gcc 发出与下面类似的错误,则很有可能是CPU 有问题:
gcc: Internal compiler error: program cc1 got fatal signal 11
这时,CPU 有三种可能的状态:
如果您输入"make bzImage" 重新进行内核编译,并且编译器死在同一文件上,请继续一遍遍输入"make bzImage"。如果试了大约十次之后,编译进程继续死在此特定文件上,那么问题很可能是由(很少)gcc 编译器错误引起的,该错误是由此特定的源文件而不是有问题的CPU 触发的。但是,这些天gcc 很稳定,那么这种情况发生的可能性很小。
如果您输入"make bzImage" 重新进行内核编译,并且稍后得到另一个信号11,那么您的CPU 很可能快要无法使用了。
如果您输入"make bzImage" 重新进行内核编译并且内核编译成功,那也不意味着您的CPU 是好的。通常这意味着仅当CPU 升到一定的温度以上(CPU 使用超过一定时间后会变热,可能进行过几次内核编译后能达到此临界点),CPU 故障才不时地显露出来。
抢救CPU
如果您的CPU 在重负载之下正发生随机的断断续续的错误,可能您的CPU 根本没什么问题-- 可能只是冷却不当。您可以检查下列内容:
您的CPU 风扇是否已插上?
它是否能相对地避免灰尘?
通电时风扇确实旋转(并以适当的速度旋转)吗?
散热片在CPU 上固定好了吗?
在CPU 和散热片之间有导热胶吗?
您的机器通风情况足够好吗?
如果一切正常,您可能希望让此打开的机器返回到内核编译测试。请让内核编译进行大约五分钟时间,然后将手放到这个正在运行的机器中并触摸周围的供电设备的外部金属保护外套。然后,用指尖小心地测试散热片的温度。如果异常地热,那么很可能您的散热片/风扇组合相对于您的特定CPU 来说不够强劲。在这种情况下,升级您的系统冷却硬件-- CPU 尚未遭受任何永久性损坏并且仍然可发挥作用。
最终CPU 测试
内核编译测试是测试CPU 稳定性的一个很好的方法,但还有一个更极端的CPU 测试方法,或许您希望使用。我将这种方法保留到最后,是因为如果CPU 只粗略地冷却过,这种特殊的测试可能会真的使其过热,理论上会对CPU 造成永久性损坏。这种测试倾向于那些通过内核测试,没有什么问题的系统-- 那些您希望确保即使CPU 负载达到极限也能轻松处理的系统。如果您的CPU 已经过适当地冷却,将会通过这个测试,如果没通过,则需要进一步冷却。
要执行"最终" CPU 测试,所做的第一件事是转到Lm_sensors 页(请参阅参考资料)并下载lm_sensors 软件包。源tarball 包含各种内核模块,这些模块结合了几乎已内建在所有当今主板上的健康监视功能。一旦正确安装了软件包并且装载(使用
prog/detect/sensors-detect 脚本指出装入哪些模块)合适的模块,您将看到一些新文件和目录出现在/proc/sys/dev/sensors 下。这些文件包含方便的信息如CPU 风扇速度、CPU 和主板温度读数以及主板电压读数,所有这些信息都会实时更新。由于我配置此软件