实战:排除 AIX 服务器的故障

运维 系统运维
当系统情况不符合预期时,应该做什么?当服务器看起来不正常时,如何在 AIX 中解决这些棘手的问题?在本文中,学习在日常实际情况下排除故障的基本技能。

 在本文中,按相似的方式学习如何解决 IBM AIX® 中的实际问题。您会了解相关的工具和知识,从而提升解决可能会遇到的一些棘手问题的技能。本文给出我曾经遇到的两个有意思的场景,提供探测异常情况的步骤。然后停一下,让您推测什么出了问题,***给出答案。

示例问题

首先描述我作为系统管理员遇到的两个问题。

问题 1:服务器更大,而计算能力却降低了

当时,我需要把一个 AIX 5.3 LPAR 从基于 POWER4™ 的老式 IBM pSeries® p670 服务器迁移到基于 POWER6® 的全新的 pSeries p570 服务器上。老的服务器资源不足(使用 Workload Manager 管理服务器上主要应用程序的资源),因此新硬件上新的动态处理器资源应该会提供我需要的计算能力。我对这个 LPAR 执行了 mksysb,然后使用 Network Installation Manager 在新硬件上恢复它并通过 SAN 磁盘映射它。

我启动了这个 LPAR,直到启动应用程序之前看起来一切顺利。突然之间,用户开始打电话来了。他们根本无法访问自己的产品了。当我登录时,发现服务器完全是空闲的。服务器上根本没有消耗资源很多的进程。用户为什么会遇到问题?

问题 2:出故障的硬盘无法解除镜像

我的一台服务器具有镜像的 root 磁盘。有一天,错误报告指出在其中一个磁盘上坏块无法重新定位。我知道这是硬件故障的先兆,所以开始解除镜像。但是,服务器说无法完全解除镜像,因为其中一个逻辑卷只有一个好拷贝,它就在出故障的磁盘上。我应该怎么解决这个问题并更换硬件?

故障排除过程

记住这两个示例问题,现在看看解决它们的过程。

步骤 1:别乱动

一旦发现有麻烦了,最明智的举动就是别乱动。就像印地安纳·琼斯在 “夺宝奇兵” 中一样,如果发现踩上地板就会有飞镖射向您,那么就停在原地,不要继续前进了。更多的变动只会让问题复杂化,可能把情况弄得更糟。当一个问题影响系统正常运行时,不得不解决多个问题是没有意义的。

对于 ***个示例问题,我让用户马上退出系统,然后我终止应用程序。我知道在性能很差时用户的查询和输入会中断,这可能会破坏他们的数据,在我检查系统之前不希望他们的环境有进一步的变动。尽管用户不愿意听到他们现在不能使用新的服务器,但是知道我正在查找问题的原因,他们会很高兴。另外,这让我有时间按自己的方式执行其他故障排除步骤。

步骤 2:先从基本命令开始,然后增加复杂性

在我学功夫时,听到了一位二级黑带在公共汽车站制伏小偷的故事。同学们都想知道她用哪一招放倒了进攻者。是金虎式吗?还是八卦掌中的圈掌?我们甚至想像她非常厉害,用醉八仙把对方放倒了。结果都不是:她使用的是白带在班上最初学习的技术之一 — 肘击前胸,再拳击鼻子。

AIX 提供了用于检查服务器的各个方面的命令,包括硬件和软件。即使是最基本的命令也会为分析问题提供很好的基础。当信息不够或仍然有些东西表现不正常时,可以开始尝试更复杂、更强大的工具。但是,应该从最简单的命令和想法开始,然后再使用更强大的工具。

例如,AIX errpt 是在各种风格的 UNIX® 中都能够找到的基本工具之一。它提供关于硬件和软件问题的各种信息。如果使用 –a 标志或 –j 选项和标识码,会产生更详细的输出,输出描述问题的类型、受影响的组件以及系统如何根据错误的类型做出反应。如果它提供的信息不够,可以用 diag 命令进一步检查系统,这个命令会在硬件和操作系统的各个部分上运行测试。

