VirtualBox固定サイズディスクの拡張

※忘れてしまうので自分用環境向けメモ(LVMや暗号化ボリュームでない場合)

拡張前のディスク構成(8GiB)
拡張前のディスク構成(8GiB)

拡張後のディスク構成(16GiB)
拡張後のディスク構成(16GiB)

  • 新しいディスクを作成して追加でアタッチ。CDから起動。
  • dd if=/dev/sda of=/dev/sdb conv=noerror,syncで丸ごとコピー。なお、結果が標準エラー出力
w+p records in
w+p records out

のように出てくるが、wは「whole blocks」、pは「partial blocks」でブロックサイズより転送データが少ないとき。参考:dd - ArchWikidd invocation (GNU Coreutils 9.0)

  • fdisk /dev/sdbパーティションテーブルを変更。なお、fdisk -l /dev/sdbでpコマンドと同じ結果を出力。
p(パーティションテーブル表示)
d(swapパーティション削除)
d(swapが入っていた拡張パーティション削除)
d(ext4パーティション削除)
n(ext4パーティション作成。セクタサイズ512バイトで必要サイズとなるEnd位置を指定。ext4 signatureは消さない。)
n(swapを入れる拡張パーティション作成)
n(swapパーティション作成)
t(swapパーティションのタイプ82を指定)
a(ext4パーティションにブートフラグを立てる)
w(変更を書き込んで終了)
  • e2fsck -f /dev/sdb1ext4ファイルシステムをチェックしてから、resize2fs /dev/sdb1ext4ファイルシステムを拡張。
  • mkswap /dev/sdb5でswap領域を作る。
  • blkidext4とswapのUUIDを調べ、/etc/fstab/etc/initramfs-tools/conf.d/resumeのUUID(特にswap)を更新し、update-initramfs -u。このとき/etc/initramfs-tools/conf.d/resume.origのように古いファイルを残さないこと。/etc/initramfs-tools/conf.d/内の全てのファイルが読まれて警告の原因になる。
  • ejectでCDを取り、シャットダウンしてから古いディスクをデタッチし、新しいディスクを「ポート0」に。
  • (この操作は不要かも)再度CDから起動してgrub-install /dev/sdaejectでCDを取り、再起動。