前提条件
Vagrant BoxがファイルシステムにLVM + ext3/4を使っていること。今回はVagrantbox.esで配布されているDebian Wheezyを利用した。
仮想ディスクを拡張する
VMDK形式だとサイズを変更することが出来ないのでVDI形式に変換する必要がある。リサイズが完了したらVirtualBoxのVMの設定画面でHDDをVDIのほうに差し替えておく。
$ cd ~/VirtualBox\ VMs/vagrant_default_xxxxx_xxxxx
$ VBoxManage clonehd box-disk1.vmdk box-disk1.vdi --format VDI
$ VBoxManage modifyhd box-disk1.vdi --resize 20480
パーティションテーブルを変更する
ここからはゲスト側での操作。
fdiskで/dev/sdaの容量が増えている事を確認する。
$ sudo fdisk -l
Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders, total 41943040 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
Disk identifier: 0x000e1fac
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 499711 248832 83 Linux
/dev/sda2 501758 20764671 10131457 5 Extended
/dev/sda5 501760 20764671 10131456 8e Linux LVM
/dev/sda2と/dev/sda5の情報を一度削除して再定義する。
$ sudo fdisk /dev/sda
Command (m for help): d
Partition number (1-5): 5
Command (m for help): d
Partition number (1-5): 2
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): e
Partition number (1-4, default 2):
First sector (499712-41943039, default 499712):
Using default value 499712
Last sector, +sectors or +size{K,M,G} (499712-41943039, default 41943039):
Using default value 41943039
Command (m for help): n
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l
Adding logical partition 5
First sector (501760-41943039, default 501760):
Using default value 501760
Last sector, +sectors or +size{K,M,G} (501760-41943039, default 41943039):
Using default value 41943039
再定義できているか確認する。
Command (m for help): p
Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders, total 41943040 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
Disk identifier: 0x000e1fac
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 499711 248832 83 Linux
/dev/sda2 499712 41943039 20721664 5 Extended
/dev/sda5 501760 41943039 20720640 83 Linux
/dev/sda5をLinux LVMに変更する。
Command (m for help): t
Partition number (1-5): 5
Hex code (type L to list codes): 8e
Changed system type of partition 5 to 8e (Linux LVM)
Command (m for help): p
Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders, total 41943040 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
Disk identifier: 0x000e1fac
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 499711 248832 83 Linux
/dev/sda2 499712 41943039 20721664 5 Extended
/dev/sda5 501760 41943039 20720640 8e Linux LVM
変更を保存するして再起動する。
Command (m for help): wq
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
$ sudo shutdown -r now
LVMの設定をする
pvresizeで物理ボリューム /dev/sda5 をリサイズする。pvscanでちゃんと容量が増えていることを確認する。
$ sudo pvresize /dev/sda5
Physical volume "/dev/sda5" changed
1 physical volume(s) resized / 0 physical volume(s) not resized
$ sudo pvscan
PV /dev/sda5 VG debian-7 lvm2 [19.76 GiB / 10.10 GiB free]
Total: 1 [19.76 GiB] / in use: 1 [19.76 GiB] / in no VG: 0 [0 ]
次に論理ボリュームをリサイズする。論理ボリューム名はlvscanで確認できる。
$ sudo lvscan
ACTIVE '/dev/debian-7/root' [9.21 GiB] inherit
ACTIVE '/dev/debian-7/swap_1' [456.00 MiB] inherit
$ sudo lvresize -l +100%FREE /dev/debian-7/root
Extending logical volume root to 19.31 GiB
Logical volume root successfully resized
再度lvscanで容量が増えているか確認する。
$ sudo lvscan
ACTIVE '/dev/debian-7/root' [19.31 GiB] inherit
ACTIVE '/dev/debian-7/swap_1' [456.00 MiB] inherit
ファイルシステムをリサイズする
resize2fsを使ってファイルシステムをリサイズする。
$ sudo resize2fs /dev/debian-7/root
resize2fs 1.42.5 (29-Jul-2012)
Filesystem at /dev/debian-7/root is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
Performing an on-line resize of /dev/debian-7/root to 5062656 (4k) blocks.
The filesystem on /dev/debian-7/root is now 5062656 blocks long.
dfで容量が増えていれば完了!
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
rootfs 19932432 7272316 11649560 39% /