LVMによるディスク領域の拡大と縮小[xfs](CentOS8.3)

LVMを利用したディスク領域(xfs)の拡大と縮小について記録します。
下図の⑦～⑧を行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201787/8cefbe9f-b431-7c38-c5f7-b3e9c81bdd16.png)



＃以下の記事の続きとなります。①～⑥まではこちら。

https://qiita.com/Higemal/items/a774986ee06ec0978c6a

環境 | 詳細
--- | ---
OS | CentOS Linux release 8.3.2011
Kernel | 4.18.0-240.el8.x86_64
Machine | VM(vmware ESXi 6.7 update3)
LVM | lvm2-2.03.09-5.el8.x86_64


#7.ディスク領域のextend
ディスク領域拡張(追加容量の割り当て)を行います。
流れとしては以下となります。
・LV容量の拡張
・ファイルシステムの拡張

なお、各設定は以下の通りです。

設定 | 詳細
--- | ---
VG | test_vg01
LV | /dev/test_vg01/test_lv02
ファイルシステム | ext4
マウントポイント | /lvm/vol2
拡大前の容量 | 2GB
拡大後の容量 | 4GB

##7-1.LV容量の拡張
`lvextend -L +[Size] [LV]`にてLVを拡張します。
また、`-l [number]%[suffix]`オプションを利用して相対容量を入力可能です。
>`lvextend -l 30%VG [LV]`：VGの30%を利用してLVを作成
>`lvextend -l 100%FREE [LV]`：VGの残り100%(=残り全て)を利用してLVを作成

作成後、`vgdisplay`,`lvdisplay`で確認をします。

```text:LV拡張
[root@centt83-02 ~]# lvextend -L +2g /dev/test_vg01/test_lv02
  Size of logical volume test_vg01/test_lv02 changed from 2.00 GiB (512 extents) to 4.00 GiB (1024 extents).
  Logical volume test_vg01/test_lv02 successfully resized.
[root@centt83-02 ~]# 
```

```text:LV確認
[root@centt83-02 ~]# vgdisplay
  --- Volume group ---
  VG Name               test_vg01
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  7
  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               9.99 GiB
  PE Size               4.00 MiB
  Total PE              2558
  Alloc PE / Size       1536 / 6.00 GiB            ### 拡張前は 1024 / 4.00 GiB ###
  Free  PE / Size       1022 / 3.99 GiB            ### 拡張前は 1534 / 5.99 GiB ###
  VG UUID               zmBgH0-NSFy-QNFm-H5iq-xY7L-bBPN-SWlavx
   
[root@centt83-02 ~]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/test_vg01/test_lv02
  LV Name                test_lv02
  VG Name                test_vg01
  LV UUID                bZRobZ-2IR5-W56d-MHFd-iH2l-56NJ-Qs8alq
  LV Write Access        read/write
  LV Creation host, time centt83-02, 2022-01-30 19:05:18 +0900
  LV Status              available
  # open                 1
  LV Size                4.00 GiB           ### 拡張前は 2.00 GiB ###
  Current LE             1024               ### 拡張前は 512 ###
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:3
```

この時点では`df -h`によるファイルシステム側からは拡張されていないことが見えます。

```text:df
[root@centt83-02 ~]# df -h
ファイルシス                    サイズ  使用  残り 使用% マウント位置
/dev/mapper/test_vg01-test_lv02   2.0G   47M  2.0G    3% /lvm/vol2
```

##7-2.ファイルシステムの拡張
`xfs_growfs [LV]`でファイルシステム拡張を行います。

```text:ファイルシステムの拡張
[root@centt83-02 ~]# xfs_growfs /dev/test_vg01/test_lv02
meta-data=/dev/mapper/test_vg01-test_lv02 isize=512    agcount=4, agsize=131072 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=524288, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           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 524288 to 1048576
[root@centt83-02 ~]# 
```

`df -h`によるファイルシステム側からも拡張されたことが確認されました。

```text:df
ファイルシス                    サイズ  使用  残り 使用% マウント位置
[root@centt83-02 ~]# df -h
/dev/mapper/test_vg01-test_lv02   4.0G   62M  4.0G    2% /lvm/vol2
```



#8.ディスク領域のreduce
xfsフォーマットで作成したLVについては、仕様により縮小が出来ません。

https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/8/html/configuring_and_managing_logical_volumes/proc_shrinking-logical-volume-lvm-activation

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201787/1b9daa4e-c6de-c866-3885-fec66853c46c.png)

どうしても実施が必要な場合、一度データをバックアップした後、LVの削除と再作成にて実施する必要があります。

<br>

>なお、無理やり`lvreduce`を実行すると、以下のエラーが吐かれます。

```text:lvreduce_failure
[root@centt83-02 ~]# lvreduce -L -2g --resizefs /dev/test_vg01/test_lv02
fsadm: Xfs filesystem shrinking is unsupported.
  /usr/sbin/fsadm failed: 1
  Filesystem resize failed.
[root@centt83-02 ~]# 
```




#9.まとめ
ext4とxfsの差分を記載します。

操作 | ext4 | xfs
--- | --- | ---
LVの拡張 | lvextend | lvextend
ファイルシステムの拡張 | resize2fs,fsadm | xfs_growfs,fsadm
LVの縮小 | lvreduce | -
ファイルシステムの縮小 | resize2fs | -

<br>
ext4ファイルシステムの拡張/縮小はこちらから。

https://qiita.com/Higemal/items/cd8ffa6a920b07222073

#参考
https://atmarkit.itmedia.co.jp/ait/articles/1910/04/news021.html

https://linux.die.net/man/8/lvextend

https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/6/html/storage_administration_guide/xfsgrow

https://linux.die.net/man/8/xfs_growfs

https://centossrv.com/lvm-extend.shtml

https://rin-ka.net/centos7-lvm-extend/

https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/8/html/configuring_and_managing_logical_volumes/proc_shrinking-logical-volume-lvm-activation