FreeBSDでsmartmontoolsのインストール

Pocket

ディスクのS.M.A.R.T.(以降、SMART)から情報を取得したり、ディスクのチェックができる。
FreeBSDではsysutils/smartmontoolsからインストールできる。
smartmontoolsのインストール、実施例はいろんなところに書かれているので、ここではメモ程度にまとめる。

FreeBSD 9.2-RELEASE-p3(i386), smartmontools-6.2_1での内容。

インストール

portsもpkgもsysutils/smartmontoolsからインストールできる。
smartctlとsmartdが/usr/local/sbin/にインストールされる。

smartctlがメインのコマンド。

smartdがデーモンプログラム。
立ち上げておくと、定期的にディスクチェックを行い、結果をdaemonファシリティのログに書き込んでくれる。
必要であれば問題発生時にメールも送ってくれる。
設定ファイルは/usr/local/etc/smartd.conf。

ディスクの確認

何はともあれ、どんなディスクが繋がっているか調べる。
smartctl –scanで得られる。
なお、SMARTにアクセスするには管理者権限が必要。
以下は実行例。
ここではHDDは/dev/ada0である。
環境により/dev/da0の場合もあるでしょう。

ディスクが分かったら、SMARTに対応しているかどうかを調べる。
smartctlでデバイスファイルを開いてみればよい。

大丈夫そう。

SMARTからの情報の取得

smartctl -a <デバイスファイル>で情報を全部、-xでSMART以外の情報も表示。

実行例

ディスクのテスト実行

smartctl -t short <デバイスファイル>で実行する。
-tはテストの種類の指定。
shortと指定しているが、shortとくればlongもある。
それ以外にもある。
詳しくはman smartctl(「–test」で検索するとよい)。
shortだと10分以内、longだと数十分単位でのテスト。
運用中でも可能。

上記のコマンドは、ディスクのSMARTに対して「テストをせい」と指示をするだけ。
コマンド叩いたときには、「何時何分ごろに終わるからね」と言うだけで結果は表示されない。
結果はsmartctl -aで確認する。
smartctl -Xでテストを中止する。

以下実行例。

結果確認

smartctl -aで確認する。
見るのはSelf-test execution status、SMART Self-test logの二つのエリア

以下の通り、「Self-test execution status」「SMART Self-test log」ともにエラーなし(without error)となっている。
なお、テスト実行をしてすぐsmartctl -aとすると、「いまテストしているところだよ」という表示になるので興味があればご覧ください。

常時モニタリングのためのsmartd

cronでsmartctlを実行してもよいけど、smartdを立ち上げおくのがよい。
テストの自動実行や、後述するようなディスクの変化についてもレポートしてくれる。
/usr/local/etc/smartd.confが設定ファイル。
デフォルトでは問題のあったときにしか報告してくれない。
日々のログを吐き出させたいのなら、syslogd, newsyslogの設定変更も必要。

smartd.confの変更

最低限やることは二つ。
①DEVICESCANはコメントアウト
②ディスクとテスト種別、スケジュールを指定。

①DEVICESCANのコメントアウト
デフォルトではDEVICESCANが有効になっている。
DEVICESCANがあると、smartdはそれ以降の設定をすべて無視して、実行される都度、デバイスのスキャンを行う。
それよりも、チェックするデバイスを明示した方がよい。

②ディスクとテスト種別、スケジュールを指定。
書式例は以下の通り。
<ディスク> <各種オプション> -s <スケジュール>
実際の例は以下の通り。

<ディスク>にはデバイスファイルを指定。
<各種オプション>は以下の通り。
-a: ATAではデフォルト。全部入り。黙ってつけとけ。
-o: ATA専用。SMARTのオフラインテストを有効にするか。ONにしとけ。
-S: autosaveを有効にするか。ONにしとけ。
-s: T/MM/DD/d/HH でスケジュール指定。

T/MM/DD/d/HH
T: テストのタイプ。short(S)かlong(L)か。
MM: 月。01-12で指定。必ず二桁で指定。
DD: 日。01-31で指定。必ず二桁で指定。
d: 曜日。1が月曜、7が日曜。
HH: 時刻。00-23で指定。必ず二桁で指定。

以下だと毎日の午前2時にshortのテストを実施。

 

syslogdの設定

smartdは、デフォルトではdaemonファシリティにログを吐く。
そのままだと使いにくいので、ログの出力先を変える。
たとえばlocal3ファシリティにする。
それには/etc/rc.confで、smartd_flagsとして指定する。

/etc/rc.conf

そうしておいて、/etc/syslog.confにて以下を追加。
/etc/syslog.conf

変更したらsyslogdを再起動。

しかしこのままだとsmartd.logが際限なく大きくなる。
newsyslog.confにも変更を加える。

newsyslog.confの設定

以下を追加。
/etc/newsyslog.conf

1MBを超えたらログをローテート。bzipで圧縮。10個まで保存。圧縮後のパーミッションは640。

終わったらnewsyslogを一回再起動しておくとよいかな。

やっと準備完了。
smartdを起動しよう。

smartdの起動

再掲になるけれども、/etc/rc.confを修正してsmartdを起動する。

/etc/rc.conf

smartdを起動する。

先ほど指定したログファイルを見る。

動いていますね。

ただこれだけでは、指定したディスクをチェックしてくれるか、分からない。
smartdはSIGUSR1シグナルを送ってやるとステータスチェックをしてくれるというので試してみよう。
なお、smartdのpidはさっきのログファイルに書いてあるし、あるいはservice smartd statusとやればpidを知ることができる。

そのうえでログファイルを見てみると。
以下のような行が増えているはず。
/dev/ada0のチェックが出来ていますね。

daily status

以下のような行を/etc/periodic.confに追加するとレポートをroot宛てに送ってくれる。
複数ディスクの場合は、スペースで区切り。

daily_status_smart_devices=”/dev/ada0″

下記のようなメールが届く。

以上。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください