macOSでsmartdを用いてS.M.A.R.T.情報を監視する方法(再改訂版)
[主題]
macOSでsmartmontoolsのdaemon(常駐プログラム)であるsmartdを用いてドライブのS.M.A.R.T.情報を監視する方法を説明したい。(最終更新日:2024.11.23)
[背景]
筆者はこの記事で、smartdをMacで運用する方法を説明した。しかし、その方法では、
- Apple Silicon Macで、起動後30分でsmartdが停止してしまう。
- NVMe SSDを搭載するMacで、SSDの情報を読み取れない。
という問題があった。
本稿では、これらの問題を解決し、正しく運用できるようにする事を目的とする。
[環境]
参考までに、筆者の環境を記載しておく
MacBook Air 2023 15.3inch(Apple Silicon Mac, M2)
macOS Sonoma 14.7.1
Xcode 16.1
CommandLine Tools for Xcode 16.1.0.0.1
[手順]
-
SAT Smart Driverのインストール
外付け(リムーバブル)ドライブを監視する場合に必要となる。DriveDxのリリース元であるBinaryFruit社の以下のブログ記事からダウンロードして、インストールする。インストール時、リムーバブルドライブは、物理的にMacと切り離しておくこと。その際、Apple Siliconを搭載したMacは、カーネル機能拡張(kext)が無効になっているので、許可する。(macOS復旧での作業が必要)
-
smartmontoolsのインストール
macOS用のインストーラーパッケージが用意されているので、ダウンロードしてインストールする。
なお、インストーラーパッケージは署名されていないので、右クリックから開くを選択する。ソースからビルドする場合(バージョンは本稿執筆時点の最新版である7.5-r5640)
curl -LO https://output.circle-artifacts.com/output/job/770ce2e9-c512-410d-8956-2f414f43578d/artifacts/0/builds/smartmontools-7.5-r5640.src.tar.gz tar xf smartmontools-7.5-r5640.src.tar.gz cd smartmontools-7.5 ./configure \ --with-savestates \ --with-attributelog \ --with-nvme-devicescan make sudo make install
-
smartmontoolsについて
smartmontoolsは、起動後、所定の処理を実施後コマンドが自動的に終了するsmartctlと、起動後、自動的に終了しない、daemon(常駐プログラム)であるsmartdの二つで構成される。
smartdは、起動されると、30分に1回(デフォルト値。可変)、接続された全(または指定された)ドライブにアクセスして、ドライブのS.M.A.R.T.情報を監視してくれる。(smartd manページより) -
smartd.confの設定(筆者の例)
smartdは、smartd.confと呼ばれる設定ファイルを記述することにより、その動作を設定できる。以下に筆者の設定を例として示す。-
オリジナルのsmartd.confをリネームして保存
パッケージでインストールした場合
cd /private/etc/ sudo mv smartd.conf smartd.conf.orig
ソースからビルドした場合
cd /usr/local/etc/ sudo mv smartd.conf smartd.conf.orig
-
自分のsmartd.confを作成
パッケージでインストールした場合
cd /private/etc/ sudo vim smartd.conf
ソースからビルドした場合
cd /usr/local/etc/ sudo vim smartd.conf
記述する内容(共通)
# This is configuration for smartd on my MacBook Air 2023 15 # /dev/disk0 -M test -m roushi@localhost # For E-Mail test # /dev/disk0(Startup Disk) is NVMe, so excluded from DEVICESCAN. Thus I # intentionally add as diffrent device. # # See https://bugs.launchpad.net/ubuntu/+source/smartmontools/+bug/1685332 # /dev/disk0 -d nvme \ # Disk is NVMe -H \ # Check NVMe device health -l error \ # Check NVMe error count -m roushi@localhost # Send E-Mail to this address DEVICESCAN -d removable \ # Disk is removable -o on \ # Automatic test when smartd starts -m roushi@localhost # Send E-Mail to this address
簡単な解説
-
3行目。#がついているのは、E-Mailのテスト用。テスト時にコメント(#)を外し、テスト後はコメントアウトする。
-
10行目。-dディレクティブは、デバイスのタイプを指定する。
起動ディスクはNVMeデバイスのため、それを指定する。 -
11, 12行目。NVMeデバイスでサポートされるのは、この2項目のみ。
-
16行目。DEVICESCANは、接続された全ドライブを監視対象にするという意味。
-
同16行目。この-dディレクティブは、DEVICESCAN対象デバイスのタイプが、リムーバブルであることを指定する。
これがないと、smartdは、ドライブが取り外されて見つからない時にFailedOpenDevice
というメールを送ってくる。 -
17行目。-oディレクティブは、onにしておくと、smartdが起動して以降4時間毎に
SMART自動オフラインテスト
を実行する。 -
14, 18行目。-mディレクティブは、送信したいメールアドレスを指定する。
-
あえて削ったもの
-aディレクティブ
ググって良く目にする-aディレクティブはない。理由は、ATAデバイスではデフォルトのため。(smartd.conf manページによる)-sディレクティブ
セルフテストのスケジューリングを指定する。筆者は、smartdデフォルトのスキャンで十分と考えたので外した。
ショートテストを毎日2-3時に、ロングテストを毎週土曜日3-4時に実行する場合、以下のようにする。-s (S/../.././02|L/../../6/03)
-
-
-
launchd plistの作成とロード
smartdは、起動されれば、daemon(常駐プログラム)として動作するが、システム(OS)の起動・再起動などで終了した際、自動起動させる必要がある。Macでは、launchdを使えば、これを実現できる。この項が、この記事で発生した問題を解決する部分である。具体的には、smartdをdaemon(常駐プログラム)として登録するため、プロパティリストの登録場所を変更している。
-
launchd plistの作成
cd /Library/LaunchDaemons vim jp.xxxx.smartd.plist
xxxxには、自分の名字をローマ字で入れる。(リバースドメイン名)
記述する内容
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>jp.xxxx.smartd</string> <key>ProgramArguments</key> <array> <string>/usr/local/sbin/smartd</string> <key>RunAtLoad</key> <true/> </dict> </plist>
-
launchd plistのロード
cd /Library/LaunchDaemons sudo launchctl load -w jp.xxxx.smartd.plist
-
smartd設定ファイルの再読み込み
ひとたびlaunchdにより起動されたsmartd設定ファイルを再読み込みするには、以下のコマンドを用いる。sudo killall -HUP smartd
[補足]
smartdの挙動について以下を確認した。
-
外付けデバイスを、smartd稼働中に接続しても、監視対象にはならない事を確認した。(デバッグモード=’smartd -d’で確認)
これは推測だが、DEVICESCAN機能が働くのは、smartdの設定ファイルであるsmartd.confを再読み込みした場合のみと思われる。
つまり、ポータブルMacなどで、外付けデバイスの構成が変わったら、smartd.confの再読み込みが必要と思われる。
-
外付けデバイスをマウントしていなくても、接続されていれば監視しに行く事を確認した。
-
物理的に切断した場合、’removed ATA device: No such file or directory’となる。
-
再接続すると、’reconnected ATA device’となる。
[参考サイト]
以上。
この投稿へのトラックバック
トラックバックはありません。
- トラックバック URL
この投稿へのコメント