梁明炯
摘 ?要:AIX與Linux都是常用的類UNIX操作系統(tǒng),通常運(yùn)行于服務(wù)器端。如何檢查硬件狀態(tài),及時(shí)發(fā)現(xiàn)硬件故障是服務(wù)器運(yùn)維的基礎(chǔ)。文章對(duì)AIX和Linux系統(tǒng)查看硬件狀態(tài)的方法進(jìn)行了比較分析。
關(guān)鍵詞:AIX;Linux;硬件狀態(tài);比較
中圖分類號(hào):TP368.5 文獻(xiàn)標(biāo)志碼:A ? ? ? ? 文章編號(hào):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編寫,是一套免費(fèi)使用的,支持多線程和多CPU的類UNIX操作系統(tǒng)[1]。AIX則是由IBM開(kāi)發(fā),主要應(yīng)用于IBM RISC 6000系列機(jī)器的類UNIX操作系統(tǒng)[2]。AIX和Linux都有穩(wěn)定的性能,因此常被用作服務(wù)器系統(tǒng)。在服務(wù)器運(yùn)維中,如何檢查硬件狀態(tài),及時(shí)發(fā)現(xiàn)硬件故障是運(yùn)維基礎(chǔ)。雖然AIX和Linux有相似性,但是兩者的很多結(jié)構(gòu)和操作命令都不太相同,本文對(duì)AIX和Linux系統(tǒng)查看硬件狀態(tài)的方法進(jìn)行了比較分析。熟悉掌握兩者的區(qū)別,才能更好的提升服務(wù)器運(yùn)維的效率,保障業(yè)務(wù)系統(tǒng)的安全運(yùn)行。
2 AIX系統(tǒng)硬件狀態(tài)
AIX系統(tǒng)提供了記錄硬件錯(cuò)誤日志的功能,通過(guò)系統(tǒng)日志可以深入了解硬件的具體情況。在檢查硬件狀態(tài)時(shí),首先應(yīng)查看系統(tǒng)日志,再通過(guò)相關(guān)AIX命令查看硬盤內(nèi)存等是否正常[3]。
2.1 基于日志查看硬件告警
如果系統(tǒng)檢測(cè)到了某個(gè)硬件出現(xiàn)了錯(cuò)誤,則把該錯(cuò)誤記錄在/dev/error設(shè)備中。服務(wù)器上有一塊存儲(chǔ)器叫NVRAM(Non-Volatile Random Access Memory,非易失性隨機(jī)訪問(wèn)存儲(chǔ)器),它所存儲(chǔ)的數(shù)據(jù)在斷電之后不會(huì)丟失。AIX系統(tǒng)會(huì)把所記錄的錯(cuò)誤記錄保存在NVRAM中。AIX系統(tǒng)的錯(cuò)誤日志進(jìn)程errdemon(位于/usr/lib/目錄下),它負(fù)責(zé)從/dev/error中讀取錯(cuò)誤記錄,并根據(jù)系統(tǒng)的錯(cuò)誤模板庫(kù)對(duì)錯(cuò)誤記錄進(jìn)行格式化后寫入系統(tǒng)的錯(cuò)誤日志中。AIX處理后的系統(tǒng)錯(cuò)誤日志默認(rèn)存放在/var/adm/ras/errlog。這是個(gè)格式化文件,如果使用系統(tǒng)的文本查看命令,例如more命令打開(kāi)errlog文件只能看到亂碼。不過(guò),AIX系統(tǒng)提供了errpt命令可查看錯(cuò)誤日志文件。運(yùn)行errpt命令輸出的信息包括6列,其含義如下:
(1)IDENTIFIER:錯(cuò)誤標(biāo)示符,表示所使用的錯(cuò)誤模板。
(2)TIMESTAMP:錯(cuò)誤時(shí)間戳,格式為MMDDhhmmYY(月日時(shí)分年)。
(3)T:錯(cuò)誤類型,共分為6種錯(cuò)誤類型:PEND(設(shè)備或功能組件可能丟失,簡(jiǎn)寫為P)、PERF(性能嚴(yán)重下降,簡(jiǎn)寫是P)、PERM(硬件設(shè)備或軟件模塊損壞,簡(jiǎn)寫也是P)、
TEMP(臨時(shí)性錯(cuò)誤,或已恢復(fù)正常,簡(jiǎn)寫為T)、INFO(一般消息,簡(jiǎn)寫為I)、UNKN(未確定的錯(cuò)誤,簡(jiǎn)寫為U)。
(4)C:錯(cuò)誤種類,表示錯(cuò)誤來(lái)源,包括硬件或介質(zhì)錯(cuò)誤(簡(jiǎn)寫為H)、軟件錯(cuò)誤(簡(jiǎn)寫為S)、其它錯(cuò)誤(簡(jiǎn)寫為O)、未確定的錯(cuò)誤(簡(jiǎn)寫為U)。
(5)Resource_Name:資源名稱,即出現(xiàn)錯(cuò)誤的資源名稱。對(duì)于硬件錯(cuò)誤,一般指設(shè)備,對(duì)于軟件錯(cuò)誤,一般指軟件部件或者可執(zhí)行程序名稱。
(6)Description:錯(cuò)誤描述,表示錯(cuò)誤的簡(jiǎn)要說(shuō)明。
服務(wù)器上運(yùn)行errpt命令后的顯示如圖1所示。例如第二行信息,表示錯(cuò)誤是2020年4月3日7時(shí)47分出現(xiàn)的,為軟件錯(cuò)誤。對(duì)于硬件錯(cuò)誤重點(diǎn)關(guān)注第三和第四列。第三列T表示類型,如果T值為PERM,通常表示有損壞的硬件設(shè)備或者軟件模塊;第四列表示種類class,若值為H則表示硬件設(shè)備故障或者介質(zhì)錯(cuò)誤。因此,可通過(guò)errpt命令帶相關(guān)參數(shù)列出相關(guān)硬件故障信息。例如,通過(guò)“errpt -d H”命令可查詢所有硬件出錯(cuò)信息,而通過(guò)“errpt -T PERM-d H”命令可以查詢硬件損壞的錯(cuò)誤信息。
使用errpt命令顯示的是所有故障信息。如果需查看某個(gè)錯(cuò)誤的詳細(xì)內(nèi)容,可以在命令上加錯(cuò)誤標(biāo)示符。圖1中顯示的錯(cuò)誤信息,如果需查看第一行的具體內(nèi)容,具體命令為:errpt-aj A6DF45AA,表示列出標(biāo)識(shí)符為A6DF45AA錯(cuò)誤的詳細(xì)內(nèi)容。
2.2 相關(guān)命令查看硬件狀態(tài)
AIX提供了smitty工具用于檢查硬盤等的硬件設(shè)備是否故障。通過(guò)輸入smitty pxdam命令,可以進(jìn)入檢查硬盤狀態(tài)如圖2所示。圖中第一行第三列的值為optimal,表示磁盤陣列的狀態(tài)正常,如果值為degrade或者failed則表示磁盤陣列中有損壞的磁盤。具體磁盤pdisk0到pdisk6的狀態(tài)顯示在第二到第七行,其值均為active,表示所有磁盤狀態(tài)都正常,如果狀態(tài)顯示為failed或者其它值,則表示這塊磁盤可能已故障。
AIX的lsdev命令可用來(lái)檢查列出系統(tǒng)中的設(shè)備狀態(tài)和信息。lsdev命令實(shí)際上是從系統(tǒng)中一個(gè)叫“設(shè)備配置數(shù)據(jù)庫(kù)”中獲取系統(tǒng)的設(shè)備信息,然后通過(guò)相關(guān)的格式化選項(xiàng)參數(shù)返回信息。命令的常用參數(shù)包括:-C(從預(yù)定義庫(kù)中顯示設(shè)備信息)、-c(限制輸出指定類中的設(shè)備)、-H(顯示列輸出的頭部分)、-S(顯示指定狀態(tài)的設(shè)備)、-F(以指定格式顯示輸出)。結(jié)合以上參數(shù)就可通過(guò)lsdev命令根據(jù)實(shí)際需求檢查硬件狀態(tài)。例如查看內(nèi)存狀態(tài),通過(guò)輸入命令Lsdev-Cc memory,如果內(nèi)存狀態(tài)正常會(huì)顯示Available;而通過(guò)輸入Lsdev-Cc disk命令則可以查看硬盤狀態(tài)是否正常。
3 Linux系統(tǒng)硬件狀態(tài)
Linux系統(tǒng)具有強(qiáng)大的日志功能,可以通過(guò)日志查看硬件狀態(tài)。和AIX系統(tǒng)一樣,Linux系統(tǒng)內(nèi)核會(huì)把產(chǎn)生的各種錯(cuò)誤信息(包括硬件錯(cuò)誤信息)通過(guò)日志守護(hù)進(jìn)程寫到日志文件中。Linux日志文件通常保存在/var/log目錄下,包含了系統(tǒng)和服務(wù)的各種信息。作為運(yùn)維人員重點(diǎn)關(guān)注:boot.log,用于記錄系統(tǒng)啟動(dòng)時(shí)的日志,可查看各系統(tǒng)服務(wù)啟動(dòng)的信息;/lastlog,包含系統(tǒng)所有用戶最近操作信息;btmp,包含所有登錄失敗的信息;message,記錄系統(tǒng)整體信息,包含系統(tǒng)啟動(dòng)期間的日志和cron、daemon等的內(nèi)容;secure,記錄系統(tǒng)驗(yàn)證與授權(quán)信息;dmesg,包含許多與硬件有關(guān)的信息[4]。因此檢查系統(tǒng)的硬件狀態(tài)重點(diǎn)查看/var/log/dmesg日志文件。
3.1 基于日志查看硬件告警
Linux系統(tǒng)的/var/log/dmesg日志文件記錄了系統(tǒng)開(kāi)機(jī)BIOS自檢信息,以及光驅(qū)、網(wǎng)卡、RAID、LVM等配置信息。既可以使用cat /var/log/dmesg命令來(lái)查看該日志內(nèi)容,也可以直接使用Linux的dmesg命令來(lái)查看。由于dmesg命令輸出的信息太多,對(duì)于運(yùn)維人員,可以通過(guò)三個(gè)方法篩選出有用的硬件狀態(tài)信息。
(1)通過(guò)dmesg的level標(biāo)簽根據(jù)錯(cuò)誤級(jí)別限制輸出內(nèi)容。level標(biāo)簽把錯(cuò)誤分成emerg(系統(tǒng)無(wú)法使用)、alert(須立即采取行動(dòng))、crit(危急條件)、err、warn、notice、info和debug共8個(gè)等級(jí)。因此運(yùn)維人員可把錯(cuò)誤級(jí)別限制在warn以上輸出,如:dmesg-level=warn,err,alert,crit,emerg
(2)通過(guò)使用如more、less等命令對(duì)輸出的信息分頁(yè)
或者指定行數(shù)顯示,如:dmesg | more、dmesg | tail -10
(3)通過(guò)grep命令對(duì)硬件關(guān)鍵詞進(jìn)行過(guò)濾篩選。例如,查看硬盤設(shè)備信息,你可以使用grep命令搜索sda關(guān)鍵詞,如:dmesg | grep sda,同樣可以通過(guò)memory、cpu等關(guān)鍵字查看內(nèi)存和cpu信息。需要查看所有硬件設(shè)備的錯(cuò)誤信息,則可以過(guò)濾含err關(guān)鍵字的日志信息,如:dmesg | grep err
3.2 相關(guān)命令查看硬件狀態(tài)
(1)通過(guò)Linux的smartctl 命令查看硬盤的SMART信息。硬盤的SMART(Self-Monitoring Analysis and Reporting Technology,自我監(jiān)測(cè)分析與報(bào)告技術(shù)),是硬盤運(yùn)行時(shí)會(huì)將自身的相關(guān)參數(shù),包括溫度、容量、扇區(qū)、密度、內(nèi)部電路等記錄下來(lái),系統(tǒng)對(duì)硬盤的這些參數(shù)實(shí)時(shí)監(jiān)控,若參數(shù)超過(guò)閾值,則會(huì)發(fā)出警告,從而保護(hù)數(shù)據(jù)不受損失。
首先通過(guò)smartctl-i
可通過(guò)命令“smartctl --test=TEST /dev/sda”對(duì)硬盤進(jìn)行自我檢測(cè),檢測(cè)的結(jié)果信息可通過(guò)“smartctl -l selftest /dev/sda”查看。另外,如果需要查看硬盤的歷史錯(cuò)誤日志,輸入命令:smartctl -l error /dev/sda。
(2)Linux提供了一系列以ls開(kāi)頭的命令,可查看硬件的詳細(xì)信息。常用的包括lsblk(顯示可用塊設(shè)備的信息)、lscpu(顯示cpu相關(guān)信息)和lsscsi(顯示SCSI設(shè)備信息)等:
a. lsblk命令除了列出可用塊設(shè)備(包括硬盤、CD-ROM等)的信息外,還能顯示塊設(shè)備之間的依賴關(guān)系。lsblk命令默認(rèn)以樹(shù)狀形式顯示,其輸出結(jié)果包括7個(gè)列。其中,NAME表示塊設(shè)備名稱,TYPE表示塊設(shè)備是否為磁盤或磁盤上的一個(gè)分區(qū),MOUNTPOINT表明設(shè)備掛載的掛載點(diǎn)。lsblk命令也用來(lái)列出某個(gè)特定設(shè)備的所屬關(guān)系,同時(shí)可列出組和模式。lsblk常用的參數(shù)包括-a和-b?!發(fā)sblk -a”命令會(huì)列出服務(wù)器上所有的設(shè)備包括空設(shè)備。-b參數(shù)表示以字節(jié)方式顯示設(shè)備大小,常用于查詢指定設(shè)備的信息,例如可以通過(guò)命令“l(fā)sblk -b /dev/sda”可查詢上面提到的服務(wù)器中設(shè)備符號(hào)為/dev/sda的硬盤信息。
b. lspci命令用于顯示有關(guān)pci總線信息以及連接它們的設(shè)備信息。lspci命令的輸出信息中常見(jiàn)到“[]:[].[]”格式的數(shù)字(如00:02.0)。這是以十六進(jìn)制顯示總線編號(hào),其中第一個(gè)參數(shù)表示總線編號(hào),第二個(gè)是插槽編號(hào),第三個(gè)是功能編號(hào)。lspci命令在默認(rèn)情況下顯示簡(jiǎn)單的設(shè)備列表,常用的選項(xiàng)參數(shù)包括-v(輸出更多PCI 接口裝置的詳細(xì)信息)和-vv(表示輸出更詳細(xì)的用于解析的信息)可輸出pci詳情。
c. lscpu命令從sysfs、/proc/cpuinfo或者特定架構(gòu)的庫(kù)中收集數(shù)據(jù)。該命令的輸出信息包括cpu、線程、內(nèi)核、插槽、共享緩存、cpu型號(hào)、運(yùn)行模式、處理指令速度等信息。為了以可讀格式顯示lscpu命令信息,常用-e參數(shù)選項(xiàng)來(lái)格式化輸出,其命令為:lscpu -e。所輸出的信息包括cpu、node、socket、core、online、maxMHZ等信息列。如果希望限制輸出特定列,比如限制輸出為cpu、node和socket列,那么具體命令為:lscpu -e=cpu,node,socket。如果希望只顯示在線或者離線cpu信息,可以用-b或者-c選項(xiàng)執(zhí)行l(wèi)scpu操作。具體為lscpu -b和lscpu -c。
4 結(jié)束語(yǔ)
AIX和Linux系統(tǒng)擁有穩(wěn)定的運(yùn)行性能,是服務(wù)器常用的操作系統(tǒng)。作為服務(wù)器運(yùn)維人員,檢查服務(wù)器硬件是否正常、有無(wú)硬件故障是基礎(chǔ)工作。本文闡述了AIX和Linux系統(tǒng)中如何查看硬件的狀態(tài)是否正常。通過(guò)這兩者的比較分析,有助于運(yùn)維人員理解它們之間的差異以及各自的硬件狀態(tài)檢查方法,以保障業(yè)務(wù)系統(tǒng)的正常運(yùn)行。
參考文獻(xiàn):
[1]謝勝盈.批量自動(dòng)巡檢Linux服務(wù)器[J].網(wǎng)絡(luò)安全和信息化,2018:94-96.
[2]稅儀冬.基于RS6000服務(wù)器的DB2數(shù)據(jù)庫(kù)性能調(diào)優(yōu)[D].西南交通大學(xué),2006.
[3]顧宇紅.服務(wù)器在線模式下硬件故障診斷的方法[J].福建電腦,2011(12):153-157.
[4]李明.看懂Linux的日記[J].開(kāi)放系統(tǒng)世界,2006(7):78-79.