| SDB Tools - S.M.A.R.T. D-B Tools | Version 0.99a edition #01 (BETA) | |
| (C) Copyright 2006, taro | SDB Tools MANUAL - SDB Tools マニュアル | |
 本プログラムは開発途中のベータ版です。
評価、実験には自由に利用してくださって構いませんが、転載・再配布は行なわないでください。
 このドキュメントも推敲が不十分で内容が間違っている箇所があるかもしれませんが、ご容赦願います。
- 目次 -
  | 
| 1-1 | 概要 | 
 SDB ToolsはハードディスクのS.M.A.R.T.情報を記録・分析・管理するソフトウェアです。
 ハードディスクのS.M.A.R.T.情報を取得してネットワークを通じて転送するSDBクライアントと、 
S.M.A.R.T.情報を登録・分析・管理するSDBサーバの2つのプログラムを中心に動作します。
複数のパソコンのS.M.A.R.T.情報を一括して管理でき、情報の閲覧・表示はWebブラウザから行えます。
 SDBクライアントにはWindows 2000/XP用とLinux(*1)用を用意しています。
 SDBサーバもWindowsおよびLinuxに対応していますが、別途Apache(Webサーバ)、 
PostgreSQL(データベース)、PHP(スクリプト言語)といったソフトウェアが必要です。
 SDB ToolsのS.M.A.R.T.監視は秒単位、あいるは分単位以下の頻繁な監視には向いていません。
 監視するハードディスクが数台しかない場合や、SDBサーバの処理能力が高ければリアルタイムに近い監視も可能ですが、
ネットワークやサーバの負荷が大きくなります。
 SDBクライアントのS.M.A.R.T.データ収集は、5分から1時間程度の間隔が適当です。
 SDB Toolsでは数週間とか数ヶ月間といった長期間データを収集してステータスの変化を予測できますが、
収集データが大量にあると解析に時間がかかります。長期間のデータ収集を視野に入れている場合は、
1時間間隔のデータ収集でも十分役立ちます。
 ステータスの異常を監視するプログラムには短時間で検査するファストモードと、
収集したデータから将来の予測を行うロングモードがありますが、ファストモードは1時間毎、
ロングモードは1日1回程度の実行を想定しています。
| *1 | Linux用バイナリ(実行プログラムは)は収録していません。ソースコードからコンパイルしてください。 | 
| 1-2 | ファイル構成 | 
 SDB ToolsはWindwos用はsdb-0.99a01-win.zipとして配布しています。zipファイルを展開すると、次のファイル・ディレクトリをsdb-0.99a01ディレクトリが得られます。
 Linux用はsdb-0.99a01-linux.tgzとして配布しています。内容はWindows用とほぼ同じですが、Linuxでは不要なrelaseディレクトリは収録していません。
  | 
| 1-3 | 実行環境 | 
■ SDBクライアント
| ※ | 
 64ビット・エディションのWindowsでは動作確認していません。 | 
■ SDBサーバ
| ※ | 
 Linux用はソースコードからコンパイルするために開発ツール(gcc,make等)が必要です。 Linux用の動作確認はCentOS 4.3/Plamo Linux 3で行いました。  | 
| 1-4 | 使用、転載、再配付について | 
 このプログラムの著作権は作者が保持しています。
 以下の条件に従って自由に使用してください。
| 
taro.kobayashi@nifty.com | 
| 1-5 | 説明・表記について | 
 コマンドプロンプトやコンソールでの実行例は次のように掲載しています。
  | 
 
  黄色の下線部分がユーザが入力した内容を表しています。表示の上では、複数行にわたっていても実際には改行せずに1行で入力してください。複数行として表示されている箇所ではスペース(空白)があるので、注意してください。
 入力部の最後に表示している水色の下矢印は、[Enter]キーを押すことを意味しています。この操作でコマンドが実行されます。
 入力内容の直前にあるプロンプトの部分(C:\Documents and Settings\user)は、環境によって内容は異なります。
 コマンドの実行結果や表示内容は省略することがあります。
 設定ファイルsdb.defの内容を示す場合は、次のように掲載しています。
  | 
 画面サイズや表示の都合上、複数行に渡っていることがありますが、グレーの下矢印マークまでが1行です。
 赤色の部分は説明のために示しています。動作上は入力する必要はありませんが、コメントとして残してもかまいません。
