Raspberry Pi 5の各種NVMe SSDボードを試す

あっきぃです。

日本ではRaspberry Pi 5の発売はまだですが、先週末には日本の技適に関する証書PDFがRaspberry Piのポータルにアップロードされ、進捗が見えてきています。残念ながらこのPDFをもって日本で買ったり使ったりして良いことにはなっておらず、製品(またはパッケージ等)にマークと番号が印字されたものが販売開始されて初めて適法に利用できるようになるため、もう少しの辛抱です。

https://pip.raspberrypi.com/categories/894-approvals

さて、今回はRaspberry Pi 5のNVMe SSD用アクセサリーボードの話題。PCI Expressポートを使用したNVMe SSDの接続用アクセサリーボードについて、公式から販売が予告されていますが、まだ発売はされていません。しかし、すでにサードパーティベンダーからはいくつものNVMe SSDの接続用アクセサリーボードが発売されています。何種類か入手して試してみましたので、それぞれの使用感をレポートしていきます。

3種類のボード

今回紹介するのはこちらの3種類です。

各ボードについて、それぞれ詳しく見ていきましょう。

コンパクトながら2280サイズに対応するX1001

GeekwormのX1001は、Pi 5上に搭載するタイプのボードです。GPIO接続は不要かつGPIO部分が空いているため、HATボードの接続等のGPIOポートアクセスが可能です。固定用のネジ穴は3つで、スペーサーをつけると3本足で立つ、少しふしぎな形になります。

NVMe SSDは2230、2242、2260、2280のサイズに対応しますが、SSDの固定のダボは2280で固定になっていて外せないため、写真のように2280サイズ以外のSSDを使う場合には、別のアダプター等に付属している固定ネジが必要になります。また、動作中はACTのLEDランプが点滅します。

HAT形状のHAT Drive! Top

2023年9月末に設立されたばかりという、ポーランドのPineBerry Piが販売するHAT Drive Top!は、HATサイズにまとまったコンパクトなボードです。コンパクトな分、対応するNVMe SSDのサイズは2230、2242のみとなります。通電中の電源ランプとACTランプを搭載しています。

Raspberry Piへの接続は、PCIeケーブルのみでも動作しましたが、GPIOポートに接続するための延長ピンソケットが付属しており、これを使用して他のHATボードなどとセットで搭載することができます。なお、延長ピンソケットの抜き差しは慣れるまでは少し大変な印象でした。

Pi 5の下に配置!NVMe Base

イギリスのPimoroniが販売するNVMe Baseは、先述の2つとは違い、Pi 5の下に搭載するタイプのボードです(ちなみに、Pineberry PiやGeekwormも同様にボトムに配置するタイプのボードがあるようです)。

SSDのサイズはX1001と同じく2230、2242、2260、2280に対応します。SSDの固定は付属のネジとナットを使用して固定します。

ボードの裏面は波紋のような模様が特徴的。また、FPCケーブルのカーブも面白い設計ですね。

組み立てたあとの様子。ボードが下にあるため、Pi 5の全ポートにアクセス可能なのが便利です。一方、SSDの交換については都度ネジを外す必要があるのが、用途によっては面倒に感じるかも知れません。また、公式ケースやPimoroniのPiBowとは組み合わせられないのも惜しいところです。NVMe Baseに対応したPiBowケースの登場に期待したいです。

Raspberry Pi 5でNVMeブートをするための手順

Pi 5でNVMeブートをするには、事前にPi 5のEEPROM上の設定に対してブート順序の変更が必要なため、MicroSDカードでOSを起動して、rpi-eeprom-configコマンドを実行して設定作業を行います。

コマンドを実行するとエディターに設定が表示されるため、以下の2つのパラメータについて設定します。

$ sudo rpi-eeprom-config --edit

[all]
# BOOT_ORDERを変更。fより右に6を含める
BOOT_ORDER=0xf416

# 追記する
PCIE_PROBE=1

BOOT_ORDERパラメータは、6がfよりも右に含まれるように書き換えます。Raspberry Piの起動時には、数字の右側から起動が試行されます。0xf416の場合は、NVMe、MicroSD、USBの順に試して、起動メディアがなければまたNVMeから再試行していきます。各数字の意味の詳細は公式のドキュメントを参照してください。

https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#BOOT_ORDER

