第76日目:Coffee Break? 〜('A`)/花子と花代を検温してみました〜
|
どうも、('A`)です。
えーと、本州の方では今週は雨が酷くて、電車とか止まったりして大変と聞いています。
皆さんの住んでいるところは大丈夫ですか?
まずIPv6の状況ですが、root弟(´・ω・`)がだいぶ煮詰まっています。
____
/__.))ノヽ
.|ミ.l _ ._ i.)
(^'ミ/.´・ .〈・ リ やあ、root弟(´・ω・`)
.しi r、_) |
| `ニニ' /
ノ `ー―i´
ワシの方でゲートウェイ(Force10)でのテストを行なってみたが、問題なかったよ。
でも、まあ君が接続するのに苦労しているようだから、こちらでもFreeBSD以外の
OS(fedora)を使って接続できるかどうか試してみるよ。
君の方でももう一度サーバの設定を確認しておいてくれ。
よろしく。
|
という事で、root弟(´・ω・`)は必至になって一日中設定を調べたり、いじったりしています。
('A`)の方は、というと、今週も花子と花代の面倒をずっと見ています。
先週末は花代がダウンしましたが、今週は花子&花代のダブルでダウンという事態に
直面しまして・・・ヒイヒイ言いました。
まあ、花子はシングルユーザモードでfsckをして復旧したのですが、花代については
再度OSインストールをする事になり、トホホ・・・の心境でした。
あ、今は花子も花代も元気に動いていますよ。昨日はそろってスレにささやきました。
花子も花代も短い期間にダウンが度重なりましたので、もうちょっと詳しく様子を見る
仕掛けが必要かな、という話になり「HDDの温度を測ってみよう!」という事になりました。
(まあ、こういう事は急に決まったりするので、仕組みを作る当人たちにとってはちょっと
しんどかったりします・・・・)
えーと、皆さんは「SMART(Self-Monitoring Analysis and Reporting Technology)」という
言葉を聞いた事があるかと思います。
簡単に言ってしまうと、障害や故障を早期に発見できる様にHDD自身が幾つかの項目
(例えばディスクの回転数とか不良セクタ数とか書き込み時のエラーが発生した回数とか)
を計測する機能です。
(殆どのHDDにはこの機能が備わっています。)
通常は16進数の数字の羅列でデータが出てくるのですが、色んなツールを使って人間が
判る形に加工する事が可能です。
で、今回どんなツールを使ったかと言うと、、、「smartmontools」(正確にはこのツールを
インストールして利用可能となる smartctl コマンド)です。
このツールはFreeBSDではPortsから簡単にインストールする事ができます。
pkg_add -r smartmontools と実行すると、バイナリ形式でインストールされます。
インストールされると、smartctl と smartd という2つができあがります。
このうち「smartd」はデーモンとして稼働させ、定期的にSMARTの情報を測定・監視します。
また「smartctl」はコマンドライン形式でSMART情報の表示をおこないます。
まずは使い方を調べよう、という事で man smartctl を叩いてみます。
なんか色々とパラメータとその説明が出てきますが、HDDの温度やディスクのシークエラー
などの状況を表示するには「-A」オプションを指定します。
smartctl -A (デバイスのパス)
例えば花子(banana3000)のシステムディスクは装置記号名がad12となっているので、
以下の様にコマンドを実行します。
smartctl -A /dev/ad12
そうすると、以下の情報が結果として得られます。
banana3000# smartctl -A /dev/ad12
smartctl version 5.36 [i386-portbld-freebsd6.2] Copyright (C) 2002-6 Bruce Allen
Home page is http://smartmontools.sourceforge.net/
=== START OF READ SMART DATA SECTION ===
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 118 099 006 Pre-fail Always - 193075197
3 Spin_Up_Time 0x0003 098 097 000 Pre-fail Always - 0
4 Start_Stop_Count 0x0032 100 100 020 Old_age Always - 92
5 Reallocated_Sector_Ct 0x0033 100 100 036 Pre-fail Always - 0
7 Seek_Error_Rate 0x000f 075 060 030 Pre-fail Always - 38969903
9 Power_On_Hours 0x0032 093 093 000 Old_age Always - 6281
10 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 100 100 020 Old_age Always - 95
187 Unknown_Attribute 0x0032 100 100 000 Old_age Always - 0
189 Unknown_Attribute 0x003a 100 100 000 Old_age Always - 0
190 Unknown_Attribute 0x0022 063 057 045 Old_age Always - 639893541
194 Temperature_Celsius 0x0022 037 043 000 Old_age Always - 37 (Lifetime Min/Max 0/21)
195 Hardware_ECC_Recovered 0x001a 078 075 000 Old_age Always - 232464451
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 TA_Increase_Count 0x0032 100 253 000 Old_age Always - 0
banana3000#
|
黒太字で示した行がHDDの温度の測定結果で、「RAW_VALUE」という項目に摂氏で
表示されます。
この場合には37℃という事になります。
ここまでは順調でした。で、「RAID部分はどうやって温度を測るんだろう?」と思い、
とりあえず smartctl -A /dev/da0 だとか smartctl -A /dev/twa0 と打ってみましたが、
エラーになってしまった。
うーん、、、
実はRAID6を構成している各HDDのSAMRT値を取る仕組みは「tw_cli」という3ware社から
提供されているコマンドラインで取得する事はできます。
tw_cli /コントローラー番号/ポート番号/ show smart
(通常コントローラー番号は c0 なのですが、使用される環境によってc1とかc2とかの
指定になったりします。)
ただし、、、出てくるのは以下の様な「16進数のデータ」です(涙
banana3000# tw_cli /c0/p0 show smart
/c0/p0 Drive Smart Data:
0A 00 01 0F 00 58 4B 00 00 00 00 00 00 00 03 03
00 5F 5D 00 00 00 00 00 00 00 04 32 00 64 64 49
00 00 00 00 00 00 05 33 00 64 64 00 00 00 00 00
00 00 07 0F 00 4A 3C 9F 38 C6 32 25 00 00 09 32
00 60 60 4B 10 00 00 00 00 00 0A 13 00 64 64 00
00 00 00 00 00 00 0C 32 00 64 64 49 00 00 00 00
00 00 BB 32 00 64 64 00 00 00 00 00 00 00 BD 3A
00 64 64 00 00 00 00 00 00 00 BE 22 00 3E 38 26
00 23 27 00 00 00 C2 22 00 26 2C 26 00 00 00 14
00 00 C3 1A 00 3A 33 25 98 58 0A 00 00 00 C5 12
00 64 64 00 00 00 00 00 00 00 C6 10 00 64 64 00
00 00 00 00 00 00 C7 3E 00 C8 C8 00 00 00 00 00
00 00 C8 00 00 64 FD 00 00 00 00 00 00 00 CA 32
00 64 FD 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 82 00 AE 01 00 5B
03 00 01 00 01 A3 02 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 01 06 04 02 02 07 08 07 05 00
00 00 00 00 00 00 00 01 01 10 FF 37 00 00 00 00
00 00 71 B9 32 BA C8 01 00 00 00 00 00 00 00 00
00 00 00 00 01 10 FF 37 00 00 00 00 00 00 00 00
02 00 01 00 00 00 00 00 00 00 E5 99 E1 32 02 00
00 00 35 07 7B 0F 00 00 00 00 1A 10 00 00 00 00
89 29 11 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 9E
banana3000#
|
はー、何か他に良い方法が無いかなあ、とsmartctlのマニュアルを調べていると
「Use 'smartctl -h' to see the available options.(-h で利用可能なオプションを
見てみてね)」と書いてあったので、試しに打ってみると・・・何かあるぞ!?
smartctl -a --device=3ware,2 /dev/twa0
smartctl -a --device=3ware,2 /dev/twe0
(Prints all SMART information for ATA disk on third port of first 3ware RAID controller)
もしかして、
smartctl -A --device=3ware,(ポート番号) /dev/twa0
smartctl -A --device=3ware,0 /dev/twa0
と打ったら、0番ポートのHDDの温度とか表示されるのかなあ・・・やってみよう。
banana3000# smartctl -A --device=3ware,0 /dev/twa0
smartctl version 5.36 [i386-portbld-freebsd6.2] Copyright (C) 2002-6 Bruce Allen
Home page is http://smartmontools.sourceforge.net/
=== START OF READ SMART DATA SECTION ===
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 088 075 006 Pre-fail Always - 0
3 Spin_Up_Time 0x0003 095 093 000 Pre-fail Always - 0
4 Start_Stop_Count 0x0032 100 100 020 Old_age Always - 73
5 Reallocated_Sector_Ct 0x0033 100 100 036 Pre-fail Always - 0
7 Seek_Error_Rate 0x000f 074 060 030 Pre-fail Always - 159766194710
9 Power_On_Hours 0x0032 096 096 000 Old_age Always - 4173
10 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 100 100 020 Old_age Always - 73
187 Unknown_Attribute 0x0032 100 100 000 Old_age Always - 0
189 Unknown_Attribute 0x003a 100 100 000 Old_age Always - 0
190 Unknown_Attribute 0x0022 062 056 045 Old_age Always - 656605222
194 Temperature_Celsius 0x0022 038 044 000 Old_age Always - 38 (Lifetime Min/Max 0/20)
195 Hardware_ECC_Recovered 0x001a 058 051 000 Old_age Always - 121209788
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 TA_Increase_Count 0x0032 100 253 000 Old_age Always - 0
banana3000#
|
('A`)出たー!!!
(結局16回コマンド打たないといけないけど)この方法でポート番号を0〜15のパターンで
実行すれば、各HDDの温度が検出できる。
という事で、5分毎にコマンドを実行し、かつ「194 Temperature_Celsius」という語を
含む行をgrepで抽出しテキストに書きだすシェルスクリプトを早速書きました。
んで、root兄(・∀・)にお願いして、このデータをrrdtoolを使ってグラフ化したのが
このページ(http://smart.maido3.com/)です。
えーと、改めてグラフを見てみると、殆どのHDDは一定の温度で推移しているのですが、
数台急激に下がったりしているものもあります。何でだろう・・・
ちょっとこれは次回までの宿題とさせて下さい。
ってな訳で、ちょっと短い日記になりましたが、次回をお楽しみに。
それでは、また。
|
|
|
|