トホホな疑問(41) ラズパイmicroSDのバックアップ、リストアの落とし穴?

Joseph Halfmoon

Raspberry Piは、microSDカードをストレージにしています。時々microSD全体を「イメージ」にしてバックアップされている方も多い筈。バックアップはHDD宛てなので問題ないですが、イメージからmicroSDへのリストア(レストア?)時にトラブるケースを体験。考えてみれば当たり前なんでありますが。

Raspberry Pi OSのファイルシステムは、基本microSDカードに載っているので取り扱い易いですが、microSDが「イカレる」のがちょっと心配です。その対策のバックアップですが、以下2種類のどちらかか、両方の併用かと思います。

  1. Raspberry Pi OS上Linuxベースのコマンドでファイル単位にどこかにバックアップ
  2. microSDカード全体を丸ごとイメージとしてバックアップ

最初の方の「どこか」はネットワーク上のストレージ・デバイスや、自分に接続しているHDDなどいろいろあり得ます。そして「普通の」Linuxのオペレーションなのでいろいろなやり方があるかと思います。

一方 microSD の丸ごとバックアップの方は、PCをホストとする場合、ほぼ以下のソフトウエア1択みたいな評判じゃないかと思います(個人の感想です。)

Win32 Disk Imager

実際、私もお世話になっております。というか、Raspberry PiにOSをインストールした人のかなりな割合が入れているのでないかしらん。それをバックアップ方向に使うだけなので敷居も低いです。それに丸ごとバックアップといっても何時間もかかる分けでもない(容量にもよります)のでお手軽。

使い方は簡単。その簡単な使い方をさらに解説していただいているサイトも多数あり、迷うことはありません。

が、しかし、今回リストア(レストア?元は同じ単語なのに日本語の表記は難しい)を試しにやってみて、根本的な問題が一つあることに気づきました。問題を認識したときの手順は以下のとおりです。

  1. ラズパイ3の32GBのmicroSDカードを取り出す(勿論電源OFFしてから)
  2. PC上のWin32DiskImagerで上記のmicroSDカードのイメージを吸い出す(HDD上にファイルとして保存)
  3. 新品の32GBのmicroSDカードをPCに取り付け、Win32DiskImagerでイメージファイルを書き込む

なお、ラズパイ3に刺さっていたカードはアイキャッチ画像左のSanDisk製で、新品の32GBはアイキャッチ画像中央のKioxia製です。

Win32 Disk Imagerからのエラーメッセージ

3のステップでのエラーメッセージを以下に掲げます。書き込み先で使えるセクタ数が、必要とされるセクタ数より少ないぜ、と読めます。

notEnough確かに、microSDカードは、デバイスの製造原理的にどこのメーカであってもカードによって使える容量がかなりバラつくらしいです(それを悪用した容量半分の某中華偽装品などもあるみたい。)同じ32GBといって売られていても、容量がまったく同じということはないようです。そして、今回は、元のmicroSDが結構「充実」の「32GB品」であったのに対して、新品のmicroSDの方は、「しょぼくれた容量」の「32GB品」であったと。正確なセクタ数などパッケージに表示があるわけじゃないから、新品の方が容量が少ないこともある、と。当たるも八卦か?トホホ。。。Win32DiskImagerは、健気んみ

Continue Anyway?

と聞いてくれていたので、とりあえず OK と答えてみました。書き込みは完了し、その microSD をラズパイ3にとりつけてみました。

ちょっとLED点滅しましたが、どうも様子が変。立ち上がりません。

勿論、元のmicroSDに戻すと問題なくブートできます。

64GBのmicroSDにイメージを書き込んでみる

sector数が足りない、というエラーであるので、明らかに容量の大きなmicroSDを使えば大丈夫じゃね、という発想でやってみました。アイキャッチ画像の右側、同じKioxia製ですが64GB品です。

さきほどと同じイメージファイルからWin32DiskImagerで書き込んでみます。さきほどとは異なり、何のエラーメッセージも出ず、すんなり書き込めました。

ラズパイ3に差し込みました。ブートOKです。

というわけで、容量の大きなmicroSDを使えばリストア(レストア?)成功しました。しかし、イメージファイルを書き戻しているだけなので、増えた分の容量が自動で使えるようになっているとも思えません。dfコマンドで新旧2つを比べてみました。

元の32GB microSD上でのdf

df

イメージファイルを吸い出した後、少し操作しているので、上記の使用ブロック数などはイメージファイルとは微妙に異なります。以下がイメージファイルを書き戻した方。

新しい64GB microSD上でのdf

df_64GuSD

予想どおりのようです。折角64GBのメディアなのに、Raspberry OSから見えるのは元のイメージファイルと同じ容量のようです。

まあパーティションの操作とかしてやれば(メンドイし危ないので本気でやったことないケド)多分使えるようにはできるのだと想像しますけど。今はとりあえず足りているので古い32GBのカードのままで良いかな。

ともかくリストア(レストア?)するためには、1セクタでも多い媒体を用意しておかないとダメみたいです。当然かな。手持ちのmicroSDのセクタ数を全部測って一覧にしておくのも疲れるし、結局、大きめの媒体を買うしかないか。トホホ。。。

トホホな疑問(40) ATSAMD51、Port Event制御1個しか動かないんですけど に戻る

トホホな疑問(42) ESP32-IDF、Hello world!でチョイとハマる へ進む