デル製サーバーで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情報の数値を監視し、故障して影響が出るまでに対策を取っておきたいものです。

このデータの活用法としてハードディスク故障時のデータや故障に至るまでのデータを蓄積し、
ビッグデータとして利用する事で、ハードディスクが故障するパターンを取りやすくなると思います。
実際に東芝ではビッグデータを活用してハードディスクの故障予知まで行っているようですので、
近い将来ハードディスクの故障を未然に防ぐ技術が登場する事に期待したいと思います。

最新ブログ一覧