如何在RHEL7進行資源管理與故障排除

作者:蔡長欣
精誠資訊 恆逸教育訓練中心 資深講師
技術分類:網路管理與通訊應用

在RHEL7與RHEL6版本改變的過程中,跟先前的任一系列改版相比,多了許多不同以往的功能,也因此增加了不少與過往版本在管理方法大相逕庭的做法。

舉個例子來說,在過往的RHEL系列,管理人員通常先透過監控軟體,得知道運行中的應用程式,對系統的資源消耗比重,最後搭配系統上的資源配置工具,如:sysctl或ulimit來建立資源分配的上限,達成有效的資源比重控管;這樣可以避免對資源消耗極具影響性的應用程式,就如同以下的玩笑話,避免變成豬一般的隊友 [ 應用程式 ],害死整個系統的運作。

目前因RHEL7已採行systemd做為系統初始化的第一執行順位程式,所以也藉此引入其他的資源管控方式,讓過往的繁瑣管理方式得以化繁為簡。而cgroup就是目前Red Hat的選擇:能夠讓個別使用人員的需求、與虛擬機器的需求各自獨立開來;並能搭配systemd,將系統一開始的資源分配進行有效率的控制,不管是:CPU、Memory或是DiskI/O都能控制掌握。而管理人員也能對正在進行中的daemon,觀察是否已成功達成配置,確認cpuload程式執行時的資源已被掌握,相關判讀結果如下:

[student@serverX] sudo systemd-cgls /system.slice/system-cpuload.slice
/system.slice/system-cpuload.slice:

└cpuload.service
└12356 /usr/local/bin/cpuload –d –t 2

但這時如果資源使用異常問題,不是發生在應用程式本身,那管理人員要如何評估相關資訊是否與硬體有關?以x86主機為例,可以參考logdump如以下內容,確認是跟硬體有關的問題:

[root@s1] less /var/log/logdump

Dec 03 12:22:41 s1.example.com mcelog[1038]: MCA: MEMORY CONTROLLER RD_CHANNEL1_ERR
Dec 03 12:22:41 s1.example.com mcelog[1038]: Transaction: Memory read error

Dec 03 12:22:41 s1.example.com mcelog[1038]: Hardware event: This is not a software error

上述資訊,不管是開發人員或是管理人員,藉此紀錄,應能釐清該問題非軟體,而是硬體的問題,在系統運行發生問題時,更能快速讓問題釐清,能更有效率解決。
其他像是記憶體資源的huge page或是cache page等管理、與系統運行時,可能發生需要解決的問題:像:LVM故障排除、grub2能搭配GPT的partition進行重建開機選單的需求、或是搭配nmap管理工具,來協助釐清問題是否與網路有關等,這些評估與相關的故障排除,對管理人員來說,是非常重要的任務,如能越快解決越好。