提供されている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コマンドでディスクの様態をチェック。
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でインストールします。
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に拡張されていることを確認します。
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