PR

ロボット制御 #13 Raspberry Pi 5 をSSD起動にしてみる
Raspberry Pi 5 が不安定になってしまったので、SSDをセットアップして高速化&安定化したという話

制御

Raspberry Pi 5 が不安定になり、ビルドやパッケージのインストールが遅くなったり、途中で止まる現象が発生したのでSSD起動に切り替えて高速化した話です。

Raspberry Pi 5 のセットアップは以下で触れています。

Raspberry Pi 5 が不安定になった原因

まず、そもそもの低速化に至った話は、一度、何かをインストールしている最中に Raspberry Pi 5 がフリーズしたので、禁じ手、SysRq+[b] キーでの強制リブートをしをしてしまったことがきっかけでした。その日以降、以下のようなエラーが出て、インストールしなおしても症状が改善されませんでした。

一度、発生すると何もできなくなり、電源長押しでしか再起動できません。

これは、SDカードが不良になってしまったことが原因で、別のSDカードを使ってインストールしなおすことで改善しました。
ともあれ、購入してしまったのでSSD起動に切り替えます。

SSD の取り付け

Raspberry Pi 5 には、PCIe 2.0 が付いているので、対応した高速周辺機器の取り付けが可能になりました。また、Raspberry Pi のサイズに合わせたNVMEシールドもあるので、これらを購入して早速、取り付けてみました。
なお、Raspberry Pi 5 は、SDカードでセットアップ済みで、今回は、SDカードからSSDへの移行という形で進めました。

合わせて、SSD を取り付けた後に収納できるケースも購入しました。

Raspberry Pi 5 含めて購入したのは、以下のものです。

届いたので、早速、取り付けていきます。

まずは、Raspberry Pi 5 に X1001 NMVeボードを取り付けます。
(電源を抜いた状態で取り付けます)

ボードに付属しているケーブルをRaspberry Pi 5 側にセットアップします。

続いてボードを支えるスペーサーを3ヵ所ネジ留めします。

ボードを載せて、ネジで固定します。

SSD を取り付けます。

はめ込むだけです。

PCIe バスの反対側をネジで固定します。

これで、Raspberry Pi 5 に SSD を取り付け完了しました。

SSD で起動できるようにする

SSD にSDカードのイメージをコピーして、起動できるようにします。

ファームウェアの更新

Raspberry Pi 5 起動したら、最新の状態に更新します。

Raspberry Pi 5 本体のファームウェアを更新します。

パーティションの作成とフォーマット

ディスクの状態を確認します。

パーティションの状態を確認します。

parted を対話モードで起動しています。
パーティションの状態を確認するコマンド「p」を実行すると、エラーが表示されました。
ディスクラベルが設定されていないとのことです。
mklabel gpt」でラベルを付けます。
ラベルを付けた後で、「p」を実行すると、エラー無く表示されました。
現段階では、パーティションが無いので、作成する必要があります。

再び、ディスクの状態を確認します。

フォーマットを行います。

SDカードのイメージをSSDへコピー

再起動して、イメージをコピーします。

メニューから [アクセサリ]→[SD Card Copier] を選択してSDカードからSSDにイメージをコピーします。

Copy From Device:」にSDカードのデバイスを指定します。
ここでは「USD00 (/dev/mmcblk0)」を指定しました。
Copy To Device:」にSSDを指定します。ここでは「PCIe SSD (/dev/nvme0n1)」を指定しました。

Start」ボタンを押すとパーティションを作成して、データがコピーされます。

ブートデバイスの変更

raspi-config」を起動します。

6 Advanced Options」を選択します。

A4 Boot Order」を選択します。

B2 NVMe/USB Boot」を選択します。

ブートデバイスが変更されました。
一旦、再起動します。再起動後にシャットダウンしてSDカードを抜いた状態で起動します。

SSDのみで起動できるようになりました。

ケースに格納する

起動することが分かったので、ケースに収納します。

真ん中の黒い金属製のケースに収納します。

X1001 NVMeボードの取り付けで使ったネジを外します。
1つずつ外してケースに付属の別ネジを取り付けます。

上の写真は、4ヵ所全て取り付けが完了した状態です。
なお左上は、ダミーのスペーサーを取り付けています。

ケースにRaspberry Pi 5 on SSD をセットアップします。
写真のように右側は、空けて左側にピッタリと寄せます。

ひっくり返してケース付属のネジで4ヵ所止めます。
実際には、2ヵ所は立てた状態でネジ留めして、残りの2か所のみひっくり返してネジ留めしています。

固定済みの状態です。

ケースのカバーをはめ込んで、ネジを4ヵ所止めます。
これでケースへの収納が完了です。

問題なく起動しました。

早くなったのか検証してみる

どのくらい早くなったのか確認してみます。
以下のサイトを参考にさせて頂きました。

fio のインストール

fio」コマンドを使ってベンチマークを計測します。

ベンチマークの内容は、以下に設定します。

[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-QDS32]
iodepth=32
bs=4k
rw=randread

[Rand-Write-4K-QDS32]
iodepth=32
bs=4k
rw=randwrite
INI

SDカードのベンチマーク

SSDを外した状態で「fio」を実行してみます。
代わりにSDカードを差し込んだ状態で起動しています。

以下のコマンドで計測します。

計測結果は、以下の通りです。

項目速度IOPS
Seq-Read93.8MB/s89
Seq-Write74.4MB/s70
Rand-Read-512K91.7MB/s174
Rand-Write-512K67.1MB/s128
Rand-Read-4K15.0MB/s3655
Rand-Write-4K6255KB/s1527
Rand-Read-4K-QDS3215.5MB/s3783
Rand-Write-4K-QDS326802KB/s1660

SSD のベンチマーク

SDカードを外した状態で「fio」を実行してみます。

以下のコマンドで計測します。

計測結果は、以下の通りです。

項目速度IOPS速度-UPIOPS-UP
Seq-Read426MB/s406454.16%456.18%
Seq-Write392MB/s374526.88%534.29%
Rand-Read-512K406MB/s774442.75%444.83%
Rand-Write-512K391MB/s745582.71%582.03%
Rand-Read-4K56.7MB/s13900378.00%380.30%
Rand-Write-4K142MB/s347002270.18%2272.43%
Rand-Read-4K-QDS32440MB/s1070002838.71%2828.44%
Rand-Write-4K-QDS32286MB/s699004204.65%4210.84%

ベンチマークの内容によって、倍率にはかなり差異が発生しますが、少なくとも4倍以上の高速化にはなっていると思います。

以上です。

コメント

タイトルとURLをコピーしました