Raspberry Pi 5をM.2 NVMe SSDからブートしてベンチマークしてみた
3行まとめ
- Raspberry Pi 5はM.2 NVMe SSDから簡単にブートできる
- Raspberry Pi 5 + M.2 NVMe SSDは良い感じに高速
- M.2 NVMe SSDをケースに内蔵できるのでスッキリ
はじめに
ついに日本でもRaspberry Pi 5が発売されましたね。
早速、Raspberry Pi 5を入手したので、M.2 NVMe SSDからブートして、ストレージのベンチマーク測定をしてみました。
機材
使用した機材は以下の通りです。
| 名称 | リンク | 
|---|---|
| Raspberry Pi 5 8GB | スイッチサイエンス | 
| Raspberry Pi 5用アクティブクーラー | スイッチサイエンス | 
| Geekworm X1001 V1.1 PCIe NVMe M.2 拡張ボード | Amazon | 
| Geekworm Raspberry Pi 5 ケース | Amazon | 
| KIOXIA EXCERIA G2 SSD-CK1.0N3G2/N | Amazon | 
| ORICO M.2 SSD 外付けケース | Amazon | 


M.2 NVMe SSDからのブート
M.2 NVMe SSDからのブートは、以下の記事を参考にしました。
上記の記事と同じように、以下の手順で進めました。
- microSDカードにRaspberry Pi OSを書き込み
- microSDカードからブート
- ブートローダーをアップデート(今回は最新だったので省略)
- ブート設定を変更
- 
sudo rpi-eeprom-config --editを実行
- 
BOOT_ORDER=0xf416に書き換え
- 
PCIE_PROBE=1を追加
 
- 
- M.2外付けケースにM.2 NVMe SSDを取り付け
- M.2 NVMe SSDにRaspberry Pi OSを書き込み
- M.2 NVMe SSDのconfig.txtの末尾にdtparam=nvmeを追加
- Raspberry Pi 5にM.2 NVMe SSDを取り付け
- M.2 NVMe SSDからブート
ちなみにGIGAZINEの記事にあるdtparam=pciex1の追加は不要でした。
電源問題に遭遇
M.2 NVMe SSDからのブート自体は問題なく行えたのですが、「アクティブクーラーとM.2 NVMe SSDを組み合わせると数回に1回しか起動しない」という問題に遭遇しました。
具体的には、「起動時にアクティブクーラーが回った時点で電源が切れ、再起動してしまう」という現象が発生しました。
何度か試すと起動に成功し、一度起動してしまえば問題なく動作しました。恐らくアクティブクーラーによって電圧降下が生じているのだと思われます。
この辺りは、5V/5Aを安定して供給できる電源アダプタの登場が待たれますね。
環境
ベンチマーク測定を行った環境は以下の通りです。
$ uname -a
Linux raspi5b8g-1 6.1.0-rpi8-rpi-2712 #1 SMP PREEMPT Debian 1:6.1.73-1+rpt1 (2024-01-25) aarch64 GNU/Linux
$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
$ grep Model /proc/cpuinfo
Model		: Raspberry Pi 5 Model B Rev 1.0
$ rpi-eeprom-update
BOOTLOADER: up to date
   CURRENT: Fri Jan  5 15:57:40 UTC 2024 (1704470260)
    LATEST: Fri Jan  5 15:57:40 UTC 2024 (1704470260)
   RELEASE: default (/lib/firmware/raspberrypi/bootloader-2712/default)
            Use raspi-config to change the release.
$ rpi-eeprom-config
[all]
BOOT_UART=1
POWER_OFF_ON_HALT=0
BOOT_ORDER=0xf416
PCIE_PROBE=1
$ free -h
               total        used        free      shared  buff/cache   available
Mem:           7.9Gi       223Mi       7.3Gi       5.1Mi       403Mi       7.6Gi
Swap:           99Mi          0B        99Mi
$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            3.8G     0  3.8G   0% /dev
tmpfs           805M  5.1M  800M   1% /run
/dev/nvme0n1p2  917G  1.7G  869G   1% /
tmpfs           4.0G     0  4.0G   0% /dev/shm
tmpfs           5.0M   48K  5.0M   1% /run/lock
/dev/nvme0n1p1  510M   63M  448M  13% /boot/firmware
tmpfs           805M     0  805M   0% /run/user/1000
$ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
nvme0n1     259:0    0 931.5G  0 disk
|-nvme0n1p1 259:1    0   512M  0 part /boot/firmware
`-nvme0n1p2 259:2    0   931G  0 part /
$ sudo apt install fio
$ fio --version
fio-3.33
$ cat <<EOS > fio.config
[global]
ioengine=libaio
iodepth=1
size=1g
direct=1
runtime=60
directory=/tmp
stonewall
[Seq-Read]
bs=1m
rw=read
[Seq-Write]
bs=1m
rw=write
[Rand-Read-512K]
bs=512k
rw=randread
[Rand-Write-512K]
bs=512k
rw=randwrite
[Rand-Read-4K]
bs=4k
rw=randread
[Rand-Write-4K]
bs=4k
rw=randwrite
[Rand-Read-4K-QD32]
iodepth=32
bs=4k
rw=randread
[Rand-Write-4K-QD32]
iodepth=32
bs=4k
rw=randwrite
EOS
測定結果
fioコマンドを使いM.2 NVMe SSDのベンチマーク測定を行いました。結果は以下の通りです。
$ fio -f fio.config
| 項目 | 速度 | IOPS | 
|---|---|---|
| Seq-Read | 430MB/s | 409 | 
| Seq-Write | 404MB/s | 385 | 
| Rand-Read-512K | 413MB/s | 787 | 
| Rand-Write-512K | 394MB/s | 751 | 
| Rand-Read-4K | 55MB/s | 13.4k | 
| Rand-Write-4K | 132MB/s | 32.1k | 
| Rand-Read-4K-QD32 | 441MB/s | 108.0k | 
| Rand-Write-4K-QD32 | 291MB/s | 70.9k | 
過去に測定したRaspberry Pi 4とUSB SSDの組み合わせと比較してみると、かなり早いですね。
おわりに
Raspberry Pi 5とM.2 NVMe SSDの組み合わせは、アクティブクーラーとの組み合わせに若干の問題がありつつも、すんなりと動作しました。また、動作もとても高速でした。
円安の関係もあり、Raspberry Pi 5 8GBはちょっとお高めではありますが、ホームサーバーとしては十分に使えるマシンになりそうです。


Discussion