提供されているboxが8GBしかなかったので拡張したのですが、結構大変だったのでメモします。
ディスクの拡張
boxから普通にインスタンスを作成。 インスタンスを作成したらシャットダウンして作業を行います。
VirtualBoxではディスクサイズが可変のタイプは .vdiなのですが、 Vagrantのboxとできるディスクタイプはvmdkとなります。 まずは、現在のvmdkディスクをクローンしてvdi形式のディスクを作成します。
その後、カレントディレクトリを作成した仮想サーバのディスクがある所まで移動して
VBoxManage clonehd "box-disk1.vmdk" "clone-box-disk1.vdi" --format vdi
クローンしたディスクの容量を拡張します。ここでは20GBにしたいと仮定して20480を設定しています。 (20(GB) * 1024(MB) = 20480)
VBoxManage modifyhd clone-box-disk1.vdi --resize 20480
次に、ディスク拡張されたvdiをvmdkにクローンします。
VBoxManage clonehd "clone-box-disk1.vdi" "box-disk2.vmdk" --format vmdk
拡張したディスクを差し替えます。 この作業は、VirtualBoxから行ってもいいかもしれません。 --port 0 --device 0 の部分はbox-disk1.vmdkが入っていたものを指定します。 ちなみに、server_default_1448874918650_80404 は仮想サーバー名です。
VBoxManage storageattach server_default_1448874918650_80404 --storagectl "SATA" --port 0 --device 0 --type hdd --medium box-disk2.vmdk
この設定を行った後、起動してみて無事に起動すればOKです。 確認できたら、またまたシャットダウンします。
パーティション操作
現在ディスクは20GBに拡張しましたが、パーティションは8GBまでしか使用されていない状態です。 パーティションを操作して、8GBを20GBに拡張します。
新たに作成された box-disk2.vmdk を適当な仮想サーバにアタッチします。 アタッチ後、lsblkコマンドでディスクの様態をチェック。
# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 202:65 0 8G 0 disk / └ sda1 202:145 0 1G 0 part └─sda2 202:145 0 8G 0 part sdb 202:144 0 20G 0 disk └ sdb1 202:145 0 1G 0 [SWAP] └─sdb2 202:145 0 8G 0 part
今回くっつけたものはsdbとして認識されていました。 partedでパーティション操作を行っていきます。
ない場合は、 yum install parted か apt-get install partedでインストールします。
# parted /dev/sdb GNU Parted 2.1 /dev/sdb を使用 GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
表記をセクターに変更します。
(parted) unit s
現在の情報を表示します。
(parted) print Model: ATA VBOX HARDDISK (scsi) Disk /dev/sda: 41943040s Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system Flags 1 2048s 1953791s 1951744s primary linux-swap(v1) 2 1953792s 15988735s 15986688s primary ext4 boot
この情報はあとで使用するため、メモしておきましょう。 今回は、特にNumber2の行が重要になります。
次に、パーティションを削除します。
(parted) rm 2
パーティションを作成します。
(parted) mkpart Partition name? []? File system type? [ext2]? ext4 Start? 1953792s End? 100%
パーティションサイズ以外は、元のパーティションと同じになるように修正します。
(parted) set 2 boot on (parted) set 2 LBA off
ここまでできたら、EndとSize以外は元と同じになっているか確認します。
(parted) print Model: ATA VBOX HARDDISK (scsi) Disk /dev/sda: 41943040s Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system Flags 1 2048s 1953791s 1951744s primary linux-swap(v1) 2 1953792s 41943039s 39989248s primary ext4 boot
終了!
(parted) quit
20GBに拡張されていることを確認します。
# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 202:65 0 8G 0 disk / └ sda1 202:145 0 1G 0 part └─sda2 202:145 0 8G 0 part sdb 202:144 0 20G 0 disk └ sdb1 202:145 0 1G 0 [SWAP] └─sdb2 202:145 0 19G 0 part
念のため、ディスクチェックをかけましょう。
e2fsck -f /dev/sdb2
ここまでできたら、適当な仮想サーバをシャットダウンしてディスクを外します。
パーティション拡張したディスクで起動
インスタンスを起動します。
resize2fs /dev/sda2
ここで、サイズが20GBに拡張されたら完了です。
box作成
あとはVagrantfileがあるディレクトリでboxを作成して終了です。
vagrant package