設定ファイルの中では「//」移行はコメントとなります。
| 2 | インストール/アンインストール | 
| ■ | 2-1 | Windwos SDBクライアントのインストール | 
基本的なインストール手順は、
  | 
 [スタート]メニューから「プログラム」→「アクセサリ」→「コマンドプロンプト」を選択して、コマンドプロンプトを実行、開いてください。
 コマンドプロンプトが開いたら、SDBクライアントをインストールしたフォルダに移動します。
コマンド プロンプト
  | 
sdbctl show 
  | 
 実行例のようにS.M.A.R.T.情報が表示されれば成功です。
 「DBOpen error!」と表示されかもしれませんが、接続するデータベースを設定していない状態ではこれで正常です。
 S.M.A.R.T.情報が表示されない場合はBIOSの設定を確認したり、--devオプションでデバイスを直接指定してください。
 sdbctl showコマンドは、デバイスの指定がない場合は、disk0(物理ドライブ 0番)から順番に探しますが、デバイスが存在しないと検索をやめます。ほとんど場合、ドライブは0番から連続していますが、プラグ&プレイ等で取り外し可能なドライブを使用していると途中の番号が抜けていることがあります。そういう場合は、「--dev disk4」を指定するなど、手動でドライブを指定してください。
 S.M.A.R.T.情報が表示できない場合、SDBクライアントは利用はできません。
 使用しているハードディスクによってはRAW Valueの表示形式を指定したほうが良いことがあます。
 一部のハードディスクでは、RAW Valueに最大・最小値や平均値といった複数の情報が含まれていることがあります。
 先ほどの例では、S.M.A.R.T.情報のID#194 Temperatureがこれにあたります。ID#194 Temperatureは温度ですが、RAW Valueは158,915,035,170と温度としてもありえない数値を示しています。
 こういう場合は、sdbctlコマンドに「--smart_attr 194:divword」オプションを指定すると、3つの値に分解して表示してくれます。
 わかりにくいかもしれませんが、ID#3 Spin Up Time も、3つに分解すると正しい値を表示します。
 --smart_attrオプションを指定するには、--devオプションも合わせて必要なので、次のように指定します。
ex.2-1: 
  | 
 SDB Toolsを使うためには環境に合わせてsdb.defファイルを編集しておく必要があります。
 また、RAW Valueを正しく表示するのに毎回--smart_attrオプションを指定するのは大変です。こういう場合は、sdb.defファイルに登録しておくとパラメータの指定を省略できます。
 メモ帳などのテキストエディタでインストールしたsdb.defファイルを開いてください。
 先ほどの操作の続きで、コマンドプロンプトからメモ帳を開いてsdb.defを編集する場合は次のように入力してください。
メモ帳を開く
  | 
 sdb.defファイルの内容は次のようになっています。
ex.2-1: 
  | 
 LAN/イントラネット環境でデータベースに直接接続する場合は[1]〜[5]をSDBサーバに合わせて正しく設定しておく必要があります。
 インターネット経由のHTTPモードで使用するには[3]〜[5]のデータベースのユーザ名/パスワード/データベース名と、[9]〜[8]のHTTPサーバのアドレス/ポート/パスの設定が必要です。公開SDBサーバを利用する場合は、このサンプルのままでかまいません。
 [9]はSDBサーバにS.M.A.R.T.情報が記録できなかった場合に、データを保存するためのディレクトリです。
 RAW Valueの調整で--smart_attrオプションを使いたい場合は、sdb.defファイルの中に指定しておくことができます。
 [21]に「SdbDevOpt sdbDevOptTbl[] =」という内容がありますが、[22]のように「{"モデル名", "シリアル" , "オプション" }」という形式で追加します。複数のハードディスクがある場合、[23]のように続けて何台でも指定できます。
 モデル名やシリアルは正確に入力してください。1文字でも間違うと、正しく動作しないので、コマンドプロンプトの表示内容からコピーして貼り付け(ペースト)することをお勧めします。
 編集が終わったらsdb.defを保存してください。
 sdbctl addコマンドを実行してデバイスをSDBサーバに登録します。
 showコマンドと同じように、--devオプションを省略するとdisk0から順番に処理しますが、なるべく--devオプションでドライブを指定してください。
 公開SDBサーバを利用する方法はクイックスタート マニュアル(→quickstart.htm)で説明していますので、そちらを参照してください。ここでは、LAN/イントラネット環境でデータベースに直接接続して使用する場合を例に説明します。
 確認のダイアログが表示されたら、[はい]ボタンをクリックしてください。
