新しいHDDを追加して既存LVM領域を拡張する手順メモ

## 要件
元々`20GB`だったTargetHostサーバに、新しいHDD`30GB`を追加したい。

## 手順メモ
### HDDの追加
今回はESXi上の仮想マシンだったため、Vsphereで新しいHDDを論理的に追加しました。
物理サーバーだったら、内蔵ディスクを増設したり、外付けHDDを追加接続するイメージです。

### HDDがOSからどう認識されているか確認
```shell-session
[root@TargetHost dev]# fdisk -l

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

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

ディスク /dev/mapper/vg_centos6target-lv_root: 18.8 GB, 18798870528 バイト
ヘッド 255, セクタ 63, シリンダ 2285
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x00000000


ディスク /dev/mapper/vg_centos6target-lv_swap: 2147 MB, 2147483648 バイト
ヘッド 255, セクタ 63, シリンダ 261
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x00000000


ディスク /dev/sdb: 32.2 GB, 32212254720 バイト
ヘッド 64, セクタ 32, シリンダ 30720
Units = シリンダ数 of 2048 * 512 = 1048576 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x00000000
```
新しく追加したHDDが、`sdb`として認識されていることがわかります。

### 新しいHDD上にPVを作成
```shell-session
[root@TargetHost dev]# pvcreate /dev/sdb
  Physical volume "/dev/sdb" successfully created
```

### 拡張したいLVが含まれるVGに新しいPVを追加
以下は既存のVG `vg_targethostserver` にPV `/dev/sdb` を追加する場合の実行例。
既存VGの確認は、もう一つ下の手順参照。

```
[root@TargetHost ~]# vgextend vg_targethostserver /dev/sdb
  Volume group "vg_targethostserver" successfully extended
``` 
 
### VGの確認 
vgdisplay を実行し実行結果の`--- Physical volumes ---`の部分を見ることで、新しいPVが追加されたことを確認できます。

```
[root@TargetHost ~]# vgdisplay -v
    Finding all volume groups
    Finding volume group "vg_targethostserver"
  --- Volume group ---
  VG Name               vg_targethostserver
  System ID
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  5
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               49.50 GiB
  PE Size               4.00 MiB
  Total PE              12673
  Alloc PE / Size       4994 / 19.51 GiB
  Free  PE / Size       7679 / 30.00 GiB
  VG UUID               uwLcTX-A3qe-u6As-kB1r-GniV-maUj-sLydnk

  --- Logical volume ---
  LV Path                /dev/vg_targethostserver/lv_root
  LV Name                lv_root
  VG Name                vg_targethostserver
  LV UUID                3MPIJd-2MHJ-hH1N-U0e2-b2Jh-6AlV-hAsRQO
  LV Write Access        read/write
  LV Creation host, time centos6target, 2014-05-09 04:52:58 +0900
  LV Status              available
  # open                 1
  LV Size                17.51 GiB
  Current LE             4482
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

  --- Logical volume ---
  LV Path                /dev/vg_targethostserver/lv_swap
  LV Name                lv_swap
  VG Name                vg_targethostserver
  LV UUID                he2HLI-lCSO-XgZL-yM0u-prON-CvxS-ngmqYP
  LV Write Access        read/write
  LV Creation host, time centos6target, 2014-05-09 04:53:06 +0900
  LV Status              available
  # open                 1
  LV Size                2.00 GiB
  Current LE             512
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1

  --- Physical volumes ---
  PV Name               /dev/sda2
  PV UUID               nQnUoY-pxQV-sOL2-Wf1D-vDbg-cAAb-W5hYUH
  PV Status             allocatable
  Total PE / Free PE    4994 / 0

  PV Name               /dev/sdb
  PV UUID               HoxWHo-urf3-Djea-dhUB-Y3Ht-cdqe-7BsAsT
  PV Status             allocatable
  Total PE / Free PE    7679 / 7679
```

### LVの拡張
`lvextend`を実行することで、拡張されたVGの未使用領域をLVに追加できます。
以下はVG上の未使用領域のすべてをLVに追加する場合の実行例となります。

```shell-session
[root@TargetHost ~]# lvextend -l +100%FREE /dev/vg_targethostserver/lv_root
  Extending logical volume lv_root to 47.50 GiB
  Logical volume lv_root successfully resized
``` 
 
### ファイルシステムの拡張
LVを拡張してもファイルシステムは以前の大きさのままなので、最後にファイルシステムの拡張も行う必要があります。
`ext3/ext4`の場合は`resize2fs`を実行します。
`xfs`の場合は`xfs_growfs`を実行します。CentOS7系だと基本的には`xfs`だと思います。
なおこの処理は数分かかる場合もあります。

```
[root@TargetHost ~]# resize2fs /dev/vg_targethostserver/lv_root
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/vg_targethostserver/lv_root is mounted on /; on-line resizing required
old desc_blocks = 2, new_desc_blocks = 3
Performing an on-line resize of /dev/vg_targethostserver/lv_root to 12452864 (4k) blocks.
The filesystem on /dev/vg_targethostserver/lv_root is now 12452864 blocks long.
```

処理完了後、dfコマンドでファイルシステムが拡張されたことを確認します。

```
[root@TargetHost ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_targethostserver-lv_root
                       47G  1.5G   43G   4% /
tmpfs                 939M     0  939M   0% /dev/shm
/dev/sda1             485M   75M  385M  17% /boot
```

以上です！