VMware ESXi 5.5 LVMのディスク拡張

#経緯
とある検証で負荷試験を行っていた所、仮想ホストのローカルディスクが
いっぱいになってしまって検証ストップしたった。
LVMのディスク拡張やったことないのでチャレンジしてみようと思った所存でござい。

#環境
・VMwareESXi 5.5
・CentOS 6.6 (64bit)

#作業の流れ
1. 現在のディスク状態の確認
 - `df`コマンド
 - `fdisk`コマンド 
2. ESXiでのディスク容量拡張
3. パーティション作成
 - `fdisk`コマンド
4. LVMでディスク拡張
 - `pvcreate`
 - `pvdisplay`
 - `vgextend`
 - `lvextend`
 - `resize2fs`

#手順
##1.現在のディスク状態の確認
####・dfコマンド
　/dev/mapper/vg_cmst201-lv_root の現在のサイズは14G

```shell-session
# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_cmst201-lv_root
                       14G  5.5G  7.5G  43% /
tmpfs                 939M     0  939M   0% /dev/shm
/dev/sda1             477M   33M  419M   8% /boot
```

####・fdiskコマンド
　現在の/dev/sdaのデバイス上の容量は17.2 GB

```shell-session
# fdisk -l

ディスク /dev/sda: 17.2 GB, 17179869184 バイト
ヘッド 64, セクタ 32, シリンダ 16384
Units = シリンダ数 of 2048 * 512 = 1048576 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x00027ff4
```

##2.ESXiでのディスク容量拡張
####・プロビジョニング済みサイズを変更
　※ディスクプロビジョニングをThinProvisionにしています
![WS000359.png](https://qiita-image-store.s3.amazonaws.com/0/79134/0c7a5161-7ce0-2441-6c04-9875c55b4573.png)

####・再起動を実施

```shell-session
# reboot
```

####・デバイス実行容量確認
/dev/sda のディスク上のサイズが68.7Gに増えました

```shell-session
# fdisk -l

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

##3.パーティション作成
####・fdiskコマンドでパーティションを作成

```shell-session
# fdisk /dev/sda

警告: DOS互換モードは廃止予定です。このモード (コマンド 'c') を止めることを
      強く推奨します。 and change display units to
         sectors (command 'u').

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

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

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

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

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

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

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

コマンド (m でヘルプ): t
パーティション番号 (1-4): 3
16進数コード (L コマンドでコードリスト表示): L

 0  空             24  NEC DOS         81  Minix / 古い  bf  Solaris
 1  FAT12           39  Plan 9          82  Linux スワッ c1  DRDOS/sec (FAT-
 2  XENIX root      3c  PartitionMagic  83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       40  Venix 80286     84  OS/2 隠し C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      41  PPC PReP Boot   85  Linux 拡張領 c7  Syrinx
 5  拡張領域    42  SFS             86  NTFS ボリュ  da  非 FS デー
 6  FAT16           4d  QNX4.x          87  NTFS ボリュ  db  CP/M / CTOS / .
 7  HPFS/NTFS       4e  QNX4.x 2nd part 88  Linux プレー de  Dell ユーテ
 8  AIX             4f  QNX4.x 3rd part 8e  Linux LVM       df  BootIt
 9  AIX ブート   50  OnTrack DM      93  Amoeba          e1  DOS access
 a  OS/2 ブート  51  OnTrack DM6 Aux 94  Amoeba BBT      e3  DOS R/O
 b  W95 FAT32       52  CP/M            9f  BSD/OS          e4  SpeedStor
 c  W95 FAT32 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad    eb  BeOS fs
 e  W95 FAT16 (LBA) 54  OnTrackDM6      a5  FreeBSD         ee  GPT
 f  W95 拡張領   55  EZ-Drive        a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            56  Golden Bow      a7  NeXTSTEP        f0  Linux/PA-RISC
11  隠し FAT12    5c  Priam Edisk     a8  Darwin UFS      f1  SpeedStor
12  Compaq 診断   61  SpeedStor       a9  NetBSD          f4  SpeedStor
14  隠し FAT16 <3 63  GNU HURD また ab  Darwin ブー   f2  DOS セカン
16  隠し FAT16    64  Novell Netware  af  HFS / HFS+      fb  VMware VMFS
17  隠し HPFS/NTF 65  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE
18  AST SmartSleep  70  DiskSecure Mult b8  BSDI スワッ  fd  Linux raid 自
1b  隠し W95 FAT3 75  PC/IX           bb  隠し Boot Wiz fe  LANstep
1c  隠し W95 FAT3 80  古い Minix    be  Solaris ブー  ff  BBT
1e  隠し W95 FAT1
16進数コード (L コマンドでコードリスト表示): 8e
領域のシステムタイプを 3 から 8e (Linux LVM) に変更しました

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

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

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

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

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

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

####・再起動を実施

```shell-session
# reboot
```

##4.LVMでディスク拡張
####・pvcreateコマンドで物理ボリューム作成

```shell-session
# pvcreate /dev/sda3
  Physical volume "/dev/sda3" successfully created
```

####・pvdisplayコマンドでボリュームグループ名を確認

```shell-session
# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               vg_cmst201
  PV Size               15.51 GiB / not usable 3.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              3970
  Free PE               0
  Allocated PE          3970
  PV UUID               uNKI0D-BzQz-cpbn-UZCO-TpbW-vYb3-mnM0XK
```

####・vgextendコマンドでボリュームグループの拡張を実施

```shell-session
# vgextend vg_cmst201 /dev/sda3
  Volume group "vg_cmst201" successfully extended
```

####・lvextendコマンドで論理ボリュームの拡張を実施

```shell-session
# lvextend -L +47Gb /dev/vg_cmst201/lv_root
  Size of logical volume vg_cmst201/lv_root changed from 13.91 GiB (3561 extents) to 60.91 GiB (15593 extents).
  Logical volume lv_root successfully resized
```

#### ・resize2fsコマンドでファイルシステムの拡張を実施
※CentOS7.xの場合は`xfs_growfs`コマンドを使う

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

####・結果確認

```shell-session

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_cmst201-lv_root
                       60G  5.5G   52G  10% /
tmpfs                 939M     0  939M   0% /dev/shm
/dev/sda1             477M   33M  419M   8% /boot
```

## 後記
初めて実施しましたがスムーズに拡張できて良かったです！
[こちらのサイト](http://www.masatom.in/pukiwiki/VMware/ESXi/LVM%A4%CE%A5%C7%A5%A3%A5%B9%A5%AF%B3%C8%C4%A5/)を参考にさせて頂きました！

## 追記(20160512)
CentOS7でやろうとしたらできなかったのですが、こちらの記事を参照して解決できました！

[CentOS 7(XFS)でLVMディスク拡張でハマったこと](http://qiita.com/fetaro/items/d7dc74262633ba474bc8)