sdbctl add 
  | 
 デバイスを登録したら、sdbctl updateコマンドを実行して、動作確認を行います。
sdbctl update 
  | 
 sdbctl updateを実行すると、SDBサーバのデータベースにS.M.A.R.T.情報が記録されます。
 updateコマンドはランダムに待ち時間が入ります。しばらく動作が停止したような状態になりますが、そのまま待ってください。待ち時間は初期設定のままなら最大30秒です。
 連続して何度も実行すると、そのつどデータが記録されるので注意してください。
 タスク スケジュールへの登録方法は、クイックスタート マニュアル(→quickstart.htm)に詳しく説明しているので、そちらを参照してください。クイックスタート マニュアルは公開SDBサーバの使用が前提で--httpオプションを指定していますが、LAN/イントラネット環境でデータベースに直接接続して使用する場合は、--httpオプションは不要です。
 5分〜1時間くらいの間隔で実行するように設定しておけば十分かと思います。5〜10分とか実行間隔が短いほうが、異常をすぐに検出できますが、故障予測には間隔の長短は重要ではありません。故障予測には長期間(数週間以上)継続してデータを記録・蓄積することが重要となります。
| ■ | 2-2 | Windows SDBクライアントの削除(アンインストール) | 
 タスク スケジュールに登録したアイテムを削除して、インストールしたフォルダ(c:\sdb\bin等)を削除してください。
| ■ | 2-3 | Linux SDBクライアントのインストール | 
 Linux用バイナリ(実行ファイル)は収録していないので、ソースコードからコンパイルしてください。
 コンパイルするにはPostgreSQLのソースコードも必要です。
 src/sdbctlディレクトリに移動して、configure、make、make installの手順でコンパイル、インストールしてください。
 configureでは、--with-pgsrcオプションでPostgreSQLソースコードのディレクトリを指定してください。
 make installはrootで行ってください。
 標準では/usr/local/sdbディレクトリにインストールします。ディレクトリを変更する場合はconfigureに--prefixオプションを指定してください。
ex.1.5.X: configure実行例
  | 
 続いて、src/sdbwatchディレクトリに移動して、sdbctlと同様にconfigure、make、make installの手順でコンパイル、インストールしてください。
 Linux用の設定ファイルはサンプルをsample/sdb-linux.defとして収録していますので、これをsdb.defというファイル名で/usr/local/sdb/etcにsdb.defに格納してください。sdb.defファイルの内容は各自の環境に合わせて変更してください。
 設定、運用方法はWindowsとほぼ同じですので、Windows版SDBクライアントの説明を参照してください。
 Linuxでは--devオプションで指定するデバイスは「--dev /dev/hda」のようにデバイスファイルを指定します。
 S.M.A.R.T.情報の記録・更新はsdbctlコマンドをcronを使って5分から1時間程度の間隔で実行してください。
| ■ | 2-4 | Linux SDBクライアントの削除(アンインストール) | 
 cronに登録したプログラムを削除して、インストールしたフォルダ(/usr/local/sdb等)を削除してください。
| 2-4 | あると便利なソフトウェア | 
 SDB Toolsを使う際、以下のプログラム/ソフトウェアをそろえておくと便利かと思います。
 DevTestはコマンドプロンプト用のプログラムですが、ハードディスク、CD/DVDドライブ等の様々なドライブ情報を表示できます。
 たとえば、「devtest disk」として実行すれば、sdbctlに指定できる物理ドライブ番号(disk0等)が表示されます。
 ドライブの指定セクタのデータ内容をダンプ表示して確認することもできます。たとえば、「devtest C: --dump 0」とするとCドライブのMBR(マスターブートレコード)の内容が表示されます。
