梁明炯
摘 要:AIX与Linux都是常用的类UNIX操作系统,通常运行于服务器端。如何检查硬件状态,及时发现硬件故障是服务器运维的基础。文章对AIX和Linux系统查看硬件状态的方法进行了比较分析。
关键词:AIX;Linux;硬件状态;比较
中图分类号:TP368.5 文献标志码:A 文章编号:2095-2945(2020)24-0043-03
Abstract: AIX and Linux are both frequently used UNIX-like operating systems which often operate on the server side. How to check hardware status and find out hardware faults in time is the basis of server operation and maintenance. This paper compares and analyzes the methods of checking hardware status by AIX and Linux systems.
Keywords: AIX; Linux; hardware status; comparative analysis
1 背景及意义
Linux最初由Linus Torvalds编写,是一套免费使用的,支持多线程和多CPU的类UNIX操作系统[1]。AIX则是由IBM开发,主要应用于IBM RISC 6000系列機器的类UNIX操作系统[2]。AIX和Linux都有稳定的性能,因此常被用作服务器系统。在服务器运维中,如何检查硬件状态,及时发现硬件故障是运维基础。虽然AIX和Linux有相似性,但是两者的很多结构和操作命令都不太相同,本文对AIX和Linux系统查看硬件状态的方法进行了比较分析。熟悉掌握两者的区别,才能更好的提升服务器运维的效率,保障业务系统的安全运行。
2 AIX系统硬件状态
AIX系统提供了记录硬件错误日志的功能,通过系统日志可以深入了解硬件的具体情况。在检查硬件状态时,首先应查看系统日志,再通过相关AIX命令查看硬盘内存等是否正常[3]。
2.1 基于日志查看硬件告警
如果系统检测到了某个硬件出现了错误,则把该错误记录在/dev/error设备中。服务器上有一块存储器叫NVRAM(Non-Volatile Random Access Memory,非易失性随机访问存储器),它所存储的数据在断电之后不会丢失。AIX系统会把所记录的错误记录保存在NVRAM中。AIX系统的错误日志进程errdemon(位于/usr/lib/目录下),它负责从/dev/error中读取错误记录,并根据系统的错误模板库对错误记录进行格式化后写入系统的错误日志中。AIX处理后的系统错误日志默认存放在/var/adm/ras/errlog。这是个格式化文件,如果使用系统的文本查看命令,例如more命令打开errlog文件只能看到乱码。不过,AIX系统提供了errpt命令可查看错误日志文件。运行errpt命令输出的信息包括6列,其含义如下:
(1)IDENTIFIER:错误标示符,表示所使用的错误模板。
(2)TIMESTAMP:错误时间戳,格式为MMDDhhmmYY(月日时分年)。
(3)T:错误类型,共分为6种错误类型:PEND(设备或功能组件可能丢失,简写为P)、PERF(性能严重下降,简写是P)、PERM(硬件设备或软件模块损坏,简写也是P)、
TEMP(临时性错误,或已恢复正常,简写为T)、INFO(一般消息,简写为I)、UNKN(未确定的错误,简写为U)。
(4)C:错误种类,表示错误来源,包括硬件或介质错误(简写为H)、软件错误(简写为S)、其它错误(简写为O)、未确定的错误(简写为U)。
(5)Resource_Name:资源名称,即出现错误的资源名称。对于硬件错误,一般指设备,对于软件错误,一般指软件部件或者可执行程序名称。
(6)Description:错误描述,表示错误的简要说明。
服务器上运行errpt命令后的显示如图1所示。例如第二行信息,表示错误是2020年4月3日7时47分出现的,为软件错误。对于硬件错误重点关注第三和第四列。第三列T表示类型,如果T值为PERM,通常表示有损坏的硬件设备或者软件模块;第四列表示种类class,若值为H则表示硬件设备故障或者介质错误。因此,可通过errpt命令带相关参数列出相关硬件故障信息。例如,通过“errpt -d H”命令可查询所有硬件出错信息,而通过“errpt -T PERM-d H”命令可以查询硬件损坏的错误信息。
使用errpt命令显示的是所有故障信息。如果需查看某个错误的详细内容,可以在命令上加错误标示符。图1中显示的错误信息,如果需查看第一行的具体内容,具体命令为:errpt-aj A6DF45AA,表示列出标识符为A6DF45AA错误的详细内容。
2.2 相关命令查看硬件状态
AIX提供了smitty工具用于检查硬盘等的硬件设备是否故障。通过输入smitty pxdam命令,可以进入检查硬盘状态如图2所示。图中第一行第三列的值为optimal,表示磁盘阵列的状态正常,如果值为degrade或者failed则表示磁盘阵列中有损坏的磁盘。具体磁盘pdisk0到pdisk6的状态显示在第二到第七行,其值均为active,表示所有磁盘状态都正常,如果状态显示为failed或者其它值,则表示这块磁盘可能已故障。
AIX的lsdev命令可用来检查列出系统中的设备状态和信息。lsdev命令实际上是从系统中一个叫“设备配置数据库”中获取系统的设备信息,然后通过相关的格式化选项参数返回信息。命令的常用参数包括:-C(从预定义库中显示设备信息)、-c(限制输出指定类中的设备)、-H(显示列输出的头部分)、-S(显示指定状态的设备)、-F(以指定格式显示输出)。结合以上参数就可通过lsdev命令根据实际需求检查硬件状态。例如查看内存状态,通过输入命令Lsdev-Cc memory,如果内存状态正常会显示Available;而通过输入Lsdev-Cc disk命令则可以查看硬盘状态是否正常。
3 Linux系统硬件状态
Linux系统具有强大的日志功能,可以通过日志查看硬件状态。和AIX系统一样,Linux系统内核会把产生的各种错误信息(包括硬件错误信息)通过日志守护进程写到日志文件中。Linux日志文件通常保存在/var/log目录下,包含了系统和服务的各种信息。作为运维人员重点关注:boot.log,用于记录系统启动时的日志,可查看各系统服务启动的信息;/lastlog,包含系统所有用户最近操作信息;btmp,包含所有登录失败的信息;message,记录系统整体信息,包含系统启动期间的日志和cron、daemon等的内容;secure,记录系统验证与授权信息;dmesg,包含许多与硬件有关的信息[4]。因此检查系统的硬件状态重点查看/var/log/dmesg日志文件。
3.1 基于日志查看硬件告警
Linux系统的/var/log/dmesg日志文件记录了系统开机BIOS自检信息,以及光驱、网卡、RAID、LVM等配置信息。既可以使用cat /var/log/dmesg命令来查看该日志内容,也可以直接使用Linux的dmesg命令来查看。由于dmesg命令输出的信息太多,对于运维人员,可以通过三个方法筛选出有用的硬件状态信息。
(1)通过dmesg的level标签根据错误级别限制输出内容。level标签把错误分成emerg(系统无法使用)、alert(须立即采取行动)、crit(危急条件)、err、warn、notice、info和debug共8个等级。因此运维人员可把错误级别限制在warn以上输出,如:dmesg-level=warn,err,alert,crit,emerg
(2)通过使用如more、less等命令对输出的信息分页
或者指定行数显示,如:dmesg | more、dmesg | tail -10
(3)通过grep命令对硬件关键词进行过滤筛选。例如,查看硬盘设备信息,你可以使用grep命令搜索sda关键词,如:dmesg | grep sda,同样可以通过memory、cpu等关键字查看内存和cpu信息。需要查看所有硬件设备的错误信息,则可以过滤含err关键字的日志信息,如:dmesg | grep err
3.2 相关命令查看硬件状态
(1)通过Linux的smartctl 命令查看硬盘的SMART信息。硬盘的SMART(Self-Monitoring Analysis and Reporting Technology,自我监测分析与报告技术),是硬盘运行时会将自身的相关参数,包括温度、容量、扇区、密度、内部电路等记录下来,系统对硬盘的这些参数实时监控,若参数超过阈值,则会发出警告,从而保护数据不受损失。
首先通过smartctl-i
可通过命令“smartctl --test=TEST /dev/sda”对硬盘进行自我检测,检测的结果信息可通过“smartctl -l selftest /dev/sda”查看。另外,如果需要查看硬盘的历史错误日志,输入命令:smartctl -l error /dev/sda。
(2)Linux提供了一系列以ls开头的命令,可查看硬件的详细信息。常用的包括lsblk(显示可用块设备的信息)、lscpu(显示cpu相关信息)和lsscsi(显示SCSI设备信息)等:
a. lsblk命令除了列出可用块设备(包括硬盘、CD-ROM等)的信息外,还能显示块设备之间的依赖关系。lsblk命令默認以树状形式显示,其输出结果包括7个列。其中,NAME表示块设备名称,TYPE表示块设备是否为磁盘或磁盘上的一个分区,MOUNTPOINT表明设备挂载的挂载点。lsblk命令也用来列出某个特定设备的所属关系,同时可列出组和模式。lsblk常用的参数包括-a和-b。“lsblk -a”命令会列出服务器上所有的设备包括空设备。-b参数表示以字节方式显示设备大小,常用于查询指定设备的信息,例如可以通过命令“lsblk -b /dev/sda”可查询上面提到的服务器中设备符号为/dev/sda的硬盘信息。
b. lspci命令用于显示有关pci总线信息以及连接它们的设备信息。lspci命令的输出信息中常见到“[]:[].[]”格式的数字(如00:02.0)。这是以十六进制显示总线编号,其中第一个参数表示总线编号,第二个是插槽编号,第三个是功能编号。lspci命令在默认情况下显示简单的设备列表,常用的选项参数包括-v(输出更多PCI 接口装置的详细信息)和-vv(表示输出更详细的用于解析的信息)可输出pci详情。
c. lscpu命令从sysfs、/proc/cpuinfo或者特定架构的库中收集数据。该命令的输出信息包括cpu、线程、内核、插槽、共享缓存、cpu型号、运行模式、处理指令速度等信息。为了以可读格式显示lscpu命令信息,常用-e参数选项来格式化输出,其命令为:lscpu -e。所输出的信息包括cpu、node、socket、core、online、maxMHZ等信息列。如果希望限制输出特定列,比如限制输出为cpu、node和socket列,那么具体命令为:lscpu -e=cpu,node,socket。如果希望只显示在线或者离线cpu信息,可以用-b或者-c选项执行lscpu操作。具体为lscpu -b和lscpu -c。
4 结束语
AIX和Linux系统拥有稳定的运行性能,是服务器常用的操作系统。作为服务器运维人员,检查服务器硬件是否正常、有无硬件故障是基础工作。本文阐述了AIX和Linux系统中如何查看硬件的状态是否正常。通过这两者的比较分析,有助于运维人员理解它们之间的差异以及各自的硬件状态检查方法,以保障业务系统的正常运行。
参考文献:
[1]谢胜盈.批量自动巡检Linux服务器[J].网络安全和信息化,2018:94-96.
[2]税仪冬.基于RS6000服务器的DB2数据库性能调优[D].西南交通大学,2006.
[3]顾宇红.服务器在线模式下硬件故障诊断的方法[J].福建电脑,2011(12):153-157.
[4]李明.看懂Linux的日记[J].开放系统世界,2006(7):78-79.