Raspberry Pi : システムルートをUSBメモリに移して運用する設定

2019年11月6日水曜日

Raspberry_Pi

t f B! P L
これまでラズパイにサーバーアプリケーションをいれて遊ぶことを何度かしてきましたが、SDカードが認識しなくなって壊れたことが2度ありました。

個人的な経験則ですがSDカードは壊れやすいと思います。※信頼性の低い格安な製品を使用している要因もあります。

「Raspberry Pi2 Model B V1.2」以降ではMicroSD不要でUSB接続のメモリ・HDD等にインストール可能なそうです。私が使用しているラズパイは「V1.1」なのでMicroSDが起動に必須ですが、システムルートパーティションをUSB接続のストレージに移動することができるのでそのように運用し、安定性・耐久性向上を期待したいと思います。

[参考] Raspberry Pi の USB ブート環境を作っておくと、backup と restore が捗った話


1.ラズパイの起動

USBメモリを刺して通常通りラズパイを起動し、SSH接続します。


2.USBメモリのデバイス名確認

パーティションのデバイス名確認 下記コマンドでパーティションのデバイス名を確認します。パーティションサイズ等を手がかりにします。

sudo fdisk -l

以下のような状況でした。
デバイス名フォーマット用途
/dev/mmcblk0p1FAT32「/boot」パーティション
/dev/mmcblk0p2Linux(ext4)ルートパーティション
/dev/sda1FAT32USBメモリ


3.SDカード内のルートディレクトリをUSBメモリにコピー

コピー操作については別のLinux PCにて「GParted」のGUI操作によって行いました。一旦ラズパイをシャットダウンし、Linux PCにSDカードとUSBメモリを挿入します。

コピー元のルートパーティションは「ext4」フォーマットですがコピー先のUSBメモリは一般的な「FAT32」フォーマットです。念の為USBメモリを「ext4」にフォーマットしておきました。操作は「Gparted」でUSBメモリのパーティションを右クリックして「ext4」を選択するだけです。(※Applyボタンのクリックを忘れずに!)

Gparted:ext4 format
画像の「/dev/sdc1」はUSBメモリのパーティションです


「Gparted」を起動し、SDカードの2番目のパーティションを右クリックして「copy」を選択します。

Gparted:Copy
画像の「/dev/sdc2」はMicroSD内のルートパーティションです



USBメモリのパーティションを右クリックして「Paste」を選択します。
 最後に「Apply」ボタンをクリックすると設定が反映されます。
Gparted:Paste
画像の「/dev/sdd1」はUSBメモリのパーティションです


コピー元のパーティションは約7GB、コピー先は約15GBの容量なのですが、コピー後にパーティションの伸長を自動的にしてくれていました。


4.ルートディレクトリの指定変更

SDカードをLinux PCに挿入したまま作業を行います。/bootディレクトリ内のcmdline.txtにルートディレクトリはどのパーティションなのかを指定しているので修正します。

変更前
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=68ebb135-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

ルートパーティションはUUIDで指定されています。

変更後
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/sda1 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

「root=/dev/sda1」と記述を変更し、UUIDではなくデバイス名で指定しました。別のUSBメモリやHDDを接続した場合にトラブルが起きる可能性はあります。
しかし、作成したUSBメモリをコピーして複数用意し、入れ替えて使用する場合は都合が良さそうです。

再度SDカードをラズパイに挿入して起動します。
SSHで接続後、「mount」コマンドでルートディレクトリはどのパーティションに割り当てられているか確認します。
/dev/sda1 on / type ext4 (rw,noatime)

以上で設定完了です。
おそらくSDカード内の/bootパーティションは読み込みしか行わないので、耐久性は向上すると思われます。
ルートディレクトリをUSBメモリに移して後の操作感は、動作が遅くなることはなく特に違和感はありません。
デメリットとしてはUSBメモリを刺した分、物理的な出っ張りが大きくなることでしょうか?

Translate

QooQ