| 3 | プログラム・コマンド仕様詳細 | 
| 表記 | 説明 | 
| 角かっこ [ ] | 省略可能な項目 | 
| 中かっこ { } | 縦棒(|) で区切られた選択肢のうち、いずれか1つを選択できる。例:{start|stop} | 
| ・・・ | 繰り返し指定できるパラメータ。 | 
| < > | 特定の書式をもつパラメータ。例:<数値>、<デバイス> | 
| 3-1 | sdbctl | 
 sdbctlコマンドはSDBクライアント、SDBサーバの双方で使用するコマンドライン用プログラムです。
 ハードディスクのS.M.A.R.T.情報を取得してSDBサーバに記録する機能と、SDBサーバのデータベースをメンテナンス・操作する機能が備わっています。
| sdbctl  <コマンド>  [--csvfile <ファイル名>]  [--db_host <アドレス>]  [--db_name <データベース名>]  [--db_pass <パスワード>]  [--db_port <ポート>]  [--db_user <ユーザ>]  [--deffile <ファイル名>]  [--help]  [--http]  [--http_auth <確証方式>]  [--http_pass <パスワード>]  [--http_user <ユーザ名>]  [--random_wait <秒>]   [--dev <デバイス> [--groupname <グループ名>] [--hostname <ホスト名>] [--memo <テキスト>] [--smart_attr <属性ID>:<RAWタイプ>[:<テキスト>]]・・・ [--user_pass <確証コード>]]・・・  | 
  | 
  | 
【解説】
 show/add/delete/updateコマンドは--devオプションで指定したデバイスに対して操作を行います。Windows版では--devオプションの指定がない場合はdisk0から順番に検索して実行します。デバイスが存在しないためエラーが発生した時点で操作を止めます。Linux版ではデバイスの自動検索は行いません。
 loadコマンドも--devオプションで指定したデバイスに対して操作を行います。--devオプションの指定がない場合、CSV・ログファイルに記録されているすべてのデバイスが対象となります。
 データベース接続とHTTPモードに関するオプションは設定ファイルsdb.defでも指定できますが、設定ファイルとコマンドラインの両方に指定がある場合は、コマンドラインのほうが優先されます。
■ sdbctl show : デバイス情報の表示
 デバイスのS.M.A.R.T.情報を表示します。
■ sdbctl createdb : データベースの作成
 SDBサーバのデータベースを作成して初期化します。
 具体的にはデバイス情報を格納するdevというテーブルを作成します。既にテーブルが存在する場合はエラーとなります。
 このコマンドは、SDBサーバのデータベースに直接接続して実行する必要があります。
■ sdbctl dropdb : データベースの削除
 SDBサーバのデータベースをすべて削除します。
 具体的にはデバイス情報を格納するdevというテーブルと、各デバイスのS.M.A.R.T.情報が記録されたsmt_という名前で始まるテーブルを削除します。
 このコマンドは、SDBサーバのデータベースに直接接続して実行する必要があります。
■ sdbctl add : デバイスをデータベースに追加
 デバイスをSDBサーバに追加します。
 S.M.A.R.T.情報を記録するためには、このコマンドでデバイスをSDBサーバに追加・登録しておく必要があります。
 指定のデバイスが既に登録されている場合はエラーとなります。
■ sdbctl delete : デバイスをデータベースから削除
 デバイスをSDBサーバから削除します。
 このコマンドは、SDBサーバのデータベースに直接接続して実行する必要があります。
■ sdbctl load : CSV・ログファイルを読み込んでデバイス情報を更新
 CSV形式のログファイルに記録されているS.M.A.R.T.情報をデータベースに記録します。
 このコマンドは、SDBサーバのデータベースに直接接続して実行する必要があります。
 udapeコマンド実行時にSDBサーバが停止していたりエラーが発生して記録ができなかった場合、ログファイルにデータを保存します。loadコマンドはこのログファイルの内容を読み込み、データベースに記録します。
 --csvfileオプションで読み込むファイルを指定できます。
