VirtualBoxのゲストOSディスク拡張

# 注意
<font color="red">ゲストＯＳがCentOS７ではエラーになるそうです。タグにもありますがこの投稿はCentOS6.6のお話です。</font>
CentOS7の方はこちらの [CentOS 7(XFS)でLVMディスク拡張でハマったこと](http://qiita.com/fetaro/items/d7dc74262633ba474bc8) で投稿されているようです。

# ゲストＯＳのディスク拡張
年に１回やるかやらないかの作業（コマンド）なので備忘録的に記録。

## 作業場場所移動
まずはホストＯＳ側でゲストＯＳの場所へ移動。もちろんこのときＶＭは停止しておきます。
コマンドプロンプトから以下のコマンド

```bat
C:\Users\[user]> cd C:\VirtualBox VMs\centos
```

## バックアップ
まずはバックアップですね。これはそこそこ時間かかります。
ゲストＯＳに ```centos``` とつけたのでフォルダもvdiもそうなってます。

```bat
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" clonehd centos.vdi centos_bak.vdi

C:\VirtualBox VMs\centos> "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" cl
onehd centos.vdi centos_bak.vdi
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
```

## ディスク拡張
元のサイズが１６Ｇだったので３２Ｇにしたい、コマンドの指定がＭ（メガ）なのでresizeに```32768```を指定
これでディスク自体は倍に拡張。このコマンドがディスクのタイプがすぐに領域を取るタイプでなかったのか、一瞬で終了。

```bat
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" modifyhd --resize 32768 centos.vdi
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
```

## サイズ確認
ゲストＯＳを起動後、変わっていないのを確認。
ＯＳは元の領域を使っているので変わらない。

```bash
df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_centos-lv_root
                       14G   11G  2.6G  80% /
tmpfs                 940M     0  940M   0% /dev/shm
/dev/sda1             477M   64M  388M  15% /boot
```

## パーティション作成
シリンダのところはデフォルトで改行。

```bash
# fdisk /dev/sda
コマンド (m でヘルプ): n
コマンドアクション
   e   拡張
   p   基本パーティション (1-4)
p
パーティション番号 (1-4): 3
最初 シリンダ (2089-4177, 初期値 2089):
初期値 2089 を使います
Last シリンダ, +シリンダ数 or +size{K,M,G} (2089-4177, 初期値 4177):
初期値 4177 を使います
```

## パーティション確認

```/dev/sda3``` ができていることを確認。


```bash
コマンド (m でヘルプ): p

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

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

## パーティションタイプを変更
```Linux LVM``` に変更。

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

コマンド (m でヘルプ): p

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

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

## 変更保存

```bash
コマンド (m でヘルプ): w
パーティションテーブルは変更されました！

ioctl() を呼び出してパーティションテーブルを再読込みします。

警告: パーティションテーブルの再読込みがエラー 16 で失敗しました: デバイスもしくはリソースがビジー状態です。
カーネルはまだ古いテーブルを使っています。新しいテーブルは
次回リブート時か、partprobe(8)またはkpartx(8)を実行した後に
使えるようになるでしょう
ディスクを同期しています。
#
```

## ゲストＯＳ再起動

```bash
# reboot
```

## Physical Volume作成

```bash
# pvcreate /dev/sda3
  Physical volume "/dev/sda3" successfully created
```

## Volume GroupへPhysical Volumeを追加
```vgdisplay``` でグループ名が ```vg_centos```であることを確認して以下のコマンド

```bash
# vgextend vg_centos /dev/sda3
Volume group "vg_centos" successfully extended
```

## Logical Volumeを増やす。
```df``` で表示されているマウントポイントへ以下のコマンド。

```bash
# lvextend -l +100%FREE /dev/mapper/vg_centos-lv_root
  Size of logical volume vg_centos/lv_root changed from 13.91 GiB (3561 extents) to 29.91 GiB (7656 extents).
  Logical volume lv_root successfully resized
```

## ファイルシステムのリサイズ
ここでも ```df```で表示されたマウントポイントを指定してサイズが増えます。

```bash
# resize2fs /dev/mapper/vg_centos-lv_root
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/vg_centos-lv_root is mounted on /; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 2
Performing an on-line resize of /dev/mapper/vg_centos-lv_root to 7839744 (4k) blocks.
The filesystem on /dev/mapper/vg_centos-lv_root is now 7839744 blocks long.
```

## 増えたことを確認

```bash
$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_centos-lv_root
                       30G  9.5G   19G  35% /
tmpfs                 940M     0  940M   0% /dev/shm
/dev/sda1             477M   64M  388M  15% /boot
```

# 参考サイト
- [VirtualBox上のCentOSのディスク容量を拡張する #virtualbox #centos](http://nori3tsu.hatenablog.com/entry/2013/11/23/114400)
- [VirtualBoxのゲストOSのディスク容量を増やす](http://te2u.hatenablog.jp/entry/2015/04/20/012914)