对于 第二个示例问题,我先通过查看 errpt 输出寻找硬件问题,然后使用 unmirrorvg 命令 — 尝试解除镜像的简单但强大的工具 — 而不是对磁盘上的每个逻辑卷运行 rmlvcopy。当我发现有一个逻辑卷无法删除时,就使用 lspv、lsvg 和 migratepv 等其他基本命令收集信息。我尝试用 extendvg 和 mirrorvg 在另一个磁盘上创建卷组的另一个拷贝。这仍然留下了一些旧的分区,所以我更进一步,用 syncvg 和 synclvdom 协调 Object Data Manager 与服务器。***,我用 migratelp 尝试把各个逻辑分区转移出这个磁盘。不幸的是,这些工具都不奏效,但是它们提供了大量信息。

步骤 3:再现问题

按照科学的方法,任何假想和试验的关键一点是,能够重建过程并产生相同的结果。如果做不到,结论至少是不确定的。在最糟糕的情况下,这会颠覆科学家的理论并损害他们的名誉,就像在上世纪 90 年代宣称实现了室温冷聚变的物理学家一样。

或者,按我的说法:如果一开始不成功,那么在其他地方试试是否可以造成同样的问题。

在管理 AIX 服务器时,如果某些东西出了问题,而您有再现问题所需的资源,那么在另一个相似类型的 LPAR 上执行相同的操作,看看是否会产生相同的结果。如果在另一个服务器上修改相同的属性会造成相同的结果,就可以推论这个操作就是问题的根源。但是,如果产生了完全相反的结果,那么要研究服务器之间的细微差别,尝试推测造成问题的原因。

对于***个示例问题涉及的 LPAR,我发现当把 SAN 磁盘交换回老的 p670 服务器并启动它时,问题没有出现。用户能够访问他们的应用程序,CPU 承受正常的负载,CPU 利用率为 80% 多(10% 内核 + 70% 用户)。因此,我能够断定是 p570 服务器上特有的某些东西导致了问题,而不是迁移过程中引入的某些东西。

步骤 4:研究问题

在信息时代,只需敲几下键盘,点几次鼠标,就能够获得大量信息。更好的是,系统管理员往往是大型社区的成员,社区记录了很多人多年的经验。

首先应该查阅生产商和销售商自己的资料。IBM 这样的公司在网上公开他们的所有手册、Redbook、技术文件甚至 man 页面以供研究。只需在主站点的搜索栏中输入简单的关键字,就可以找到大量可能有帮助的建议和信息。

我推荐的其他信息源包括其他系统管理员经常访问的各个新闻组、论坛和站点。成天与服务器打交道的人往往会经常访问技术站点,并对在工作过程中看到的东西发表评论。对于公开的求助,大多数系统管理员乐于提供指点,或通过电子邮件往来提供帮助。另外,常常可以找到与操作系统和软件的其他版本相关的旧信息,可以通过它们找到更多信息。

对于这些信息源,主要的使用技巧是使用适当的关键字集。如果我使用 Google 这样一般性的网站研究 AIX 问题,那么会确保搜索字符串以 AIX 开头,以便排除与其他风格的 UNIX 相关的信息。然后,可能会包含命令的输出或 errpt 产生的标签等内容。我还会确保在特定的短语前后加上双引号 (""),以便把搜索限制在这些特定的问题,避免无关的信息,对于常用的单词(比如 Logical Volume Manager)尤其应该这么做。

对于磁盘坏块重定位失败的问题,在 Google 上使用短语 AIX "bad block relocation" failure 进行搜索产生了几百个结果,但是看起来没有与我的情况相符的。

步骤 5:取消所有更改

有时候,解决问题最明智的做法是取消已经做的所有更改,回到原来的状态。这个步骤并非总是可行的。有时候,过分热心的 C 级执行官强迫您回退他们的服务器。或者,由于时间紧迫,有必要这么做。无论如何,回退是可供选择的***的战术之一。

