VirtualBox固定サイズディスクの拡張
※忘れてしまうので自分用環境向けメモ(LVMや暗号化ボリュームでない場合)
- 新しいディスクを作成して追加でアタッチ。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 - ArchWiki、dd 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/sdb1
でext4ファイルシステムをチェックしてから、resize2fs /dev/sdb1
でext4ファイルシステムを拡張。mkswap /dev/sdb5
でswap領域を作る。blkid
でext4と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/sda
。eject
でCDを取り、再起動。