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