見出し画像

ラズパイ5にNVMe SSDを取り付ける

ラズパイ5では新たにPCI Express(PCIe)のインタフェースが追加されました。そのため、SSDなどをつなぐことができます。
ネットでも多くの動作報告がされていますが、私も試してみました。

いくつかNVMe SSD用のボードが出ているようですが、PIMORONIのボードが手に入りやすいようなので、それを購入しました。

SSDはAmazonで安めのものを選択しました。特に使用目的も決まっていないので128GBと少なめのものにしました。

Silicon Power社のM.2 2280 SSD 128GB

1.ボードの取り付け

ラズパイとボードの間はケーブルで接続します。ラズパイ側とボード側でコネクタが異なるので、ちょっと迷いました。
ラズパイ側は取り付け金具を上下に、ボード側は取り付け金具を回転させて開く感じになっています。

黒い金具を上に上げてケーブルを差し込んで、下に下ろしてケーブルを挟む
黒い金具を上に開いてケーブルを挟んで、下に下ろしてケーブルを挟む

ラズパイ5はラズパイ公式のファン付きのケースに入れていたので、ケーブルを出すために穴を開けました。

ケーブルを出すための穴
スペーサーはボード付属のものをそのまま利用
スペーサーはラズパイ側からネジ止め
ケースの下にボードを付ける
ネジはちょっと短い感じがしたので手持ちのものに交換しました。
完成

ボードの接続が完了したら、SDカードからラズパイを起動すれば、自動的にSSDが認識されるようです。/devディレクトリ内にnvmeで始まるファイルを確認してください。nvmeから始まるファイルがあればOKです。

$ ls /dev/nv*
/dev/nvme0  /dev/nvme0n1 

PIMORONIの説明には、raspi-configを起動して、「Advanced Options」→「Bootloader Version」→「Latest 」を設定するようにありますが、特にやらなくても良いようです。

PCIe Gen3とする場合は、/boot/firmware/config.txtに下記を設定します。設定した場合は、有効にするため再起動します。但し、この設定は速度が向上しますが、非公式のようです。

[all]
dtparam=pciex1_gen3

2.SSDを拡張ドライブとする場合

SDカードから起動して、SSDを拡張ドライブとして利用する場合の設定方法です。SSDから起動する場合の設定方法は、次の項を見てください。

はじめに、fdiskを使ってSSDにパーティションを作成します。

$ sudo fdisk /dev/nvme0n1

Welcome to fdisk (util-linux 2.38.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS (MBR) disklabel with disk identifier 0x2018bc6f.

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-250069679, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-250069679, default 250069679):

Created a new partition 1 of type 'Linux' and of size 119.2 GiB.
Partition #1 contains a ntfs signature.

Do you want to remove the signature? [Y]es/[N]o: Y

The signature will be removed by a write command.

Command (m for help): p
Disk /dev/nvme0n1: 119.24 GiB, 128035676160 bytes, 250069680 sectors
Disk model: SPCC M.2 PCIe SSD
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x2018bc6f

Device         Boot Start       End   Sectors   Size Id Type
/dev/nvme0n1p1       2048 250069679 250067632 119.2G 83 Linux

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

作成したパーティション(/dev/nvme0n1p1)にmkfsを使ってファイルシステムを作成します。ここではext4ファイルシステムを作成して、手動で/mntにマウントする場合の例です。

$ sudo mkfs -t ext4 /dev/nvme0n1p1
$ sudo mount /dev/nvme0n1p1 /mnt

dfで確認すると、/dev/nvme0n1p1が/mntにマウントされていることが確認できます。117GBの容量のディスクとなっています。

$ df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
udev             3.8G     0  3.8G    0% /dev
tmpfs            805M  6.5M  799M    1% /run
/dev/mmcblk0p2    29G  8.8G   18G   33% /
tmpfs            4.0G   32K  4.0G    1% /dev/shm
tmpfs            5.0M   48K  5.0M    1% /run/lock
/dev/mmcblk0p1   510M   74M  437M   15% /boot/firmware
tmpfs            805M  256K  805M    1% /run/user/1000
/dev/nvme0n1p1   117G   24K  111G    1% /mnt

起動時に自動でマウントさせるには/etc/fstabに書き込めばOKです。
例えば/ssdディレクトリにマウントさせたいなら、ディレクトリを作って

$ sudo mkdir /ssd

/etc/fstabに下記を書き込めば良いです。

/dev/nvme0n1p1  /ssd    ext4    defaults        0       3

3.SSDを起動ディスクとする場合

SSDからラズパイを起動する場合の設定方法です。

SDカードからラズパイを起動し、そのラズパイOSでRaspberry Pi Imagerを起動して、SSDにOSのイメージを書き込みます。やり方は、ラズパイOSをSDカードにインストールした場合と同じです。

$ sudo apt install rpi-imager
$ sudo pi-imager

次にraspi-configを実行して、"Advanced Options" -> "Boot Order" -> "NVMe/USB Boot"を設定します。

$ suudo raspi-config

この設定をすることで、電源投入時の起動するOSを探す順が、①SSD(NVMe)、②SDカードの順となります。
SDカードを抜いてSSDのみで起動する場合には、特にこの変更をしなくても、SSDから起動するかと思います(デフォルトの起動順は①SDカード、②SSDになっているので)。

再起動すればSSDから起動すると思います。

4.SSDのパフォーマンス

SSDのパフォーマンスに関しては、こちらに書きました。


この記事が気に入ったらサポートをしてみませんか?