Raspberry Piで産業用microSDのS.M.A.R.T.機能を使ってみた。

こんにちは。やっぱりSBCはeMMCが載っているのが好きな坪井です。

f:id:ytsuboi:20200622190356j:plain

でも、Raspberry Pi Compute Module 3+はメモリが1GB。8GBラインナップまであるRaspberry Pi 4 Model Bを使いたいときはあります。そんなときは、せめて信頼性の高いmicroSDカードを使いたいものですね。

そんなことを考えていたところ、ねむいさんのぶろぐで、TranscendさんのUSD230Iシリーズを知りました。しかもAmazonで買えちゃいます。この製品は、「SLCモード」で耐久性を高めているうえ、S.M.A.R.T. (Self-Monitoring Analysis and Reporting Technology)というHDDとかSSDでお馴染みの自己診断機能も積んでいます。「SLCモードってなんだ?」って私と同様に思った方は、このtogetterをご覧ください。

www.amazon.co.jp

もともとインフラ屋をしていた坪井としてはS.M.A.R.T.サポートがツボに入ったので、TS32GUSD230Iを会社に領収書出して即買いしてしまいました。そこで、今回はRaspberry Pi 4 Model Bにこいつを装着してストレージの自己診断ができるRaspberry Piを作ってみたいと思います。

あ、TranscendさんのmicroSDが売れてもSeeed的には一円の売上にもなりませんので、せめてRaspberry Piの宣伝をさせてくださいm(_ _)m

www.seeedstudio.com

USD230IシリーズをRaspberry Piで使うにあたって特別なことは必要ありません。いつものようにRaspberry Pi OSをダウンロードしてきてmicroSDに書き込むのみです。私はヘッドレス大好きなので、Raspberry Pi OS (32-bit) Liteをいつも使用しています。また、最近はRaspberry Pi ImagerというmicroSDに書き込みをするツールがリリースされていますが、長年愛用させていただいているbalenaEtcherを使い、macにmicroSDを挿すためにこれまたTranscendさんのTS-RDF5Kを使いました。そういえばTS-RDF5KはAmazonで1,000円を切った価格でUSB 3.1対応なのが気に入り、個人的に複数本所有して持ち歩きやmacの近くに転がしておくなどと活用しています。

さて、Raspberry Pi OSをUSD230Iに書き込んで起動すれば、当たり前ですがいつもの通りにRaspberry Piが起動します。ここからが本番です。S.M.A.R.T.を読むならsmartmontoolsだよねということで、インストールしてsmartctlを早速実行してみました。

$ sudo smartctl -a /dev/mmcblk0
smartctl 6.6 2017-11-05 r4594 [armv7l-linux-4.19.118-v7l+] (local build)
Copyright (C) 2002-17, Bruce Allen, Christian Franke, www.smartmontools.org

/dev/mmcblk0: Unable to detect device type
Please specify device type with the -d option.

Use smartctl -h to get a usage summary

結果は無情です。仕方ないので、microSDのS.M.A.R.T.を読むための方法をググりまくったところ、MicronさんのTN-SD-02: Enabling Memory Card Health Monitor System Introductionというドキュメントを見つけました。この資料ではmmc_utilsを改造して、HEALTH STATUSコマンド(CMD56)を発行して読む方法が紹介されています。

ただ、この資料にあるCMD56のargument(引数)はMicronさんのSDがサポートするものですし、読み取れる値のフォーマットも異なる様です。そこでゴニョゴニョっとしてUSD230Iシリーズの引数とフォーマットを調べて、mmc_utilsを改造してみました。

pi@raspberrypi:~/mmc-utils $ sudo ./mmc ppeu read /dev/mmcblk0
Product Marker: Transcend
Secured Mode: 00h
Speed Class: 04h
UHS Speed Grade: 03h
RTBB Count: 0
Abnormal Power drop Count: 0
Min. Erase Count: 0
Max. Erase Count: 1
Avg. Erase Count: 0
Current SD Card Speed Mode: 14h
Card Life(%): 100%
Total Write CRC Count: 0
Power On/Off Count: 10

改造したmmc_utilsを実行すると、こんな感じにS.M.A.R.T.の値を読み取ることができます。CMD56のargumentなどは現在のところ非公開の様ですので、ソースコードは公開できません。すみません。Raspberry PiでS.M.A.R.T.使いたいという声が多ければ、TranscendさんもRaspberry Pi向けのツールや必要な情報の公開を検討してくださるかもしれませんね。

変更履歴

日付 変更者 変更内容
2020/6/22 ytsuboi 作成