我把这个步骤放在故障排除步骤列表的中间位置,这是因为有时候必须早点儿这么做,有时候要晚一些。但是根据我的经验,我觉得***先完成前四个步骤,然后再考虑取消所有更改。如果在故障排除过程开始时马上取消更改,问题很可能没有解决,下一次尝试相同的工作时还会遇到相同的麻烦。如果在过程中过晚回退,会影响正常运行时间,或者让问题复杂化,到了不可能回退的程度。

对于***个示例,由于时间的原因,我实际上不得不回退了服务器迁移操作。如果这个生产服务器停运更长时间,用户和公司就会损失金钱。重新安排这项工作花了一周时间,这让我能够多做一些研究,但是当我再次尝试迁移时,问题又出现了。对于第二个示例,无法对硬件问题执行回退。无法告诉服务器,“回到发生坏块重定位错误之前的状态!” 我不得不继续努力克服磁盘的故障。

步骤 6:每次只更改一处规则

如果上面的所有步骤都不奏效,您决定开始更改主要组件或者对服务器做更激进的操作,那么要记住一条最重要的规则:每次只更改一处。

多处更改会导致两种情况之一。首先,如果这些更改解决了问题,那么您不知道哪个更改是有效的操作。如果您不关心究竟是什么解决了问题,这可能没什么大不了的,但是出色的系统管理员都希望掌握更多知识,因为他们知道问题往往会在同一地方多次出现。第二,如果问题没有解决,这可能会引入更多复杂性。继续这样做,您会不知道要取消哪个更改。如果走得足够远,系统会乱成一锅粥而您被弄得一头雾水。(xkcd 上有一个关于这种情况的笑话。)

如果做一处更改之后问题没有解决,通常希望取消它并尝试其他措施。在***个示例中就是这种情况:当我对比两个服务器的 Hardware Management Console 概要文件时,看到它们不一样。我注意到老的 POWER4 硬件使用专用的 CPU,而新的 POWER6 硬件使用不封顶的共享 CPU 池。我想知道这一差异如何影响 CPU 性能,所以修改了 POWER6 硬件上的概要文件以使用专用的 CPU。奇怪的是,根据用户的反馈,服务器 “正常” 了,我在处理器上看到了负载。因此,我知道问题肯定与 CPU 资源有关,但是需要查明为什么会这样。

步骤 7:求助于 IBM Support

如果已经尝试了所有合理的步骤,需要新的想法,通常应该联系 IBM Support。他们有高级的故障排除工具,有精通操作系统和相关产品(比如 VIO 和 PowerHA)的每个方面的专家,可以调出相关的案例以证实并协助解决相似的问题。但是,如果您以前没有拨打过 800-IBM-SERV,有几点需要了解。

首先,您应该有 IBM 合同号。有多个支持级别,从***级的由专人负责的 24x7x365 支持直到适用于非关键服务器的上午 8 点到下午 5 点支持。可以直接从 IBM 购买这些支持服务包,也可以与增值销售商签订合同。

还需要提供一些信息,让 IBM Support 可以调出您的账户 — 通常是服务器所在地的电话号码、序列号、合同号或物理位置。这一信息很大程度上取决于您建立的是硬件案例还是软件案例。

还必须让支持人员了解问题的严重程度或优先级。优先级分为从 1 到 4 几个级别。1 级通常涉及系统停止运行或生产影响,对于这个级别会马上把电话转给技术人员。4 级意味着处理时间可以长一些,通常用于一般的管理问题。

您描述问题并建立支持案例之后,会给您一个跟踪号 — 通常称为 PMR。这个号码向与您协作的其他支持人员标识这个案例。硬件和软件 PMR 是惟一的,如果您的问题跨越边界,就需要得到新的号码。

对于两个示例问题,我都不得不联系 IBM。对于***个问题,IBM 调动从 VIO 支持到内核团队的多方面人员参与解决问题。对于第二个问题,只有硬件技术人员参与,我提供了来自 snap 命令的信息以供分析。

步骤 8:走极端

