ハボリテ

胡乱の羅列

Raspberry piのSDカード移行方法

記事内容

  • Raspberry pi 3B+のシステムSDカードを旧(8GB SDHC) => 新(128 GB SDXC)へと移行した時の自分用備忘録
  • 特に大事なシステムでは無いので、稼働しながらサクッとクローンした。普通にダメなので真似しないように。
  • もちろん本来は停止状態でクローンすべき。その場合でもddrescueの実行以降は同じ手順

影響を受けそうなサービスの停止

  • 処理中にddrescueを食らうと破損しそうなサービスを予め停止しておいた
  • 自分の場合は定期的にsqliteに書き込むサービスがあったのでそれを停止

ddrescueで旧SDデータを新SDへとクローン

  1. ddrescueのインストール

     $ sudo apt update
     $ sudo apt install gddrescue
    
  2. SDカードリーダーなどを使って新SDを接続

  3. ボリューム名の確認

     $ 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へと(ディスクごと)クローンする

  1. ddrescueの実行
$ sudo ddrescue -v /dev/mmcblk0 /dev/sda

所要時間は8 GBで10分くらい

partedで新SDのパーティションサイズ変更

今回は限度いっぱいまでパーティションサイズを拡大する。EugenMayer氏作成のスクリプト(resize.sh)を利用することで楽に行える。

  1. resize.shのダウンロード

     $ cd ~
     $ wget https://raw.githubusercontent.com/EugenMayer/parted-auto-resize/master/resize.sh
     $ chmod +x ~/resize.sh
    
  2. 拡大するパーティションの確認

     sudo fdisk -l
     # 今回は"sda2"が拡大すべきパーティションだった
    
  3. resize.shの実行

     # サンドボックスモードで変更をプレビュー
     sudo ./resize.sh /dev/sda 2
     # プレビューに問題が無ければ実行
     sudo ./resize.sh /dev/sda 2 apply
    

新SDに入れ替えて起動

  1. Raspbianのシャットダウン

     $ sudo shutdown -h 0
    
  2. SDカードの入れ替え・Raspberry pi起動

  3. sshでログインできることを確認

ボリュームのリサイズをOSに反映させる

  1. この時点ではまだOS側にボリュームのリサイズが反映されていない

     # ボリュームサイズは変更されているが......
     $ sudo fdisk -l
     # OSから見た/dev/rootのボリュームサイズは小さいまま
     $ df -h
    
  2. resize2fsを実行してリサイズを反映させる

     $ resize2fs /dev/mmcblk0p2
    
  3. 変更が反映されていることを確認

     $ df -h