treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

Raspberry PiのmicroSDカード交換を実施する

Raspberry Piのメンテナンスとして、数年使い込んだmicroSDカードを新しいものと交換したので、そのときの作業をご報告です。
ddイメージバックアップから、新しいSDへリストアして移行します。

今回のメンテナンス対象

今回はRaspberry Pi×2台を対象にmicroSD交換を実施します。
1台は既存の16GBのmicroSDの容量据え置きで、同容量のmicroSDに交換します。
別の1台は前回(※)対処したように容量不足になってきているため、32GBのmicroSDを用意して容量増加を同時に達成します。

※)前回
RaspberryPiのmicroSD容量が残り0 - treedown’s Report

容量の使用量が90%を超えていたため、容量増加で使用率50%以下にして、今後のRaspberry Pi OSのメジャーバージョンアップに備える、という目的です。

ddイメージバックアップ

SDカード交換のために、既存の環境をOSごとイメージバックアップにて取得しておきます。

ddコマンドについては以前の記事を参考に。

Raspberry Piのddバックアップとリストアテストをやってみる - treedown’s Report

手動で実行する場合には、

dd if=/dev/mmcblk0 of=/mnt/backup/os-sdcard_dd.img conv=sync,noerror status=progress

cronに設定してある場合には、

dd if=/dev/mmcblk0 of=/mnt/backup/os-sdcard_dd.img conv=sync,noerror

「status=progress」付与の有無が相違します。画面に進捗を表示するかどうかの違いです。

あと、USB接続の外付けHDDなどがあればそちらにddイメージバックアップを保存すればいいのですが、microSDカードのみで稼働しているRaspberry Piの場合には、別のsambaサーバの共有フォルダなどにddイメージバックアップを保存する必要があります。

例えば、ddコマンド実行前に、

sudo mount -t cifs -o username=%USERNAME%,password=%PASSWORD% //Server/ShareFolder/backup /mnt/backup

のように、「Server」の共有フォルダ「ShareFolder」のbackupフォルダを、Raspberry Piの</mnt/backup>にマウントして、共有フォルダにddイメージバックアップを保管するようにします。
コマンド中の%USERNAME%と%PASSWORD%は「Server」の共有フォルダ「ShareFolder」に接続するID情報を指定します。

PiShrinkで縮小処理

同じ容量のmicroSDカードにddイメージバックアップを展開するために、pishrinkスクリプトを使ってイメージを縮小します。

縮小したddイメージは、次回のRaspberry Pi起動時にmicroSDカードの容量一杯までパーティションを拡張して再起動する(という処理が/etc/rc.localに処理が書き込まれる)ため、イメージバックアップファイルの容量を削減できるだけでなく、展開するmicroSDカードの容量に合わせてイメージ展開ができるようになります。

ここまでがメンテナンスの事前準備となります。ログの破棄に問題がなければメンテナンス前日夜にでも実施してしまって問題ない内容となります。
※当然ですが、新しいmicroSDカードに展開するイメージはここで取得したイメージバックアップの時点に戻ってしまいますので、バックアップ取得以降に設定した内容は新しいmicroSDカードに展開したRaspberry Pi OS環境には反映されなくなります。

WindowsPCでddイメージを書き込み

Raspberry Pi上で取得したddイメージをWindowsPCにコピーして、アプリケーション「DD for Windows」を使ってmicroSDカードにddイメージを展開しました。

これも以前実施した内容と同一です。

Raspberry Pi 2のSDカードを交換する - treedown’s Report

特にエラーもなく、展開は完了しました。

SDカード差し替えて起動

イメージファイルを展開した新しいmicroSDカードに差し替えたRaspberry Piを起動します。
ただ、年数が経っていたためか、メンテナンス対象2台の内の1台のRaspberry Piでは、旧microSDカードがくっ付いていて取れにくくなっていました。壊さないように慎重に何とか取り出してmicroSDを交換。OSを起動すると、無事どちらもエラーなく起動してきました。

dfコマンドで容量確認

容量一杯まで初回起動時に拡張されていることが確認できました。

32GBのmicroSDに交換したほうも、問題なく容量上限まで拡張されているようです。

時計の確認と時刻合わせ

Raspberry Piは"fake-hwclock"を使用しているため、ddで取得した時点の時刻が(ファイル:/etc/fake-hwclock.dataに)記録された状態で起動してきます。

そのためntp(かtimesyncd)で自動で時刻が補正されればいいのですが、起動時に手動で実施しておくほうが確実です。

時刻を確認してズレているようなら

$ sudo date --set="2023-06-18 12:30:00"

と言う具合に現在の時刻で内部時計を合わせておきます。

使用している時刻補正機能(ntpかtimesyncd)を確認して、時刻補正機能も確認しておきます。
※参考:
systemd-timesyncdで時刻合わせを設定する - treedown’s Report

サービス動作確認

各Raspberry Piで実行しているサービスの動作確認を実行して完了です。

SoftEtherが稼働していればVPN接続の確認を、sambaサーバが稼働していれば共有フォルダのアクセスを、それぞれ確認して、特に問題がないことを確認してメンテナンスを完了しました。