RaspberryPi4での外付けSSDへのバックアップ

RaspberryPi4+Ubuntuで、バックアップをUSB接続の外部SSDに保存しようと思い取り組んだが、いろいろ躓きがあり、それを解決できたのでメモ。
対象は、Wordpressを運用するWebサーバ。究極的には、Wordpressのデータバックアップと復元が実現できれば目的は達する。ただし、できる限り無料環境で行いたいという条件でいろいろ試した。

環境

  • RaspberryPi4 メモリ4GB
  • Ubuntu Desktop 21.04
  • USB外付けSSD
  • WordPressが動くWebサーバ環境

最初に結論

RaspberryPi4に外付けSSDを用いる場合は、RaspberryPiからのUSB電力供給が足りなくなる場合があるので、セルフパワーのUSBハブを用いてSSDを接続するのがよい。

バックアップ方式

使用ツール

  • All-in-One WP Migration
  • BackWPup
  • Timeshift

運用管理が複数人になり、かつそのスキル差がある場合、できる限りGUIでかつ設定が簡単な方式がよい。
WordPressでのバックアップは、WordpressのプラグインであるAll-in-One WP Migrationを用いることとした。これは、サイト開発時に開発環境とステージング環境、本番環境を行ったり来たりするのでできる限りその移行の手間を軽減するために、Wordpressの環境をフルバックアップできる環境が必要だったので使用することとした。このプラグインは実にお手軽。
ただし、この All-in-One WP Migration は、バックアップファイルが512MBを超えると、有料版でないと復元できない。(小分けにするなどいろいろ回避策はあるが、限界もあるし、何より手間が増える。)また、無料版は手動バックアップのみと制限がある。
負荷は増えるが、他のプラグイン「BackWPup」により自動バックアップも併用することとした。
それに加えて、システムイメージ全体のバックアップとしてTimeshiftで行うこととした。

参考

第588回 TimeShiftでUbuntuをホットバックアップする 2019年版:Ubuntu Weekly Recipe|gihyo.jp … 技術評論社

Timeshiftのインストールと実行

sudo apt install timeshift

おそらく、Ubuntu20.04移行は公式レボジトリに入っているので、上記コマンドのみで行ける。それ以前のバージョンだと別途レポジトリ追加が必要だった。このコマンドだけですぐ終わる。
Timeshiftの詳しい説明は他のサイトを参照してください。
このTimeshiftのバックアップ先は、ext4形式でフォーマットされた外部ドライブが必要になる。

第1のはまりポイント「ext4フォーマットができない」

このフォーマットを行う際に、UbuntuのGUIから、ユーティリティ→ディスクを用いて、ext4フォーマットを行おうとした。
この時点で、SSDへのUSB供給電力量が足りないとは思わず、普通にバスパワー接続でフォーマットを試みた。しかし、フォーマット途中で致命的エラーを出して止まる。そして、何度かしているうちに、セクターエラーなど様々なドライブエラーが発生し、Windowsからも認識できないドライブになってしまった。「ディスクの管理」でも認識できない状況。

第1のはまりポイントに対する解決

とりあえずMacでドライブをフォーマットしたらできたので、それで一旦SSDとして認識できるようにした。
その後、他のRaspberryPi環境などでext4フォーマットできたので、それを用いることにした。(これはたまたまだと思う。)

第2のはまりポイント「バックアップからの復元ができない」

Timeshifでバックアップも何とか外付けSSDに行うことができたが、復元の練習もしておこうと思い、Timeshiftのバックアップから復元を試みた。ただ、これも復元がうまくいく場合もあれば、途中でTimeshiftが落ちたりする場合もあり、不安定だった。ゆっくり操作すればうまくいく確率が多かった気がして、ゆっくり操作するべしなどと自分の中で変なジンクスを作ったりしていた。

余談

RaspberryPi4をゆくゆくはSSD起動にさせてたいと思っており、下記のケースを入手していた。そして、SSDをUSB経由だが内蔵させてシステムドライブとし、さらに外付けSSDでバックアップを行う構想であった。

M.2 SSDが搭載できるRaspberry Pi 4用ケース「Argon One M.2」 – AKIBA PC Hotline! (impress.co.jp)

だが、このケースでのSSDによるバックアップと復元は、ほぼ100%失敗した。今考えると、SSDをUSBで2台もつないでいるので電力供給が全く足りていなかったと思われる。後段に、この解決顛末と課題も記した。

第2のはまりポイントに対する解決

このころから、SSDへの電力供給が足りていないのではないかと疑問を持ち始める。ネット検索などしながらSSDはセルフパワーのハブ経由で接続した方が良いなどの情報を得る。
そこで、セルフパワーのハブ経由で一通りの手順を再度行ってみた。結果、フォーマットも難なくでき、Timeshiftでのバックアップと復元も問題なく行えた。ほっとした脱力だったが、とりあえず解決。
RaspberryPi4では、電力供給にそもそも余裕がないので、USB接続のデバイスは、セルフパワーのハブで電源を共有しよう。

Argon One M.2での解決と課題

以前は失敗率100%だったが、セルフパワーUSBハブを介することで、外付けSSDの動作問題は解決した。外付けSSDから、内蔵SSDへのTimeshiftによるイメージ復元も成功し、問題なく使えている。
しかし、擬似的に内蔵しているSSDはその実USB接続である。そのため、内蔵SSDに対して将来こうした電力問題が発生しないとも限らない。もし発生した場合、コの字型になっているケース付属のUSBコネクタを使用せずに、一旦USBハブを介して、オスオスのUSBケーブルで内蔵SSDに引き戻してあげれば良いのだろう。
少し、負荷をかけるなどの様子見は必要そうだと思った。

このほかにもいろいろなパターンを試したが、やはり電力供給が解決されると、たちどころに全ての問題が解決した。