PCIE_PROBEパラメータは、次期HAT(おそらくHAT+)の仕様をサポートしないボードのためのパラメーターで、設定するとCM4と同様のPCIe x1検出方法になります。この設定はX1001とNVMe Baseの場合は不要です。HatDrive! Topの場合のみGPIO接続時にパラメータが必要ですが、GPIOに接続しない場合は不要です(今後のHatDrive!の設計変更によってはGPIO接続時でも不要になる可能性があります)。

https://github.com/raspberrypi/rpi-eeprom/releases/tag/v2023.12.06-2712

設定後はファイルを保存して終了し、一度OSを再起動します。再起動後はOSをシャットダウンしておきます。

NVMe SSDへのOSの用意

NVMe SSDにRaspberry Pi OSをインストールするには、作業PCにNVMe SSDを接続するために、USBに変換するためのエククロージャが必要です。Amazon等で販売されているので、1つ用意しておくと良いでしょう。

USB変換を使用してPC等に接続するとUSBストレージとして認識するので、MicroSDカードのときと同様に、Raspberry Pi Imager等を使用してRaspberry Pi OSを書き込みます。

OSを書き込んだ後、再度PCに接続してブートパーティションをマウントし、/boot/config.txtをエディターで開いて、以下の設定をファイルの末尾に追記します。

[all]
dtparam=pciex1
dtparam=pciex1_gen=3

dtparam=pciex1は、PCI Expressの外部コネクターを有効にするためのオプションです(なくても動作しますが一応記述します)。有効化すると、ポートがPCI Express 2.0 x1として利用できるようになります。

しかし、公式にはサポートされていないものの、dtparam=pciex1_gen=3を追加することで、PCI Express 3.0 x1として利用できるように強制できます。ただし、起動できなかったり、不安定になる場合もあるようなので、不具合が生じた場合はこのパラメータと除いてみてください。

起動!

OSが用意できたらボードをPi 5に搭載して起動します。ユーザー会では引き続き電波暗箱を使用しているため、箱にボードを入れての試験となります。基本的にボードに因る性能差異はなかったため、HatDrive! Topで検証した内容を掲載します。PCIe 3.0×1で問題なく利用できたため、SSDの性能をより引き出すことができました。

まずはhdparmを使用したシーケンシャルリードのテスト。800MB/sという、ラズパイらしからぬ性能が出ています。

akkie@nvmepi1:~ $ sudo hdparm -t /dev/nvme0n1

/dev/nvme0n1:
 Timing buffered disk reads: 2454 MB in  3.00 seconds = 817.58 MB/sec

続けてddコマンドでシーケンシャルライトのテスト。こちらも700MB/s弱の性能を叩き出していて、やはりラズパイらしからぬスピードです。

akkie@nvmepi1:~ $ dd if=/dev/zero of=a.zero bs=1M count=10000
10000+0 records in
10000+0 records out
10485760000 bytes (10 GB, 9.8 GiB) copied, 15.0922 s, 695 MB/s

Raspberry Piのストレージをテストしてサイトに掲載するスクリプトを提供しているPi Benchmarksのスクリプトを使用したテスト結果は以下の通り。DDの書き込み方法が異なるためか、あるいは熱による性能低下によるものかは不明ですが、こちらは359MB/sにダウンしてしまいました。ランダムの読み書き性能は150〜200MB/sと、なかなかの数字となりました。

     Category                  Test                      Result     
HDParm                    Disk Read                 798.84 MB/sec            
HDParm                    Cached Disk Read          675.10 MB/sec            
DD                        Disk Write                359 MB/s                 
FIO                       4k random read            126419 IOPS (505679 KB/s)
FIO                       4k random write           59883 IOPS (239532 KB/s) 
IOZone                    4k read                   198011 KB/s              
IOZone                    4k write                  144889 KB/s              
IOZone                    4k random read            57412 KB/s               
IOZone                    4k random write           167898 KB/s              

                          Score: 37236 

まとめ

色々なNVMeボードについて特徴を解説し、実際にボードをRaspberry Pi 5で利用するための手順について解説しました。

公式のNVMe HATボードがまだ登場していませんが、すでにサードパーティベンダーから、今回紹介したような、使い方やNVMe SSDのサイズに応じた様々なボードを選べるようになっているため、お好みで用意してみてはいかがでしょうか。

NVMe SSDを利用することで、MicroSDカードよりも高信頼かつ高速なRaspberry Piの環境が構築できます。サーバー用にRaspberry Pi 5を検討している方は、NVMe SSDの採用も合わせて検討すると良いでしょう。