[Raspberry Pi4] Pi4 のストレージをSDカードからSSDへ変更する

Ubuntu

ラズパイを自宅サーバーとして使っていると、どうしてもSDカードの寿命を気にしなくてはなりません。ラズパイ4はUSBドライブからも起動できるので、試してみたという話。
結果的にサクサク動作するようになり快適です。定期的なログの書き込みなどで、SDカードが壊れる問題もなくなるので、運用も楽になります。

試した環境

Raspberry Pi 4 8GB

SSDドライブにはSanDisk SSD 480GB を使用しています。
コンパクトで速度も早いのでラズパイに合わせるにはちょうど良い感じです。
※追記:速度は遅くなりますがバッファローのSSDも使っています。アクセスランプがある方がわかりやすいですね。 

ファームウェアの確認・アップデート

まずはラズパイのファームウェアを確認します。

USBドライブで起動するには、2020年9月版より新しいファームウェアが必要です。

# Ubuntu だと rpi-eeprom をインストールする必要がある
$ sudo apt install -y rpi-eeprom

# 現在のバージョンを確認。古いみたい。
$ rpi-eeprom-update
BCM2711 detected
VL805 firmware in bootloader EEPROM
VCHI initialization failed
*** UPDATE AVAILABLE ***
BOOTLOADER: update available
CURRENT: 2020年  3月 19日 木曜日 14:27:25 UTC (1584628045)
 LATEST: 2020年  9月  3日 木曜日 12:11:43 UTC (1599135103)
 FW DIR: /lib/firmware/raspberrypi/bootloader/default
VL805: version unknown. Try sudo rpi-eeprom-update
CURRENT:
 LATEST:

# アップデートする
$ sudo rpi-eeprom-update -a
BCM2711 detected
VL805 firmware in bootloader EEPROM
*** INSTALLING EEPROM UPDATES ***
BOOTLOADER: update available
CURRENT: 2020年  3月 19日 木曜日 14:27:25 UTC (1584628045)
 LATEST: 2020年  9月  3日 木曜日 12:11:43 UTC (1599135103)
 FW DIR: /lib/firmware/raspberrypi/bootloader/default
VL805: up-to-date
CURRENT: 000137ad
 LATEST: 000137ad
BOOTFS /boot/firmware
EEPROM updates pending. Please reboot to apply the update.

# 再起動
$ sudo reboot

# アップデートされていることを確認
$ sudo rpi-eeprom-update
BCM2711 detected
VL805 firmware in bootloader EEPROM
BOOTLOADER: up-to-date
CURRENT: 2020年  9月  3日 木曜日 12:11:43 UTC (1599135103)
 LATEST: 2020年  9月  3日 木曜日 12:11:43 UTC (1599135103)
 FW DIR: /lib/firmware/raspberrypi/bootloader/default
VL805: up-to-date
CURRENT: 000138a1
 LATEST: 000138a1
ブートオーダの設定を変更する

ファームウェアをアップデートができたら、ブートオーダーを確認します。

私の環境は BOOT_ORDER=0x1 になっていました。これだとブートデバイスに使えるのはSDカードのみになります。

# 現在の設定値を確認する
$ rpi-eeprom-config
...
BOOT_ORDER=0x1
...

USBドライブを優先させる場合は BOOT_ORDER=0xf14、SDカードを優先させる場合は BOOT_ORDER=0xf41 に変更すれば良さそうです。

https://www.raspberrypi.org/documentation/hardware/raspberrypi/bcm2711_bootloader_config.md
BOOT_ORDERDescription
0xf41Try SD first, followed by USB-MSD then repeat (default if BOOT_ORDER is empty)
0xf14Try USB first, followed by SD then repeat
0xf21Try SD first, followed by NETWORK then repeat

今回は、BOOT_ORDER=0xf41 を設定しました。

# BOOT_ORDER の値を変更する
$ env EDITOR=vi sudo -E rpi-eeprom-config --edit
[all]
BOOT_UART=0
WAKE_ON_GPIO=1
POWER_OFF_ON_HALT=0
DHCP_TIMEOUT=45000
DHCP_REQ_TIMEOUT=4000
TFTP_FILE_TIMEOUT=30000
TFTP_IP=
TFTP_PREFIX=0
BOOT_ORDER=0xf41 # ← ここを書き換える
SD_BOOT_MAX_RETRIES=3
NET_BOOT_MAX_RETRIES=5
[none]
FREEZE_VERSION=0

# 保存したらリブート
$ sudo reboot

これでSDカードが刺さっていなければ、USBドライブからブートするようになります。

念の為、SDカードでもう一度起動して、設定値を確認します。

# BOOT_ORDER の値が変わっています
$ rpi-eeprom-config
[all]
BOOT_UART=0
WAKE_ON_GPIO=1
POWER_OFF_ON_HALT=0
DHCP_TIMEOUT=45000
DHCP_REQ_TIMEOUT=4000
TFTP_FILE_TIMEOUT=30000
TFTP_IP=
TFTP_PREFIX=0
BOOT_ORDER=0xf41
SD_BOOT_MAX_RETRIES=3
NET_BOOT_MAX_RETRIES=5
[none]
FREEZE_VERSION=0

# 停止
$ sudo shutdown

SDカードの内容をSSDにコピーする

設定ができたら、あとはSDカードの内容をSSDにコピーして差し替えるだけです。
私の場合はWin32 Disk ImagerでSDカードの内容をPCにバックアップして、SSDに書き込みました。

SSDからの読み込みに数時間かかったので、新しくインストールして必要なデータだけを移したほうが早いかもしれません。

確認してみる

こちらの記事「Raspberry PiでmicroSDカードの性能測定」を参考にさせていただき、SDカードの時とSSDにした時の速度を比べてみます。

下記のコマンドを叩くと、いろいろパッケージがインストールされたあとに計測が始まりました。

$ sudo curl https://raw.githubusercontent.com/TheRemote/PiBenchmarks/master/Storage.sh | sudo bash

しばらくすると、結果が表示されます。

SDカードの計測結果

     Category                  Test                      Result
HDParm                    Disk Read                 41.90 MB/s
HDParm                    Cached Disk Read          41.65 MB/s
DD                        Disk Write                21.2 MB/s
FIO                       4k random read            3933 IOPS (15732 KB/s)
FIO                       4k random write           1286 IOPS (5146 KB/s)
IOZone                    4k read                   13440 KB/s
IOZone                    4k write                  4086 KB/s
IOZone                    4k random read            10613 KB/s
IOZone                    4k random write           4082 KB/s

                          Score: 1510

SSDの計測結果

     Category                  Test                      Result
HDParm                    Disk Read                 290.82 MB/s
HDParm                    Cached Disk Read          187.73 MB/s
DD                        Disk Write                97.1 MB/s
FIO                       4k random read            3927 IOPS (15711 KB/s)
FIO                       4k random write           13178 IOPS (52715 KB/s)
IOZone                    4k read                   14148 KB/s
IOZone                    4k write                  15774 KB/s
IOZone                    4k random read            14040 KB/s
IOZone                    4k random write           17677 KB/s

                          Score: 5097

くらべるまでもありませんが、数値で見ても読み書きの性能が向上していることがわかります。
パッケージのインストールなども爆速になりました。ストレージがボトルネックで、ラズパイ4本来のパフォーマンスが出せていなかったのがよくわかります。
ただ、Transcend製のSDカードも十分速いので通常はこれでも問題ないですね。

コメント

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