- macOSで外付けHDDのS.M.A.R.T.情報を取得しにくいのは、USB接続がATAコマンドをSCSIに変換するブリッジチップを経由するためです。
- ブリッジチップごとにS.M.A.R.T.への対応状況が異なり、同じツールでも読めたり読めなかったりします。
- macOSはkextによってこの問題を回避してきましたが、macOS 11以降はkextの使用に厳しい制限がかかり、実質的に一般ユーザーが使える状況ではなくなっています。
- Thunderbolt接続やUASP対応ドック、NASを使った監視など、ツール選びより接続環境の選択が問題解決の鍵になります。
1. S.M.A.R.T.の前提知識
ストレージが劣化していないか確認する方法の一つに、「S.M.A.R.T.」があります。
S.M.A.R.T.(Self-Monitoring, Analysis and Reporting Technology)は、ストレージが自身の状態を報告するための仕組みです。
統計的・経験的な異常検知の仕組みで、ATA(Advanced Technology Attachment)上のコマンドとして定義されており、データ構造は属性ID・Raw値・しきい値から成ります1。
ただし万能ではなく、物理的に読み書きできなくなった領域(不良セクタ)を完全に検出できるわけではありません。
また、反対にS.M.A.R.T.が表示できない場合でも、それが直ちにディスク故障を意味するわけでもありません。
1.1. S.M.A.R.T情報を見るには?
Windowsでは CrystalDiskInfo が定番で、インストールすれば外付けHDDでも高い確率でS.M.A.R.T.情報を確認できます2。
macOSでもS.M.A.R.T.情報を取得するツール自体は存在します。
代表例としては DriveDx、smartmontools(smartctl)、SMART Utility などがあり、いずれもS.M.A.R.T.属性の取得や解析といった機能は十分に備えています。
しかし「そもそも対象ディスクからS.M.A.R.T.情報が取得できるか」は環境に強く依存します。
ツールの能力以前に、取得経路の問題が支配的です3。
この差は特に外付けHDD(USB接続)で顕著に現れます。
2. 内蔵ディスクと外付けディスクの違い
内蔵ディスクは、SATA直結のため、ATAコマンドはOSから直接デバイスに届きます。
S.M.A.R.T.情報もそのまま取得できます。
一方、外付けHDDは、USB接続のため構造が異なります。
ATAコマンドはUSB-SATAブリッジを経由し、SCSIとしてOSに渡されます4。
このとき SAT(SCSI ATA Translation)が介在し、S.M.A.R.T.情報は「変換されたコマンド」として扱われます。
ただし、USB規格にはS.M.A.R.T.を完全に扱う明確な標準定義が存在しません。
そのためUSB-SATAブリッジチップごとに実装がばらつきます。
- SATに完全対応しているチップ
- 一部のコマンドのみ対応しているチップ
- そもそもS.M.A.R.T.を通さないチップ
この差異が「同じツールでも読めたり読めなかったりする」という現象を生みます。
2.1. kextという経路とその行き詰まり
とくに、macOS側ではIOKitによるドライバフレームワークの制約があり、非標準的なコマンドパスを許容しない傾向があります5。
macOSでの、この問題を回避するために使われてきたのが kext(カーネル拡張)です。
OS-X-SAT-SMART-Driver などがその代表で、カーネルに直接割り込む形でSAT経由のS.M.A.R.T.取得を実現します。
DriveDxもこのkextに依存しています。
しかし、AppleはmacOS 11(Big Sur)以降、kextの扱いを段階的に制限してきました。
現在のmacOSでkextを使うには、ユーザーの明示的な承認とOS再起動が必要です。
さらに、Apple Siliconではややこしい手順が必要で、リカバリーモードで起動し、セキュアブートの設定を「Reduced Security」に下げてから「識別された開発者によるカーネル拡張の管理を許可」を有効にしなければなりません6。
つまり、一般ユーザーが気軽にインストールできる状態ではなくなっています。
SAT SMART Driverの開発は数年間止まっており、Apple SiliconへのDriverKit(kextの後継)対応も進んでいません7。
Apple側のAPIが不十分なためです。
3. macOSで外付けHDDのS.M.A.R.T.を確認するときの選択肢
macOSで、外付けHDDのS.M.A.R.T.を確認したい場合、現実的な選択肢はいくつかあります。
- Thunderbolt接続のエンクロージャを使う
SATAネイティブとして認識されるため、USB変換の問題が発生しない - UASPに対応したブリッジチップ(ASMedia 1053eなど)を搭載したドックを使う
SATパススルーが通りやすい傾向がある - NASにドライブを入れてNAS側でS.M.A.R.T.を監視させる方法もあります。
macOSにおいては、「ツールを選ぶ」問題ではなく、「その環境でS.M.A.R.T.が通るか」という前提条件が重要なのです。
3.1. WindowsのCrystalDiskInfoが動く理由
一方、Windowsでは状況が異なります。
Windowsはデバイス互換性を広く許容する設計でもあり、ベンダー依存の挙動もある程度吸収します。
その結果としてS.M.A.R.T.取得の成功率が高くなっています。
CrystalDiskInfoの設定画面には、USB/IEEE 1394サポート向けのコマンドタイプを切り替える項目が明示的に用意されています8。
これは、SAT経由でコマンドを発行し、複数のデバイスパターンを試行する仕組みです。
- smartmontoolsプロジェクトは、S.M.A.R.T.取得に成功・失敗したUSBデバイスの一覧をコミュニティベースで管理している。使用するブリッジチップごとに対応状況が異なる。 – Smartmontools Supported USB Devices
- CrystalDiskInfoの公式サイトには「supports a part of USB」と明記されており、すべての外付けUSBドライブに対応するわけではない。 – CrystalDiskInfo – Crystal Dew World
- DriveDxの開発元Binary Fruitは、外付けドライブのS.M.A.R.T.診断にはサードパーティ製の専用ドライバのインストールが別途必要であり、これはmacOSの仕様によるものだと公式サイトで明示している。 – DriveDx – external USB and FireWire drive diagnostics support
- ThunderboltはSATAネイティブとして動作するため、このUSB経由の変換問題が発生しない。ThunderboltでS.M.A.R.T.が取得しやすいのはこの理由による。 – How to enable S.M.A.R.T on SSD | MacRumors Forums
- macOSはUASP(USB Attached SCSI Protocol)でデバイスを認識できても、S.M.A.R.T.取得に必要な特殊コマンドを送るためのAPIをSCSIレイヤに持っていない。 – MacOS: Accessing SMART information on USB NVMe enclosure | smallhacks
- Apple公式ドキュメントに「Kexts are no longer recommended for macOS」と明記されており、Apple Siliconでkextを有効化するにはReduced Securityへの変更とリカバリーモードからの操作が必要と説明されている。 – Securely extending the kernel in macOS – Apple Support
- SAT SMART DriverはBinary Fruitが署名済みkextを提供することで延命されているが、コード自体の更新は止まっており、DriverKitへの移行はApple側のAPIの不備が障害になっていると報告されている。 – Last Week on My Mac: kextermination is coming – The Eclectic Light Company
- CrystalDiskInfoの詳細設定には「Select command type for USB/IEEE 1394 support」という項目があり、SAT経由でのコマンド発行方式を複数から選択できる。 – Advanced Features – Crystal Dew World