このような感じで、Raspberry Pi 4 model BのUSB 3.0端子に容量512GBのSSDを取り付けて、ベンチマーク(sysbenbch)を動かしてみました。
動作環境とベンチマーク結果を記録しておこうと思います。
使用する機材
USB端子に接続したSSDを安定動作させるため、少し工夫が必要でした。最終的に、次の機材を使用しました。
Raspberry Pi 4 model B
本体はメモリー4GBモデルを使用しました。この場合、Ubuntu 19.10等、一部のOSでUSB端子が使用できないようです。後述致しますが、64ビットのOSで測定したかったため、raspbianではなく、別のOSを選択しました。
60W USB-C電源
手持ちのこちらのUSB-C電源を使用しました。iPhoneを9Vで高速充電するのに使用しています。※19.12.29追記:上記ACアダプタは不調になったため、下記のAnker製品に変更しました。
micro HDMI変換アダプタ
Pi 4のHDMI端子はmicro HDMIのため、既存ケーブルを使用したい場合、変換が必要です。USB 3.0 SSD
手持ちの少し古めのmSATA SSDをUSB 3.0に変換して取り付けました。
Windows PCで速度を測定すると、シーケンシャルリードは450MB/s以上のようです。
Raspberry Pi 4 Model BのUSB 3.0端子に接続した場合、速度がどのくらいになるか?がこの記事のポイントになります。
USB 3.0 ハブ セルフパワー(ACアダプタ付き)
大容量SSDのように、消費電力が大きいUSBデバイスをRaspberri Pi 4で使用する場合、工夫が必要のようです。Pi 4に直接SSDを接続しても、安定動作しませんでした。後述のように、電源を色々と工夫してみたのですが、セルフパワーのUSBハブなしでは安定動作しませんでした。
ACアダプタ付きのUSBハブは、どうやら必須のようです。こちらを使用したところ、問題なくSSDを使用することができました。
SSDの接続方法
次の2つの構成の場合、SSDが正常に動作しました。
SSDが正常に動作する安心構成
わたしのおうちの環境では、つぎの構成でSSDが正常に動作しました。
Raspberry Pi 4 model B本体にUSB-C電源を使用。
SSDは直接接続せずに、ACアダプタ付きのUSBハブ(セルフパワード)を使用。
※本記事は、他の環境において正常に動作することを保証するものではありません。同じ機材を使用しても、動作しない可能性も御座います。動作確認は自己責任でお願い致します。
SSDは動作するもののRaspberry Pi 4本体の給電に疑問がある構成
わたしのおうちの環境では、これでもRaspberry Piは動作しましたが、カメラを接続したり、GPIOにデバイスを接続したりすると、動作が不安定になる可能性もありそうです。
ACアダプタが1つで済むため、配線はスッキリする感じです。
以下の構成では、SSDは正常に動作しませんでした。具体的には、mkfsの途中でフリーズしたり、マウントに失敗したりしました。
USB端子にSSDを直接接続→SSD動作NG
USB 3.0端子にSSDを直接接続した場合、(私が使用した)SSDは正常に動作しませんでした。
電源容量の不足を疑いましたが、60WのUSB-C電源を使用しても同様でした。
これは推測ですが、Raspberry Pi本体のUSB給電能力が不足している感じがしました。
GPIOから給電→SSD動作NG
GPIO端子に5V 4AのACアダプタを接続して給電してみました。
USB-C電源端子のフィルタをバイパスし、Raspberry Pi本体に4Aの電源容量が供給可能です。
しかし、USB 3.0端子に接続したSSDは正常に動作しませんでした。あれー?
やはりRaspberry Pi基板内部の、USB電源供給回路の影響かと思います。
なお、バスパワー、ACアダプタ付きUSBハブは、Raspberry PiのUSB電源共有回路を使わないかたちになります。
使用するOS
OSはManjaro
OSはRaspberry Pi 4本来の性能を引き出せる、64ビットのもので測定しようと思います。
Raspbianは64ビットに非対応のため、使用しませんでした。(※19.12.7現在)
Ubuntu 19.10は64ビットなのですが、メモリー4GBを搭載したRaspberry Pi 4では、USBを使用できません。詳細はこちらの記事になります。
メモリー容量を3GBに落とせばUSBを使用できますが、それでベンチマークを行っても、なんとなく不完全な感じが致します。
Raspberry Pi 4で、4GBのメモリーが使用できて、64ビットのOSが無いものか・・・無いかも?・・・あるかも?・・・探して実際に試したところ。ありました。
OSはManjaroを使用してみました。
Raspberry Pi 4のManjaro初期設定は、別の記事でご紹介させて頂こうと思います。
Manjaroの詳細ツッコミは置いておいて。この記事では、さしあたりUSB 3.0端子に接続したSSDのアクセス速度を記録させて頂こうと思います。
USB 3.0端子に接続したSSDの情報表示
ストレージ情報表示ツール・ベンチマークのインストール
ベンチマーク用のsysbenchと、ストレージの情報を得るためにsmartctlをインストールしました。
sudo pacman -S gsmartcontrol sysbench hardinfo
pacman -Ss hardinfo
ストレージ情報の表示
sudo smartctl -a /dev/sda
SMARTに対応したストレージは、smartctlコマンドで各種情報を取得、表示することができます。型番やシリアル番号のほか、稼働時間やエラーの発生回数等、細かい情報をチェックして、ストレージが故障していないか?これからも使用して大丈夫かどうか確認することができます。
ベンチマーク結果
テスト用ファイルの作成
接続したSSDをマウント後、予めテスト用のファイルを準備しておきます。
sudo fdisk /dev/sda
# Linuxパーティション作成
sudo mkfs.ext4 /dev/sda1
sudo mount /dev/sda1 /mnt
sudo mkdir /mnt/bench
sudo chown <ユーザ名>.<グループ名> /mnt/bench
cd /mnt/bench
sysbench fileio --file-total-size=4G prepare
シーケンシャルリード(seqrd)
シーケンシャルリードの速度は?
sysbench fileio --file-total-size=4G --file-test-mode=seqrd run
- シーケンシャルリード: 41.78MiB/s
ふむふむ。
以前、Pi 4のmicroSDカードの速度を測定しました。
その結果は29.86MiB/sでしたので、比較すると+10MiB/sほど早いようです。ふむふむ。
爆速!とまではいきませんが、microSDカードよりは優位、という感じでしょうか。
シーケンシャルライト(seqwr)
sysbench fileio --file-total-size=4G --file-test-mode=seqwr run
- シーケンシャルライト: 18.49MiB/s
microSDカードは21.07MiB/sでした。って、microSDカードより遅いですけど・・・。
ランダムリード(rndrd)
sysbench fileio --file-total-size=4G --file-test-mode=rndrd run
- ランダムリード: 57.42MiB/s
microSDカードは52.66MiB/s。だいたい同じくらいでしょうか?
ランダムライト(rndwr)
sysbench fileio --file-total-size=4G --file-test-mode=rndwr run
- ランダムライト: 5.22MiB/s
microSDカードは6.16MiB/sでした。ふむぅ。
テスト用ファイルの削除
sysbench fileio cleanup
ベンチマークに使用したファイルを削除しておきましょう。
まとめ
このような感じで。Raspberry Pi 4 model BのUSB 3.0端子にSSDを接続して、ベンチマークを実行してみました。
結果のみ抜き出すと、このような感じです。
- シーケンシャルリード(seqrd)
- SSD: 41.78MiB/s
- microSD: 29.86MiB/s
- シーケンシャルライト(seqwr)
- SSD: 18.49MiB/s
- microSD: 21.07MiB/s
- ランダムリード(rndrd)
- SSD: 57.42MiB/s
- microSD: 52.66MiB/s
- ランダムライト(rndwr)
- SSD: 5.22MiB/s
- microSD: 6.16MiB/s
このように比較してみますと。microSDカードに対して、USB 3.0のほうが絶対的に有利、というわけでは無いようです。
ランダムライトに関しては、むしろmicroSDカードのほうが早い・・・推測ですが、USB 3.0の処理のオーバーヘッドがあるのかもしれません。処理がシンプルなmicroSDカードのほうが、ランダムライトのような処理は向いているのかもしれませんね?推測ですが。
USB 3.0端子からOSをブートすると、microSDカードよりも優位性があるのか?と申しますと・・・微妙な感じが致します。私の個人的な見解では、OSのブートはmicroSDで良いかな?という感じです。
大容量のストレージを接続したい場合、選択肢はUSB 3.0一択になります。その場合、まあ、このくらいの速度は期待できる、という感じでしょうか。
まあ、新しいハードウェア、Raspberry Pi 4のストレージ性能はどうなの?という視点では。Raspberry Pi 3までのUSB 2.0端子と比較すると、USB 3.0端子による大幅な速度アップが確認できました。
ARMのシングルボードコンピュータで何かストレージを使うサーバを作る場合、Raspberry Pi 4は素晴らしい選択の1つかと思います。2020年、新しい時代のシングルボードコンピュータにふさわしい性能かと思います。
さてさて、年末年始はどんなサーバを作って遊びましょうか?!
コメント
こんばんは。
いつも有用な記事を拝読させていただき、誠にありがとうございます。
今回も興味深い内容ながら、HTMLタグが表示されたままですので、何とぞご修正を。
今後の内容にも期待しております。
りっせい さん はじめまして。
早々にコメント頂きまして、誠にありがとうございます。
土曜日ということで、ほろ酔い(泥酔?)で記事を書いたところ、なんだかよくわからない状態になってしまいました(ぉぃ
一眠りして、記事を修正致しました。
まだ酔がまわっておりますが、シラフのときにしっかりチェックしようと思いますので。
今の所、このあたりでご容赦下さい。