smartmontools を用いたドライブ情報の取得(FreeBSD の場合)

smartmontools とは, ストレージデバイスの S.M.A.R.T. (Self-Monitoring, Analysis and Reporting Technology) 情報を取得・監視するツール. ドライブ情報を表示する smartctl コマンドと, ドライブを常時監視する smartd デーモンで構成される. FreeBSD のほか,Linux, NetBSD, OpenBSD, macOS, Windows でも動作する. このページでは,FreeBSD (バージョン 14.x, 15.x を想定) での smartmontools のインストールと使用手順を説明する.

前準備

(オプション) システム/アプリケーションの更新作業

  1. システム(ベースシステム)の更新

    以下のようにコマンドを実行して,FreeBSD のベースシステムにセキュリティ修正などを適用する.

    freebsd-update fetch
    freebsd-update install
    
  2. パッケージの更新

    以下のようにコマンドを実行して,インストール済みのアプリケーションを更新する.

    pkg update
    pkg upgrade
    

smartmontools のインストールと設定手順

インストール

パッケージを用いる方法と,ポーツツリーを用いる方法がある. 通常はパッケージを用いる方法で十分である.

  1. パッケージを使ってインストール
    pkg install smartmontools
    
  2. (別法)ポーツツリーを使ってビルドとインストール

    ビルドオプションを変更したい場合などに用いる. ポーツツリーが無い場合は,先に git で取得する(portsnap は FreeBSD 14.0 で削除された).

    pkg install git
    git clone --depth 1 https://git.FreeBSD.org/ports.git /usr/ports
    cd /usr/ports/sysutils/smartmontools
    make install clean
    
  3. インストール完了の確認

    以下のようにコマンドを実行し,バージョンが表示されることを確認する.

    /usr/local/sbin/smartctl --version
    

設定

  1. (オプション)/etc/periodic.conf の設定

    periodic(8) が生成する日毎レポート (daily status reports) にドライブの状態を含めたいときは, /etc/periodic.conf に次のような1行を含めておく. 「/dev/ada0 /dev/da0」の部分は監視したいドライブ名に設定すること.

    daily_status_smart_devices="/dev/ada0 /dev/da0"
    
  2. (オプション)/usr/local/etc/smartd.conf の設定

    ドライブの常時監視 (monitoring) を行いたいときは,設定ファイル /usr/local/etc/smartd.conf を作成すること.

    * サンプルが /usr/local/etc/smartd.conf.sample にある. これをコピーして編集するとよい.

    cp /usr/local/etc/smartd.conf.sample /usr/local/etc/smartd.conf
    
  3. (オプション)/etc/rc.conf の設定

    /etc/rc.conf に次の1行を含めておく. これで smartd デーモンがシステム起動時に自動的に起動するようになる.

    smartd_enable="YES"
    

    設定後,次のコマンドで smartd デーモンを起動する.

    service smartd start
    

smartmontools を試しに使ってみる

ドライブ名の確認

ドライブ名の確認を行ってみる. FreeBSD でのドライブ名は,SATA/IDE 接続では /dev/ada0, SCSI/USB 接続では /dev/da0,NVMe 接続では /dev/nvme0 あるいは /dev/nda0 のようになる.

camcontrol devlist
nvmecontrol devlist

ドライブ情報の取得

ドライブ情報の取得を行ってみる.

/dev/ada0」の部分は,扱いたいドライブ名にしてください.

/usr/local/sbin/smartctl -i /dev/ada0

* モデル名 (Device Model), 容量 (User Capacity), ファームウェアのバージョン (Firmware Version), S.M.A.R.T. の対応状況と有効・無効が表示される.

SMART に関する情報の取得

S.M.A.R.T. の属性値,エラーログ,セルフテストの結果を含む全情報を取得する.

/dev/ada0」の部分は,扱いたいドライブ名にしてください.

/usr/local/sbin/smartctl -a /dev/ada0

* S.M.A.R.T. が無効になっている場合は,次のコマンドで有効化できる.

/usr/local/sbin/smartctl -s on /dev/ada0

セルフテストの実行

ドライブ自身による自己診断を実行する. short テストは数分,long テストはドライブの容量に応じて数十分から数時間かかる.

/usr/local/sbin/smartctl -t short /dev/ada0

実行結果は,次のコマンドで確認する.

/usr/local/sbin/smartctl -l selftest /dev/ada0