■ sdbctl update : デバイス情報を更新
 デバイスのS.M.A.R.T.情報を取得して、SDBサーバに記録します。
 S.M.A.R.T.情報をSDBサーバに記録するためには、sdbctl addコマンドでデバイスを追加・登録しておく必要があります。
 実行時にランダムに待ち時間が入ります。これはSDBサーバの負荷低減のための処理です。待ち時間は--random_waitオプション、または設定ファイルsdb.defのsdb_random_wait_sec変数で指定・変更できます。
| 3-2 | sdbtask | 
 sdbtaskはWindows用SDBクライアントで、sdbctl updateコマンドと同等の機能を持っています。
 sdbctlコマンドをタスク スケジュールから実行するとコマンドプロンプトが必ず開くので、これを回避するために用意しています。
 オプションはsdbctl updateコマンドと共通ですので、詳細はsdbctlの解説を見てください。
| sdbctl  update  [--db_host <アドレス>]  [--db_name <データベース名>]  [--db_pass <パスワード>]  [--db_port <ポート>]  [--db_user <ユーザ>]  [--deffile <ファイル名>]  [--help]  [--http]  [--http_auth <確証方式>]  [--http_pass <パスワード>]  [--http_user <ユーザ名>]  [--random_wait <秒>]   [--dev <デバイス> [--groupname <グループ名>] [--hostname <ホスト名>] [--memo <テキスト>] [--smart_attr <属性ID>:<RAWタイプ>[:<テキスト>]]・・・ [--user_pass <確証コード>]]・・・  | 
| 3-3 | sdbwatch | 
 sdbwatchコマンドはSDBサーバに記録されたS.M.A.R.T.情報を監視し、異常があれば知らせるプログラムです。
| sdbwatch  watch  [--db_host <アドレス>]  [--db_name <データベース名>]  [--db_pass <パスワード>]  [--db_port <ポート>]  [--db_user <ユーザ>]  [--deffile <ファイル名>]  [--disable_title]  [--fast]  [--help]  [--long]  [--offline_margin <秒>]  [--prev_time <秒>]  [--sendmail]   [--dev <デバイス> [--groupname <グループ名>] [--hostname <ホスト名>] [--model <モデル>] [--serial <シリアル>]]・・・  | 
| 4-1 | 監視用テーブル設定 | 
 sdbwatchコマンドを使うことでS.M.A.R.T.情報を監視し、異常を検出できますが、監視方法や警告レベル等をカスタマイズすることが可能です。
 監視方法をカスタマイズするには、データベースに監視用のテーブルを作成しておく必要があります。このテーブルの作成を行うのが、createwatch.phpというPHP用スクリプトです。このスクリプトはtools\createwatch.phpとして収録しています。
 設定内容はsdbwatch.incというファイルに記述されていますので、これをテキストエディタで編集してください。データベースへの接続方法やユーザ、パスワードはphplin/sdblib.incに記述されていますので、必要ならこのファイルも編集してください。
 テーブルを作成する場合は「php createwatch.php」として実行します。
 設定は$SdbWatchTblという配列に格納されます。配列の各要素は更に次のキーを持つ連想配列として指定します。
  | 
 PHPスクリプトの中では、次のように形式で記述します。
  | 
