Raspberry piのSDカード移行方法
- 記事内容
- 影響を受けそうなサービスの停止
- ddrescueで旧SDデータを新SDへとクローン
- partedで新SDのパーティションサイズ変更
- 新SDに入れ替えて起動
- ボリュームのリサイズをOSに反映させる
記事内容
- Raspberry pi 3B+のシステムSDカードを旧(8GB SDHC) => 新(128 GB SDXC)へと移行した時の自分用備忘録
- 特に大事なシステムでは無いので、稼働しながらサクッとクローンした。普通にダメなので真似しないように。
- もちろん本来は停止状態でクローンすべき。その場合でもddrescueの実行以降は同じ手順
影響を受けそうなサービスの停止
- 処理中にddrescueを食らうと破損しそうなサービスを予め停止しておいた
- 自分の場合は定期的にsqliteに書き込むサービスがあったのでそれを停止
ddrescueで旧SDデータを新SDへとクローン
ddrescueのインストール
$ sudo apt update $ sudo apt install gddrescue
SDカードリーダーなどを使って新SDを接続
ボリューム名の確認
$ sudo fdisk -l
------ [中略] ------ Disk /dev/mmcblk0: 7.4 GiB, 7948206080 bytes, 15523840 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x73075489 Device Boot Start End Sectors Size Id Type /dev/mmcblk0p1 8192 98045 89854 43.9M c W95 FAT32 (LBA) /dev/mmcblk0p2 98304 15523839 15425536 7.4G 83 Linux Disk /dev/sda:119.1 GiB, 127865454592 bytes, 249737216 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x73075489 Device Boot Start End Sectors Size Id Type /dev/sda1 8192 98045 89854 43.9M c W95 FAT32 (LBA) /dev/sda2 98304 249736328 249638025 119G 83 Linux
今回の場合、/dev/mmcblk0から/dev/sdaへと(ディスクごと)クローンする
- ddrescueの実行
$ sudo ddrescue -v /dev/mmcblk0 /dev/sda
所要時間は8 GBで10分くらい
partedで新SDのパーティションサイズ変更
今回は限度いっぱいまでパーティションサイズを拡大する。EugenMayer氏作成のスクリプト(resize.sh)を利用することで楽に行える。
resize.shのダウンロード
$ cd ~ $ wget https://raw.githubusercontent.com/EugenMayer/parted-auto-resize/master/resize.sh $ chmod +x ~/resize.sh
拡大するパーティションの確認
sudo fdisk -l # 今回は"sda2"が拡大すべきパーティションだった
resize.shの実行
# サンドボックスモードで変更をプレビュー sudo ./resize.sh /dev/sda 2 # プレビューに問題が無ければ実行 sudo ./resize.sh /dev/sda 2 apply
新SDに入れ替えて起動
Raspbianのシャットダウン
$ sudo shutdown -h 0
SDカードの入れ替え・Raspberry pi起動
sshでログインできることを確認
ボリュームのリサイズをOSに反映させる
この時点ではまだOS側にボリュームのリサイズが反映されていない
# ボリュームサイズは変更されているが...... $ sudo fdisk -l # OSから見た/dev/rootのボリュームサイズは小さいまま $ df -h
resize2fsを実行してリサイズを反映させる
$ resize2fs /dev/mmcblk0p2
変更が反映されていることを確認
$ df -h