デル製サーバーでsmartmontoolsを利用してSMART情報を表示
smartmontoolsを利用してSMART情報を表示
(2015/4/13追記:CentOS6系ではSAS系カードのデータ取得が改善されておりましたので追記しました。)
久々にハードウェアのお話ですが、
ハードディスクには故障を未然に防ぐためSMART情報というのが出力できるようになっています。
SMART情報の出力は簡単なのですが、
デル製品を含め、RAIDカードを搭載したサーバーでは表示をするために、
オプション指定の箇所がありますのでメモとして残しました。探している方の参考になれば幸いです。
SMART情報ではハードディスク(SSDも含む)個別で故障の予兆を検知するデータを数値化しており、
詳しい情報につきましてはWikipediaのページを参考にしてもらえればと思いますが、
稼働時間や各種デバイスの温度の他、寿命の指数としてHDDでは代替セクタカウント、
SSDでは予備領域やウェアレベリングカウントと言った情報を表示する事ができます。
それでは早速導入をしてみましょう。
・smartmontoolsのインストール
以下の手順によりsmartmontoolsが導入されます。
yum -y install smartmontools
導入後はコマンドを実行して情報を表示する事ができます。
ここでは非RAID機器を例に挙げたいと思います。
・smartmontoolsの実行 (非RAID機器)
まずはRAIDカードを搭載していないサーバーの例です。
以下のコマンドにより実行されます。/dev/sda は機器の指定になります。
# /usr/sbin/smartctl -a /dev/sda === START OF INFORMATION SECTION === Device Model: Corsair Force 3 SSD SMART Attributes Data Structure revision number: 10 Vendor Specific SMART Attributes with Thresholds: ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 1 Raw_Read_Error_Rate 0x000f 080 080 050 Pre-fail Always - 177243972 5 Reallocated_Sector_Ct 0x0033 100 100 003 Pre-fail Always - 0 9 Power_On_Hours 0x0032 088 088 000 Old_age Always - 9190 - 12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 12 - 171 Unknown_Attribute 0x0032 000 000 000 Old_age Always - 0 - 172 Unknown_Attribute 0x0032 000 000 000 Old_age Always - 0 - 174 Unknown_Attribute 0x0030 000 000 000 Old_age Offline - 5 - 177 Wear_Leveling_Count 0x0000 000 000 000 Old_age Offline - 7 - 181 Program_Fail_Cnt_Total 0x0032 000 000 000 Old_age Always - 0 - 182 Erase_Fail_Count_Total 0x0032 000 000 000 Old_age Always - 0 - 187 Reported_Uncorrect 0x0032 100 100 000 Old_age Always - 0 - 194 Temperature_Celsius 0x0022 030 030 000 Old_age Always - 30(Min/Max 30/30) - 195 Hardware_ECC_Recovered 0x001c 120 120 000 Old_age Offline - - 177243972 196 Reallocated_Event_Count 0x0033 100 100 003 Pre-fail Always - 0 201 Soft_Read_Error_Rate 0x001c 120 120 000 Old_age Offline - - 177243972 204 Soft_ECC_Correction 0x001c 120 120 000 Old_age Offline - - 177243972 230 Head_Amplitude 0x0013 100 100 000 Pre-fail Always - 100 231 Temperature_Celsius 0x0013 100 100 010 Pre-fail Always - 0 233 Media_Wearout_Indicator 0x0000 000 000 000 Old_age Offline - 5059 - 234 Unknown_Attribute 0x0032 000 000 000 Old_age Always - 4360 - 241 Total_LBAs_Written 0x0032 000 000 000 Old_age Always - 4360 - 242 Total_LBAs_Read 0x0032 000 000 000 Old_age Always - 3835 -
ここではSSDを積んだ定点監視サーバーからSMART情報を出してみました。
SSDで一番重要なのはReallocated_Event_Count(予備領域)です。
SSDはご存知の通り読み書きが高速な特性を持つメモリチップにデータを保存していますが、
メモリというのは書き込み回数に上限があります。
書き込み可能な回数が上限に達して利用ができなくなる前に、
SMART側でこの数値が変動する事で警告する仕組みを持っています。
HDDでも同様にReallocated_Sector_Ct(不良セクタ)やPower_On_Hours(稼働時間)が重要です。
・smartmontoolsの実行 (デル製PERC系RAIDカードの例)
ようやく本題のデル製RAIDカードのお話です。
RAIDカードを利用したサーバーではOSからは個別のハードディスクを認識する事ができませんので、
SMART情報を出力するためにデバイスの指定方法が異なります。
以下では仮想ディスクが/dev/sdaに利用されている0番のハードディスクを表示しています。
# /usr/sbin/smartctl -a -d megaraid,0 /dev/sda Vendor: SEAGATEProduct: ST3300657SS Current Drive Temperature: 28 C Drive Trip Temperature: 68 C Elements in grown defect list: 0 Vendor (Seagate) cache information Blocks sent to initiator = 3033654119 Blocks received from initiator = 1925587391 Blocks read from cache and sent to initiator = 3048104285 Number of read and write commands whose size <= segment size = 677504363 Number of read and write commands whose size > segment size = 0 Vendor (Seagate/Hitachi) factory information number of hours powered up = 23184.88 number of minutes until next internal SMART test = 1 Error counter log: Errors Corrected by Total Correction Gigabytes Total ECC rereads/ errors algorithm processed uncorrected fast | delayed rewrites corrected invocations [10^9 bytes] errors read: 397405784 0 0 397405784 397405784 53140.580 0 write: 0 0 0 0 0 47240.284 0 verify: 163755736 0 0 163755736 163755736 35252.595 0 Non-medium error count: 9
SASのハードディスクでは少し表示できる情報が異なりますが、
温度や稼働時間等が表示されます。
またread/write/verifyの一番最後にあるTotal uncorrected errorsが不良セクタに相当します。
OMSAを導入している場合、不良セクタを検出すると以下の情報が警告ログに表示されます。
Description : SCSI sense data Sense key: 3 Sense code: 11 Sense qualifier: 0: Physical Disk 0:0:0 Controller 0, Connector 0
・smartmontoolsの実行 (デル製SAS系RAIDカードの例 ※CentOS5系のみ)
最後にデル製RAIDカードのうち、疑似RAIDに相当するSAS系RAIDカードのお話です。
手元で試した環境ではSAS6iRですが、CentOS5系では一部機能が利用できない等の違いがありました。
あくまで情報表示用として参考になれば幸いです。
# /usr/sbin/smartctl -d scsi -a /dev/sg0 User Capacity: 500,107,862,016 bytes [500 GB] Logical block size: 512 bytes Device type: disk Local Time is: Fri Sep 20 18:43:02 2013 JST Device supports SMART and is Enabled Temperature Warning Disabled or Not Supported SMART Health Status: OK Current Drive Temperature: 29 C Error Counter logging not supported [GLTSD (Global Logging Target Save Disable) set. Enable Save with '-S on'] No self-tests have been logged Long (extended) Self Test duration: 5220 seconds [87.0 minutes]
SAS系のRAIDカードでは各種表示の他、自己診断を行うセルフチェックができませんでした。
取り外したディスクではSMART情報を読み取る事ができましたので、RAIDカード側の制限でしょうか?
※2015/4/13追記:この制限はCentOS5系のみと確認が取れました。
・smartmontoolsの実行 (デル製SAS系RAIDカードの例 ※CentOS6系のみ、2015/4/13追記)
CentOS6系では以下のように内容を表示することができます。
# smartctl -a /dev/sg0 smartctl 5.43 2012-06-30 r3573 [x86_64-linux-2.6.32-504.8.1.el6.x86_64] (local build) Copyright (C) 2002-12 by Bruce Allen, http://smartmontools.sourceforge.net === START OF INFORMATION SECTION === Model Family: Seagate Barracuda ES Device Model: ST3500630NS Serial Number: 5QG2X4C1 LU WWN Device Id: 5 000c50 00cfaecb9 Firmware Version: 3BKS User Capacity: 500,107,862,016 bytes [500 GB] Sector Size: 512 bytes logical/physical Device is: In smartctl database [for details use: -P show] ATA Version is: 7 ATA Standard is: Exact ATA specification draft version not indicated Local Time is: Mon Apr 13 15:17:49 2015 JST SMART support is: Available - device has SMART capability. SMART support is: Enabled === START OF READ SMART DATA SECTION === SMART overall-health self-assessment test result: PASSED General SMART Values: Offline data collection status: (0x82) Offline data collection activity was completed without error. Auto Offline Data Collection: Enabled. Self-test execution status: (0) The previous self-test routine completed without error or no self-test has ever been run. Total time to complete Offlinedata collection: (430) seconds. Offline data collection capabilities: (0x5b) SMART execute Offline immediate. Auto Offline data collection on/off support. Suspend Offline collection upon new command. Offline surface scan supported. Self-test supported. No Conveyance Self-test supported. Selective Self-test supported. SMART capabilities: (0x0003) Saves SMART data before entering power-saving mode. Supports SMART auto save timer. Error logging capability: (0x01) Error logging supported. General Purpose Logging supported. Short self-test routinerecommended polling time: (2) minutes. Extended self-test routine recommended polling time: (171) minutes. SCT capabilities: (0x003d) SCT Status supported. SCT Error Recovery Control supported. SCT Feature Control supported. SCT Data Table supported. SMART Attributes Data Structure revision number: 10 Vendor Specific SMART Attributes with Thresholds: ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 1 Raw_Read_Error_Rate 0x000f 100 253 006 Pre-fail Always - 0 3 Spin_Up_Time 0x0003 091 091 000 Pre-fail Always - 0 4 Start_Stop_Count 0x0032 100 100 020 Old_age Always - 21 5 Reallocated_Sector_Ct 0x0033 100 100 036 Pre-fail Always - 0 7 Seek_Error_Rate 0x000f 087 060 030 Pre-fail Always - 561659748 9 Power_On_Hours 0x0032 036 036 000 Old_age Always - 56622 10 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always - 0 12 Power_Cycle_Count 0x0032 100 100 020 Old_age Always - 21 187 Reported_Uncorrect 0x0032 100 100 000 Old_age Always - 0 189 High_Fly_Writes 0x003a 100 100 000 Old_age Always - 0 190 Airflow_Temperature_Cel 0x0022 070 055 045 Old_age Always - 30 (Min/Max 27/39) 194 Temperature_Celsius 0x0022 030 045 000 Old_age Always - 30 (0 20 0 0 0) 195 Hardware_ECC_Recovered 0x001a 063 056 000 Old_age Always - 7792344 197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 0 198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline - 0 199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always - 0 200 Multi_Zone_Error_Rate 0x0000 100 253 000 Old_age Offline - 0 202 Data_Address_Mark_Errs 0x0032 100 253 000 Old_age Always - 0 SMART Error Log Version: 1 No Errors Logged SMART Self-test log structure revision number 1 Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error # 1 Extended offline Completed without error 00% 2 - # 2 Short offline Completed without error 00% 0 - SMART Selective self-test log data structure revision number 1 SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS 1 0 0 Not_testing 2 0 0 Not_testing 3 0 0 Not_testing 4 0 0 Not_testing 5 0 0 Not_testing Selective self-test flags (0x0): After scanning selected spans, do NOT read-scan remainder of disk. If Selective self-test is pending on power-up, resume after 0 minute delay.
さすがに故障を未然に防ぐ・・・と言うのは難しいですが、
定期的にSMART情報の数値を監視し、故障して影響が出るまでに対策を取っておきたいものです。
このデータの活用法としてハードディスク故障時のデータや故障に至るまでのデータを蓄積し、
ビッグデータとして利用する事で、ハードディスクが故障するパターンを取りやすくなると思います。
実際に東芝ではビッグデータを活用してハードディスクの故障予知まで行っているようですので、
近い将来ハードディスクの故障を未然に防ぐ技術が登場する事に期待したいと思います。