| マクロ | 内容 | 
| SDB_WATCH_OFF | 監視無効 | 
| SDB_WATCH_ATTR_ANALYS | 属性値の予測・分析 属性値が閾値(Threshold)に達するまでの予測は標準で行いますが、この指定はこれを無効にしたい場合に使います。  | 
| SDB_WATCH_ATTR_VALUE | 属性値 属性値をopとrightで指定した方法で比較します。条件が一致した場合はwarnで指定した警告を発します。  | 
| SDB_WATCH_ATTR_VALUE | 属性値の操作 | 
| SDB_WATCH_RAW_VALUE | RAW Valueの操作 RAW Valueをopとrightで指定した方法で比較します。条件が一致した場合はwarnで指定した警告を発します。  | 
| SDB_WATCH_RAW_ANALYS | RAW Valueの予測・分析 RAW Valueがrightで指定した値に達するまでの期間を予測します。  | 
| マクロ | 内容 | 
| SDB_WARN_OFF | 警告なし | 
| SDB_WARN_FAILURE | エラー・異常 | 
| SDB_WARN_HIGH | 警告レベル 高 | 
| SDB_WARN_MID | 警告レベル 中 | 
| SDB_WARN_LOW | 警告レベル 低 | 
 複数の監視条件が指定されている場合、登録されている順番に処理します。
 modelが指定されている監視条件を処理すると、以後は同じmodelの監視条件だけを処理します。
 たとえば、次のようにmodelを省略した監視条件[A]と、mdoelに「HD1」を指定した監視条件[B]を設定したします。この場合、HD1というモデルのハードディスクは[A]、[B]両方の監視条件を処理します。
  | 
 しかし、次のように監視条件の登録順序を[B]→[A]に変更すると、HD1というモデルのハードディスクは最初の監視条件[B]だけを処理します。
  | 
 設定ファイルsdb.defに「sdb_mail_warnlevel」という項目があり、指定レベル以上の警告エラーを検出した場合にメールを送信します。次の例では、警告レベルがSDB_WARN_FAILUREかSDB_WARN_HIGHでメールを送信します。
sdb.def: sdb_mail_warnlevel 設定例
  | 
 また、ロングモードでは属性値が閾値(Threshold)に達するまでの期間や、RAW Valueが指定の値に達するまでの期間を予測・分析しますが、残り時間に応じて警告を発することができます。
 デフォルトでは残り時間が3日、14日、30日以内でそれぞれSDB_WARN_HIGH、SDB_WARN_MID、SDB_WARN_LOWの警告を発します。
 この期間を変更したい場合は、次の変数をsdb.defに追加してください。
sdb.def: 設定例
  | 
 また、一部のハードディスクは、属性ID #9の稼働時間が分単位で記録されていますが、16ビットの最大値65535分(約45日)で溢れて0に戻ってしまうことがあります。このため、属性ID #9のRAW Valueが65000から0に戻ってしまうような変化を検出した場合は、自動的に桁を繰り上げて、稼働時間が連続するように処理します。
 この処理を行う属性ID番号は、設定ファイルsdb.defのsdb_auto_raw_word_id変数で指定しています。
sdb.def: sdb_auto_raw_word_id 設定例
  | 
  | 
| 4-2 | 設定ファイルsdb.def | 
 設定ファイルsdb.defには次の変数が使用できます。
