外付けSSDをラズベリーパイに増設してデータをガンガン保存できるようにする

ラズパイをSDカードで動かしていると寿命とか空き領域が気になります。
そんな時にはSSDを外付けしてしまいましょう!

ということで、ラズベリーパイにUSB接続のSSDを接続して簡単に領域を増やす方法です。

用意した物

まずは必要なモノをゲット。

Cyberplugs SATA-USB 3.0 変換アダプタ(Amazonで880円)

  • USBが二股になっていて追加で電力を供給できるタイプを選定。
  • USBの電源供給が不安定だとドライブがうまく認識されないので選ぶときは注意!

 

Pasoul SSD 120GB(Amazonで3199円)

  • 日本国内三年保証がついて3000円台で買えちゃうSSD!もはやSDカードレベルw
  • 黒アルマイトで見た目もなかなか良い。剥き出しで置いちゃっても大丈夫そうな作りです。

 

用意する物はこれだけ^^

変換アダプタをSSDに接続すると、こんな感じに。

 

USB接続で使えるように準備する

それでは早速ラズパイで使えるようにしていきます。
接続先は「Raspberry Pi 3B+」のUSBポートです。

デバイスの確認

まずはUSBで接続して、OSが認識できているか見てみましょう。

ターミナルを開いてdmesgで確認します。

$ dmesg |tail -16
[1217.352214] usb 1-1.1.3: new high-speed USB device number 5 using dwc_otg
[1217.485917] usb 1-1.1.3: New USB device found, idVendor=2109, idProduct=0711
[1217.485932] usb 1-1.1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[1217.485941] usb 1-1.1.3: Product: FX-11124
[1217.485949] usb 1-1.1.3: Manufacturer: FX
[1217.485957] usb 1-1.1.3: SerialNumber: 00000012498D
[1217.486770] usb-storage 1-1.1.3:1.0: USB Mass Storage device detected
[1217.496117] scsi host0: usb-storage 1-1.1.3:1.0
[1218.503293] scsi 0:0:0:0: Direct-Access OASDX-12 0G R052 PQ: 0 ANSI: 6
[1218.504344] sd 0:0:0:0: [sda] 234441644 512-byte logical blocks: (120 GB/112 GiB)
[1218.504826] sd 0:0:0:0: [sda] Write Protect is off
[1218.504838] sd 0:0:0:0: [sda] Mode Sense: 2f 00 00 00
[1218.505380] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[1218.508253] sda:
[1218.510390] sd 0:0:0:0: [sda] Attached SCSI disk
[1218.527163] sd 0:0:0:0: Attached scsi generic sg0 type 0

ずらずらっとUSB周りの情報が出てきて、120GBのSCSI diskがsdaとして認識されています。

fdiskでも確認してみましょう。

$ sudo fdisk -l
...
Disk /dev/sda: 111.8 GiB, 120034121728 bytes, 234441644 sectors
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: 0x307bac7f

/dev/sdaに新しいディスクとして認識されています。

 

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

このままではデータの読み書きができないので、ディスクにパーティションを作ってフォーマットしていきます

認識されたデバイスを指定してfdiskを実行します。

$ sudo fdisk /dev/sda

d でデリートして、
n で新しいパーティションを作ります。
色々聞かれますが特に設定をいじる必要は無いのでそのまま数回 Enter を押して進めます。

p を押すと現在の状態が確認できます。

最後に、 w で設定を反映させて終了。

これでパーティションが出来上がったので、次にディスクをフォーマットしていきます。

Linuxで標準的なext4形式でフォーマットします。

$ sudo mkfs.ext4 /dev/sda1

すぐに終わると思います。

 

マウントポイントの作成とマウントテスト

デバイスの下準備が完了したので、仕上げにファイルシステムとして読み書きできるようにしていきます。

マウントポイントを作成します。/mnt/ に適当な名前のディレクトリを作ります。
外付けSSDなので、そのまんま ex-ssd にしましたw

$ sudo mkdir /mnt/ex-ssd

マウントできるかテストします。

$ sudo mount -t ext4 /dev/sda1 /mnt/ex-ssd
$ df -h |grep ssd
/dev/sda1 110G 61M 104G 1% /mnt/ex-ssd

無事にマウントされていました!

ここまで確認できたら一旦 unmount します。

$ sudo umount /mnt/ex-ssd

 

fstab の設定

システム起動時に毎回マウントされるようにfstabの設定をを行います。

  • ※fstabに記述すると、起動時に外付けSSDが繋がっていないと起動しなくなりますのでご注意!
  • ※autofs という仕組みもありますが、読み書きが激しく遅くなるのでオススメしません!

まず、ディスクのUUIDを確認します。

$ sudo blkid /dev/sda1
/dev/sda1: UUID="1b9eeccf-f177-432e-af4d-e8ea45d733dc" TYPE="ext4" PARTUUID="307bac7f-01"

この中のUUID=””と書かれている情報を使います。

次に、TRIM可能か確認します。(参考サイト
TRIMが使えると書込速度の低下を抑えることができるそうです。

パラメータを確認するために hdparm をインストールします。

$ sudo apt install hdparm

そして、以下のコマンドを実行

$ sudo hdparm -I /dev/sda | grep -i trim
* Data Set Management TRIM supported (limit 8 blocks)
* Deterministic read ZEROs after TRIM

TRIMサポートされてました(・∀・)

これらの情報を元に、fstabを編集します。

$ sudo vim /etc/fstab
# SSD用の1行を追加。UUIDは自分で調べた値と入れ替えて下さい。
# TRIMを有効化するため、マウントオプションにdiscardを追加しています。
UUID=1b9eeccf-f177-432e-af4d-e8ea45d733dc /mnt/ex-ssd ext4 discard,defaults 0 2

編集が終わったら、マウントされるか確認します。

$ sudo mount -a
$ df -h |grep ssd
/dev/sda1 110G 61M 104G 1% /mnt/ex-ssd

無事にマウントされて高速で広大なデータ領域を使えるようになりました!

 

まとめ: ラズベリーパイでUSB接続のSSDを使えるようにする

今回は、SDカードの寿命を気にせず大量のデータを蓄えられるようにラズパイ3B+に外付けSSDを増設してみました。

  • USB変換アダプタと120GBのSSDを購入
  • 上記デバイスをラズベリーパイに接続
  • fdiskでパーティションを作成し、ext4形式でフォーマット
  • マウントポイントを作成
  • fstabを編集して起動時にマウントされるように設定

あとは、ここにデータをガンガン蓄えるのみ!

それではみなさん、良いラズパイ生活を( ^o^)ノ