「dekiruyone.com・net・jp」は「yonediy.com」に変更になりました。 もうすでに新しいサイトを表示しています。 今まで通りよろしくお願いします。

RaspBerryPi SSDで3パーティション化

1.ラズパイのSSDで3パーティション以上欲しい人はいませんか?

以前サーバー用途のRaspberryPiシステムにはMicroSDより信頼性が高めのSSDが望ましい云々書きました。
最近ssdの価格もかなり手頃になってきていますのでラズベリーパイにssdをつなげて運用しようとする方が多くなっています。その際マイクロSDカードと違ってかなり大容量なので2パーティションではなくパーティション増やして運用したいとお考えの方もいるのではないでしょうか
昔のlinuxの場合はパーテーションを切るところから始めてインストールしていたのですが今ではラズベリーパイイメージャーを使ってワンタッチでシステムの導入ができますのですごく楽になったのはいいのですが、パーティションを切る糸間がありません。つまり一回でもシステムを起動してしまうと、その他空き容量のすべてがルート領域やテンポラリー領域に割り当てられてしまって、思ったようなディスク管理ができないということでお困りの方もいるのではないでしょうか?
そこで今回は大容量ssdのパーテーションを三つ(その他いくつもできます)に分割して効率よく使う簡単な方法をお教えします。

2.まずは普通にRaspberry Pi Imagerでシステム書き込み

まずは普通にRaspberry Pi Imagerでシステムディスクを書き込みます。
Raspberry Pi Imagerを終了します。
次にwindowsのエディターでssdを差し込んだままで、今書き込んだディスクの中のcmdline.txtなるファイルをエディタ(Meryなど)で開きます。

console=serial0,115200 console=tty1 root=PARTUUID=56cd6262-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet init=/usr/lib/raspi-config/init_resize.sh


init=/usr/lib/raspi-config/init_resize.sh
これがラズパイ起動時に残ったディスク容量を全部root領域にする仕掛けです。
最後部の部分を削除して上書き保存します。バージョンや種類によって文の中程に表記されている場合もありますがとにかく「 init= ~ .sh 」の部分を削除します。

誤ってラズパイ起動後に、一旦自動拡張されたものを「縮小」すると「カーネルパニック」と表示され起動しません。

3.ラズパイ起動直後に作業

上記のパーティション自動拡張の仕掛けをストップした後
ラズパイを起動しますと。1TBSSDディスクの使用状況は以下の様になっています。
dfコマンドで見てみますと

root@raspberrypi:/home/pi# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/root 3756448 3330484 215432 94% /
devtmpfs 1776536 0 1776536 0% /dev
tmpfs 1942264 0 1942264 0% /dev/shm
tmpfs 776908 1244 775664 1% /run
tmpfs 5120 4 5116 1% /run/lock
/dev/sda1 258095 30830 227266 12% /boot
tmpfs 388452 24 388428 1% /run/user/1000

注目するところは /dev/rootの使用容量が94%とギリギリ となっている点です。
この状態で
apt updateapt
apt full-upgrade
などやりますとディスク容量が足りないとエラーが出ます。

ラズパイに装着して起動しますが
アップデートしないこと

4.パーティション操作はビジュアルなfdiskのcfdiskを使う

ビジュアルなfdiskである、「cfdsik」でパティション操作します。
暗いコマンドラインの中でパーティション操作はちょっと不安という方にお勧めです。
apt install cfdsik で導入してください。
まず、cfdiskでroot領域を64GB程度に大きくします。
コマンドラインから「cfdsik」エンターで起動します。
現在3.7Gしかない /dev/sda2 (root領域) にカーソルを合わせてエンターします。
tabキーで下メニューの「Resize」を選んでエンターします。

システム領域ですが、縮小はダメですが拡大する分には問題ないです。
NewSizeの欄に64Gと入力してエンターします。
続けてWriteエンター -> yes エンター(Yだけはダメ) -> Q で終了

Typeを選ぶとパーティションタイプを変更できますが、そのまま「83 Linux」にしておきます。

5.新しいパーティションを作る

次にパーティション3つ目です。
FreeSpace(未割当のパーティション)を最大まで大きくしてデータ用などのパーティションにします。(ここで容量を細かく複数のパーティションにすることも出来ます)
新たなパーティションなのでFreeSpaceに合わせてから「New」を選びます。
今回は最大値の867.2Gにしました。属性はプライマリにします。
あとは、先ほどと同じく
Writeエンター -> yes エンター(Yだけはダメ) -> Q で終了
以上で3パーティション化50%完了です。

6.Typeを選ぶとパーティションタイプを変更できます

cfdiskでTypeを選ぶとパーティションタイプを変更できます。
パーティションタイプを変更したいパーティションを選択しておいて、必要なTypeを選ぶとパーティションタイプを選んで「write」で変更できます。

7.最後の仕上げ

cfdiskでパーティション操作を終えましたが、もうひと手間必要なんです。
lsblkで見ると拡張された容量になっていますが
dfで見ると拡張前の容量root容量が逼迫した状態との表示は変わっていないまま
なので拡張した容量を使えるようにします。

sda2パーティションを指定通り64G使えるようにする(root容量が64Gになる)
コマンドラインから
resize2fs /dev/sda2

新たに作ったsda3パーティションを指定通り使えるようにする
コマンドラインから
resize2fs – ext2/ext3

もしsda3をntfsパーティションにしていたなら
コマンドラインから
mkfs.ntfs -Q /dev/sda3
mkfs -t ntfs -Q /dev/sdb3

更に、データ領域として作ったパーティションは
mount /dev/sda3 /mnt/bcam
のようにマウントしなければ使えません。
私は防犯カメラのftpデータ保存用に/mnt/bcamとしましたが、ここは各自別名でもいいです。
root領域が大きくなったのでここで初めて
apt update
apt full-upgrade
でシステムをアップデートします。

Crucial(クルーシャル) X6 外付け SSD 1TB 【PS5/PS4 動作確認済み】 USB Type-C 最大読込速度800MB/秒 正規代理店保証品 CT1000X6SSD9
Crucial(クルーシャル)
¥12,430(2024/05/25 01:58時点)
Crucial (クルーシャル) は、半導体メーカーであるMicron (マイクロン)の個人向け製品のブランド名です。Micron 3D NANDフラッシュテクノロジーを採用しており、低消費電力でありながら高いコストパフォーマンスを実現しています

8.linux系のファイルシステム管理はめんどくさい

今回大容量SSDをパーティション操作をやりましたが、windowsのパーティション操作ユーティリティーの様に画面クリックでシステム領域の拡大縮小・フォーマットが簡単にできる環境に慣れてしまっているとホントめんどくさいです。
raspiのGUIからも操作を試みましたが、システム領域の縮小はダメでした。使用しているクラスタを避けて再割り当てしてくれればいいだけなのですが、そこまで進歩していないです。
あと、raspicloneでバックアップを取る際、SSD同士だと異常にスピードが速いです。(5分かからない)
SSDも安くなってきているのでいくつも買ってしまっています。USB経由でも十分早いのですが
欲を言えばラズパイの方にm.2 NVMe接続できるソケットがあるとうれしいですね。