| 変数 | 型 | 内容 | 
| sdb_db_host | string | データベースのアドレス | 
| sdb_db_port | string | データベースのポート番号 | 
| sdb_db_user | string | データベースのユーザ名 | 
| sdb_db_pass | string | データベースのパスワード | 
| sdb_db_name | string | データベースの名前 | 
| sdb_http_post_host | string | HTTPモード使用時 SDBサーバのアドレス | 
| sdb_http_post_port | string | HTTPモード使用時 SDBサーバのポート | 
| sdb_http_post_path | string | HTTPモード使用時 SDBサーバのパス | 
| sdb_sub_dir | string | エラー発生時のS.M.A.R.T.情報の保存ディレクトリ | 
| sdb_mail_warnlevel | int | メールを送信する警告レベル | 
| sdb_mail_from | string | 送信元のメールアドレス | 
| sdb_mail_to | string | 送信先のメールアドレス | 
| sdb_mail_smtp_server | string | SMTPサーバのアドレス | 
| sdb_warn_high_estimate | int | 予測により警告「高」を出す残り日数 | 
| sdb_warn_mid_estimate | int | 予測により警告「中」を出す残り日数 | 
| sdb_warn_low_estimate | int | 予測により警告「低」を出す残り日数 | 
| sdb_auto_raw_word_id | int | 16ビット整数を自動的に繰り上げする属性ID | 
| sdb_random_wait_sec | int | sdbtask実行時にランダムにウェイトを入れる最大秒数 | 
| sdb_dialog_auto_close_sec | int | sdbtask実行時に警告ダイアログを表示する秒数 | 
| sdbDevOptTbl | SdbDevOpt[] | デバイス オプション 次のモデル、シリアル、オプションを持つ構造体の配列です。 struct SdbDevOpt { string model; string serial; string option; }; optionには、sdbctlコマンドのデバイス関連オプション --groupname、--hostname、--smart_attr、--user_passが指定できます。  | 
| 4-3 | 注意・制限事項 | 
 多くのハードディスクにはS.M.A.R.T.(Self-Monitoring, Analysis and Reporting Technology System)と呼ばれている、自己診断機能が備わっています。
 ただし、SDB Toolsが対応しているのは、S.M.A.R.T. Read Attribute ValuesとS.M.A.R.T. Read Attribute Thresholds という機能だけで、S.M.A.R.T.関連のすべての機能が利用できるわけではありません。
 SDB Toolsで扱う診断情報は、各属性ごとに次の6つの情報があります。
  | 
 属性ID番号は1〜255の範囲の番号ですが、3はSpin Up Time(スピンアップタイム)、194はTemperature(温度)といった具合に診断内容をテキストとして表示します。
 ID番号から診断内容を知るためには、メーカーの資料を見る必要がありますが、一部のメーカーしか公開していません。一部のメーカが公開しているデータシートや、他のS.M.A.R.T.診断ツールを参考にしてテキスト表示を行っていますが、本来S.M.A.R.T.情報としてわかるのはID番号だけです。
 メーカーやモデルが違ってもID番号が同じなら、内容や意味はほぼ同じようですが、中にはID番号が同じでも意味や内容が異なる場合があります。
 S.M.A.R.T.情報の診断は、属性値(Attribute Value)と閾値(Threshold)との比較で行います。
 属性値と閾値は0〜255の範囲の数値を取りますが、属性値が閾値よりも大きければ正常、属性値が閾値以下だと異常といった具合です。
 属性値や閾値は診断項目やメーカー・モデルによって算出方法が異なるので、数値を見ただけでは安全度や危険度を判断することはできません。確実に判断できるのは属性値と閾値の大小関係だけです。
 通常、属性値は大きいほど安全で、小さいと危険なのですが、中にはこれが通用しない診断項目があります。たとえば、Seagate社のハードディスクの中には温度をそのまま属性値として返すモデルがあるので、温度が上昇すると属性値も大きくなります。この場合、閾値との比較によって診断できないような気がしますが、こういう属性では閾値を変化させるのだと思います(これは作者の推測ですが)。
 S.M.A.R.T.情報はRAW Valueと呼ばれている、生データともいえる情報があります。
 RAW Valueには実際の稼働時間やスタート/ストップカウント、不良セクタ数など、重要な情報が含まれていることがあります。ただし、RAW Valueには決まったフォーマットがないのでメーカー・モデルによって内容や意味は異なります。
 RAW Valueそのものは6バイト(48ビット)のデータで、48ビット整数として表示します。ID#9 Power-On Hours では、そのまま稼動時間を表すことがありますが、Maxtor社のハードディスクでは時間(hour)ではなく分単位(minute)で表すモデルがあります。
 また、一部の診断項目では2バイト毎に3分割して使うことがあります。たとえば、HGST社のハードディスクでは温度を最大/最小、平均値等の3つに分けています。こういう場合、--smart_attrオプションを使うことでRAW Valueの表示方法を指定することができます(詳しくはコマンドラインの書式を参照してください)。HGST社のハードディスクで温度を知りたい場合には、 --smart_attr 194:divwordといったオプションを追加することで対応できます。
 SDB Toolsでは元々の48ビット整数をRAW Data、--smart_attrオプションで指定した形式で加工・表示した値をRAW Valueと表現して区別することがあります。
| 付録A | 参考 | 
 SDB Toolsを開発するにあたって次の資料・ソフトウェアを参考にしました。
| 付録B | 変更履歴 |