LVMの/領域を拡張する [RHEL7,CentOS7]

##背景
(/)ルート領域を拡張することになった。
インストール時のパーティションは以下のとおり

- boot領域 4GB
- swap領域 1GB
- /領域 38GB
- /home領域 19GB

<pre>
[root@localhost ~]# df -h
ファイルシス          サイズ  使用  残り 使用% マウント位置
/dev/mapper/rhel-root    38G   20G   18G   53% /
/dev/sda1              1014M  145M  870M   15% /boot
/dev/mapper/rhel-home    19G   33M   19G    1% /home
</pre>


なお今回は/領域を拡張するということで、/をアンマウントする必要がある。そのためメディアブートしてレスキューモードからオペレーションする必要がある。


##いざ拡張

まずはハードディスクそのものを拡張する。今回はESXi上のVMが対象であるため、VMをシャットダウンしてからvCenterからVMのハードディスク容量を変更する(60GB -> 100GB)
※不測の事態にそなえてスナップショットの取得をお忘れなく


[変更前]
![image.png](https://qiita-image-store.s3.amazonaws.com/0/354136/4e2cf220-903b-0e11-951c-6a97fb83c2d2.png)



[変更後]
![image.png](https://qiita-image-store.s3.amazonaws.com/0/354136/00b79cfd-c2a2-7c64-65e2-140bafa0283c.png)


OSメディアを読み込ませて、レスキューモードで起動する
![image.png](https://qiita-image-store.s3.amazonaws.com/0/354136/825a24fb-b2c8-3ee3-a718-77e4e263dcb5.png)


レスキューモードで起動したら、3)のSkipを選択
![image.png](https://qiita-image-store.s3.amazonaws.com/0/354136/79973613-7c35-a31c-e3db-f061c3b805eb.png)


そうすると/にはローカルディスクではなくISOメディアボリュームがマウントされる


パーティションの管理はfdiskで行われる場合が多いが、partedのresize機能を使用することにする。
なぜならfdiskはパーティションを一度削除する必要があるため、できるだけ使いたくない。
と思ったが、どうやら<font color = "red">RHEL7(CentOS7)ではpartedでresizeができない</font>らしい。。。

####結局fdiskでやる
どうやら拡張する際の開始セクタが同じであればデータは消えないとのことなので、fdiskを利用して
パーティションを削除->再作成することにより拡張することとする。(縮小の場合はどうするんだろう。。。)


fdiskを実行
![image.png](https://qiita-image-store.s3.amazonaws.com/0/354136/1a7a19bd-c6a8-f72b-f5a7-bdfdddf7daed.png)


現在のパーティションテーブルは以下の通り、/dev/sda2が/に該当するパーティションなので今回は
こちらを削除してから大きいサイズで再作成する
![image.png](https://qiita-image-store.s3.amazonaws.com/0/354136/276b4c75-e8a2-f89c-1d20-740a1e206efe.png)
さようならーーーー


念のため消えたことを確認する
![image.png](https://qiita-image-store.s3.amazonaws.com/0/354136/71b05789-7ff7-23ae-bb92-92cdabc0bcfc.png)



そして新しいパーティションを作成する
※全部デフォルトをたたけばいい感じにできます最終セクターのデフォルトは指定できるMAX値になるので
![image.png](https://qiita-image-store.s3.amazonaws.com/0/354136/3ee2471f-fbbb-efb0-e5ba-9dc78b3c260d.png)
できたー


確認する
![image.png](https://qiita-image-store.s3.amazonaws.com/0/354136/3fb441da-22f8-95f0-331f-282cb20ced9f.png)



LVMになっていないので、LVMに変更する
![image.png](https://qiita-image-store.s3.amazonaws.com/0/354136/f1a2f244-6b8e-f5f0-651d-51695f035407.png)



書き込みもお忘れなく
![image.png](https://qiita-image-store.s3.amazonaws.com/0/354136/905843ac-3565-e00e-3d6f-462de62aa52a.png)
Warningがでているが、これは設定を適用したいなら再起動しろよというメッセージ。なので再起動する
もうレスキューモードは必要ないので、再起動後は通常モードで起動する



これでパーティションは拡大することができたので、論理ボリュームを拡大していく
とその前にOSを再起動してレスキューモードからぬけることをお忘れなく



OSが起動したら
パーティションサイズの変更が適用されていることを確認
![image.png](https://qiita-image-store.s3.amazonaws.com/0/354136/42cfc4b7-b11b-2c91-3a5c-e3211407afac.png)


確認したら、まずはPhisical Volumeから拡張する

現状PVは(約)60GBになっている
<pre>[root@localhost ~]# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               rhel
  PV Size               <59.00 GiB / not usable 2.00 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              15103
  Free PE               1
  Allocated PE          15102
  PV UUID               v38uuP-pqb7-vBs9-GGch-JPg9-vOrv-zb0OGF</pre>



pvresizeコマンドで拡張する
<pre>[root@localhost ~]# pvresize /dev/sda2
  Physical volume "/dev/sda2" changed
  1 physical volume(s) resized / 0 physical volume(s) not resized</pre>



(約)100GBに拡張されたことを確認する
<pre>[root@localhost ~]# pvscan
  PV /dev/sda2   VG rhel            lvm2 [<99.00 GiB / 40.00 GiB free]
  Total: 1 [<99.00 GiB] / in use: 1 [<99.00 GiB] / in no VG: 0 [0   ]</pre>

<pre>[root@localhost ~]# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               rhel
  PV Size               <99.00 GiB / not usable 2.00 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              25343
  Free PE               10241
  Allocated PE          15102
  PV UUID               v38uuP-pqb7-vBs9-GGch-JPg9-vOrv-zb0OGF</pre>



LogicalVolumeを拡張する

まずは確認
<pre>[root@localhost ~]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/rhel/swap
  LV Name                swap
  VG Name                rhel
  LV UUID                OQzoCQ-Okea-ec9A-rXa3-OIUy-A2nR-OBZMLk
  LV Write Access        read/write
  LV Creation host, time localhost, 2018-12-20 10:42:41 +0900
  LV Status              available
  # open                 2
  LV Size                <3.88 GiB
  Current LE             992
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:1

  --- Logical volume ---
  LV Path                /dev/rhel/home
  LV Name                home
  VG Name                rhel
  LV UUID                cDZSgW-EjnM-zFb2-354F-Nn2k-EEpR-AHRIFN
  LV Write Access        read/write
  LV Creation host, time localhost, 2018-12-20 10:42:41 +0900
  LV Status              available
  # open                 1
  LV Size                18.08 GiB
  Current LE             4629
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2

  --- Logical volume ---
  LV Path                /dev/rhel/root
  LV Name                root
  VG Name                rhel
  LV UUID                fxnSpj-0875-X0gV-D07I-7woW-MpDT-bhLh6t
  LV Write Access        read/write
  LV Creation host, time localhost, 2018-12-20 10:42:41 +0900
  LV Status              available
  # open                 1
  LV Size                <37.04 GiB
  Current LE             9481
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0
[root@localhost ~]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/rhel/swap
  LV Name                swap
  VG Name                rhel
  LV UUID                OQzoCQ-Okea-ec9A-rXa3-OIUy-A2nR-OBZMLk
  LV Write Access        read/write
  LV Creation host, time localhost, 2018-12-20 10:42:41 +0900
  LV Status              available
  # open                 2
  LV Size                <3.88 GiB
  Current LE             992
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:1

  --- Logical volume ---
  LV Path                /dev/rhel/home
  LV Name                home
  VG Name                rhel
  LV UUID                cDZSgW-EjnM-zFb2-354F-Nn2k-EEpR-AHRIFN
  LV Write Access        read/write
  LV Creation host, time localhost, 2018-12-20 10:42:41 +0900
  LV Status              available
  # open                 1
  LV Size                18.08 GiB
  Current LE             4629
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2

  --- Logical volume ---
  LV Path                /dev/rhel/root
  LV Name                root
  VG Name                rhel
  LV UUID                fxnSpj-0875-X0gV-D07I-7woW-MpDT-bhLh6t
  LV Write Access        read/write
  LV Creation host, time localhost, 2018-12-20 10:42:41 +0900
  LV Status              available
  # open                 1
  LV Size                <37.04 GiB
  Current LE             9481
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0</pre>
今回はこの/dev/rhel/rootを拡張する






lvextendコマンドで該当するLVを拡張する(+100%FREEを指定すると、拡張可能な最大値までボリュームサイズを拡張することができる)
<pre>[root@localhost ~]# lvextend -l +100%FREE /dev/rhel/root
  Size of logical volume rhel/root changed from <37.04 GiB (9481 extents) to <77.04 GiB (19722 extents).
  Logical volume rhel/root successfully resized.</pre>


拡張されていることを確認する
<pre>[root@localhost ~]# lvdisplay
～割愛～
  --- Logical volume ---
  LV Path                /dev/rhel/root
  LV Name                root
  VG Name                rhel
  LV UUID                fxnSpj-0875-X0gV-D07I-7woW-MpDT-bhLh6t
  LV Write Access        read/write
  LV Creation host, time localhost, 2018-12-20 10:42:41 +0900
  LV Status              available
  # open                 1
  LV Size                <77.04 GiB
  Current LE             19722
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0</pre>
40GBほど拡張されている！！



これだけだとまだファイルシステムは拡張されていない
<pre>[root@localhost ~]# df -h
ファイルシス          サイズ  使用  残り 使用% マウント位置
/dev/mapper/rhel-root    38G   20G   18G   53% /
devtmpfs                1.9G     0  1.9G    0% /dev
tmpfs                   1.9G     0  1.9G    0% /dev/shm
tmpfs                   1.9G  8.6M  1.9G    1% /run
tmpfs                   1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1              1014M  145M  870M   15% /boot
/dev/mapper/rhel-home    19G   33M   19G    1% /home
tmpfs                   380M     0  380M    0% /run/user/0</pre>



最後にファイルシステムのリサイズを実行
<pre>[root@localhost ~]# xfs_growfs /dev/rhel/root
meta-data=/dev/mapper/rhel-root  isize=512    agcount=4, agsize=2427136 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=9708544, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=4740, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0</pre>



ファイルシステムサイズが変更されたことを確認する
<pre>[root@localhost ~]# df -h
ファイルシス          サイズ  使用  残り 使用% マウント位置
/dev/mapper/rhel-root    78G   20G   58G   26% /
devtmpfs                1.9G     0  1.9G    0% /dev
tmpfs                   1.9G     0  1.9G    0% /dev/shm
tmpfs                   1.9G  8.6M  1.9G    1% /run
tmpfs                   1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1              1014M  145M  870M   15% /boot
/dev/mapper/rhel-home    19G   33M   19G    1% /home
tmpfs                   380M     0  380M    0% /run/user/0</pre>



おつかれさまでーす