vagrantの既存boxにディスク容量を追加する

# vagrantのboxイメージ作成手順

既存のboxイメージのディスク容量を増やした時の手順メモです。

## 1. 元となるboxを使用してVM作成

* 適当なディレクトリでvagrant初期化

```shell-session
$ vagrant init
```

* vagrantファイルにboxのurl追記

```
$ vi Vagrantfile
```

今回は下記のものを使用した。
https://github.com/holms/vagrant-centos7-box/releases/download/7.1.1503.001/CentOS-7.1.1503-x86_64-netboot.box


* VM起動

```shell-session
$ vagrant up
```

* VM停止

```
$ vagrant halt
```

## 2. VMの修正

* Virtualbox GUIでディスク追加(vdi, 120GB)

ディスク名は適当に「NewVirtualDisk2.vdi」とか

* 既存のディスク(box-disk1.vmdk)内容を新規ディスクにコピー

```shell-session:command
$ VBoxManage clonehd {既存ディスク} {新規ディスク} --existing
```

```shell-session:実際のコマンド
$ VBoxManage clonehd box-disk1.vmdk NewVirtualDisk2.vdi --existing
```

* Virtualbox GUIで古いディスク(box-disk1.vmdk)を削除


* VM起動

```
$ vagrant up
```

## 3. VM内でディスク設定

```
$ vagrant ssh
```

ここからVM内でディスク操作

```
# sudo su -
# fdisk -l

# fdisk /dev/sda

    (実行サンプル)
    コマンド (m でヘルプ): n ← を入力
    コマンドアクション
       e   拡張
       p   基本パーティション (1-4)
    p ← を入力
    パーティション番号 (1-4): 3 ← を入力
    最初 シリンダ (1958-3916, 初期値 1958): エンター ← を入力
    初期値 1958 を使います
    Last シリンダ, +シリンダ数 or +size{K,M,G} (1958-3916, 初期値 3916): エンター ← を入力
    初期値 3916 を使います

    コマンド (m でヘルプ): t ← を入力
    パーティション番号 (1-4): 3 ← を入力
    16進数コード (L コマンドでコードリスト表示): 8e ← を入力
    領域のシステムタイプを 3 から 8e (Linux LVM) に変更しました

    コマンド (m でヘルプ): p ← を入力

    ディスク /dev/sda: 32.2 GB, 32212238336 バイト
    ヘッド 255, セクタ 63, シリンダ 3916
    Units = シリンダ数 of 16065 * 512 = 8225280 バイト
    セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    ディスク識別子: 0x0001959a

    デバイス ブート      始点        終点     ブロック   Id  システム
    /dev/sda1   *           1          64      512000   83  Linux
    パーティション 1 は、シリンダ境界で終わっていません。
    /dev/sda2              64        1958    15214592   8e  Linux LVM
    /dev/sda3            1958        3916    15727654   83  Linux LVM

    コマンド (m でヘルプ): w ← を入力

# reboot 

# sudo su -
# pvcreate /dev/sda3
  Physical volume "/dev/sda3" successfully created
# vgdisplay
  --- Volume group ---
  VG Name               centos
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               9.41 GiB
  PE Size               4.00 MiB
  Total PE              2409
  Alloc PE / Size       2399 / 9.37 GiB
  Free  PE / Size       10 / 40.00 MiB
  VG UUID               T3uSCD-GT7k-K08J-YwyH-yfWO-G3IL-IzJ653

# vgextend centos /dev/sda3
  Volume group "centos" successfully extended

# lvextend -l +100%FREE /dev/mapper/centos-root
  Size of logical volume centos/root changed from 8.38 GiB (2145 extents) to 118.51 GiB (30339 extents).
  Logical volume root successfully resized

# resize2fs /dev/mapper/centos-root (※1)
resize2fs 1.42.9 (28-Dec-2013)
resize2fs: Bad magic number in super-block while trying to open /dev/mapper/centos-root
Couldn't find valid filesystem superblock.

# xfs_growfs /dev/mapper/centos-root
  meta-data=/dev/mapper/centos-root isize=256    agcount=4, agsize=549120 blks
           =                       sectsz=512   attr=2, projid32bit=1
           =                       crc=0        finobt=0
  data     =                       bsize=4096   blocks=2196480, imaxpct=25
           =                       sunit=0      swidth=0 blks
  naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
  log      =internal               bsize=4096   blocks=2560, version=2
           =                       sectsz=512   sunit=0 blks, lazy-count=1
  realtime =none                   extsz=4096   blocks=0, rtextents=0
  data blocks changed from 2196480 to 31067136

# df -h
  Filesystem               Size  Used Avail Use% Mounted on
  /dev/mapper/centos-root  119G  1.1G  118G   1% /
  devtmpfs                 223M     0  223M   0% /dev
  tmpfs                    229M     0  229M   0% /dev/shm
  tmpfs                    229M  4.3M  225M   2% /run
  tmpfs                    229M     0  229M   0% /sys/fs/cgroup
  /dev/sda1                497M   83M  414M  17% /boot

# exit 
$ exit
```

※1. centos7ではresize2fsが使えない。代わりにxfs_growfsを使う
⇒ [CentOS 7(XFS)でLVMディスク拡張でハマったこと](http://qiita.com/fetaro/items/d7dc74262633ba474bc8)


VM停止

```
$ vagrant halt
```

## 4. boxイメージ作成

```
$ vagrant package
```