有时候,没有其他方法能够解决问题,只能尝试大多数人认为是发疯的某些非正统措施。当您已经绝望,甚至工作或生命岌岌可危时,通常会这么做。在这种情况下,IBM 支持人员常常会说,“如果您这么做,就会处于不受支持的状态,必须重新开始,然后我们才能够支持它。” 但是,如果您的解决方案是有效的,可能能够化险为夷。

对于我的第二个示例,在我联系 IBM Support 之后,他们说惟一的方法是生成 mksysb 映像以恢复服务器。由于我们没有更多东西可失去了,与我的管理员团队讨论之后,我们打算对 root 磁盘做三重镜像,然后从服务器上拨出磁盘。拨出磁盘可能导致服务器无法引导。但是,潜在的风险是拨出磁盘可能干扰更大的服务器,让它上面的所有 LPAR 崩溃。我们真敢这么做吗?

您来回答

既然我已经提供了问题的背景,该您来回答了。总结一下:

把一个启用了 Workload Manager 的服务器迁移到更快的硬件上,但是工作不正常,除非是把 LPAR 概要文件设置为使用专用的 CPU 而不是动态 CPU。这是为什么?

如何从无法撤销配置的磁盘恢复服务器,或者取出无法移出这个磁盘的物理分区中的数据?

如果您有主意了,就继续。

实际发生的情况

造成***个问题的是 Workload Manager。使用它的应用程序被限制为只能使用 CPU 的 50%。因此,当系统管理程序轮询循环探测到那个 LPAR 时,它问 “您需要多少 CPU?” 服务器回复,“我目前只使用分配的 CPU 的一半儿。” 因此,系统管理程序会动态地把 CPU 标称值减少一半儿。这个循环重复几次之后,CPU 计算能力多次减半,基本上接近零了。为了解决这个问题,把 Workload Manager 池调整为最多使用 CPU 的 100%,这样动态的 CPU 标称值会适当地限制其本身。

对于第二个示例,最终只能执行备份和恢复。对于块重定位失败,没有企业乐意采用临时解决方法。根据 IBM Support 所说,这个问题很少见,只能执行 mksysb 把数据备份到好的磁盘上并恢复系统,没有其他选择。恢复操作系统之后,就可以以安全的方式热交换坏磁盘并更换它,而不会危及硬件上的其他 LPAR。

结束语

希望您对系统管理员如何排除 AIX 服务器的故障、可以使用的战略、应该避免的做法以及在哪里寻找解决问题的建议有了一些认识。这些步骤并不完全适合所有情况,还有其他选择,但是这些步骤可以指出正确的方向。

【编辑推荐】

  1. 甲骨文抛弃安腾可能是IBM AIX业务的机会?
  2. aix环境下创建DB2表空间的实现方法
  3. 英特尔下一代安腾亮相 Unix市场竞争惨烈
责任编辑:黄丹 来源: IBMDW
相关推荐

2009-10-21 14:39:27

HP服务器故障排除

2012-07-30 09:20:50

2009-06-27 20:20:00

LinuxNFS故障

2009-09-17 18:09:53

Nis服务器

2009-10-21 14:16:50

服务器故障排除

2009-12-04 09:47:47

LinuxNFS服务器

2009-12-15 16:30:02

邮件服务器故障

2009-09-08 15:41:08

NFS服务器

2009-10-13 10:55:14

Web服务器故障排除

2009-07-16 15:27:59

web服务器

2009-08-26 11:55:55

Dell服务器故障排除

2009-08-24 17:20:29

IBM刀片服务器宕机

2009-08-14 17:34:02

2009-04-22 17:03:40

Linux服务器七要素

2009-08-31 17:12:35

2010-04-19 17:18:14

2010-12-30 11:20:13

数据库连接

2009-11-12 11:29:58

Linux服务器Windows 200

2011-11-15 22:13:48

服务器死机故障排除

2011-07-08 14:28:18

主域控制器Windows 200辅助域控制器
点赞
收藏

51CTO技术栈公众号