LVMによるディスク領域の作成(CentOS8.3)

LVMを利用してディスク領域の作成を行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201787/75994aeb-4190-0053-76f8-f7aba1fdfad8.png)



本稿では①～⑥までを実施し、⑦～⑧は以下の記事にて紹介します。

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

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

環境 | 詳細
--- | ---
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

#0.Disk追加
ESXi側からHDDを追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201787/7ae073b4-f77b-7dec-7880-b47202f05fd3.png)

OS起動後、`/dev/sdb`と`/dev/sdb`として認識されました。

```text:new_device
[root@centt83-02 ~]# lsblk -i
NAME                    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                       8:0    0   16G  0 disk 
|-sda1                    8:1    0  600M  0 part /boot/efi
|-sda2                    8:2    0    1G  0 part /boot
`-sda3                    8:3    0 14.4G  0 part 
  |-cl-root             253:0    0 12.8G  0 lvm  /
  `-cl-swap             253:1    0  1.6G  0 lvm  [SWAP]
sdb                       8:16   0    5G  0 disk                ### 新規追加 ###
sdc                       8:32   0    5G  0 disk                ### 新規追加 ### 
sr0                      11:0    1  8.6G  0 rom  
[root@centt83-02 ~]#
```


#1.パーティション作成
パーティションを作成します。`parted`コマンドにてHDDにパーティションを作成します。
詳細は以下から。

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

パーティション作成時はGPTで初期化し、各ディスクを100%利用した1個のパーティションを作成します。
＃今回は`/dev/sdb`と`/dev/sdc`がありますが、コマンドは同じなので`/dev/sdb`のみ記載します。

```text:パーティション作成
[root@centt83-02 ~]# parted /dev/sdb
GNU Parted 3.2
/dev/sdb を使用
GNU Parted へようこそ！ コマンド一覧を見るには 'help' と入力してください。
(parted) p                                      ### 情報表示 ###
エラー: /dev/sdb: ディスクラベルが認識できません。
モデル: VMware Virtual disk (scsi)
ディスク /dev/sdb: 5369MB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: unknown
ディスクフラグ: 
(parted) 
(parted) mklabel gpt                            ### GPTで初期化 ###
(parted) 
(parted) mkpart                                 ### パーティション作成 ###
パーティションの名前?  []?                        ### 入力無しEnter ###
ファイルシステムの種類?  [ext2]?                  ### 入力無しEnter ###
開始? 0%                                        ### 0%から開始 ###
終了? 100%                                      ### 100%まで利用 ###
(parted) 
(parted) set 1 lvm on                           ### 1つめのパーティションにLVMフラグ ###
(parted) 
(parted) p                                      ### 情報表示 ###
モデル: VMware Virtual disk (scsi)
ディスク /dev/sdb: 5369MB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
ディスクフラグ: 

番号  開始    終了    サイズ  ファイルシステム  名前  フラグ
 1    1049kB  5368MB  5367MB  ext2                    lvm

(parted) 
(parted) q                                       ### 終了 ###
通知: 必要であれば /etc/fstab を更新するのを忘れないようにしてください。

[root@centt83-02 ~]# 
```

#2.PV作成
PV:Physical Volumeを作成します。
`pvcreate [パーティション]`にてPVを作成します。
作成後、`pvs`,`pvscan`,`pvdisplay`で確認をします。

```text:pv作成
[root@centt83-02 ~]# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created.
[root@centt83-02 ~]# 

[root@centt83-02 ~]# pvcreate /dev/sdc1
  Physical volume "/dev/sdc1" successfully created.
[root@centt83-02 ~]# 
```

```text:PV作成確認
[root@centt83-02 ~]# pvs
  PV         VG Fmt  Attr PSize  PFree 
  /dev/sdb1     lvm2 ---  <5.00g <5.00g
  /dev/sdc1     lvm2 ---  <5.00g <5.00g
[root@centt83-02 ~]# 

[root@centt83-02 ~]# pvscan
  PV /dev/sdb1                      lvm2 [<5.00 GiB]
  PV /dev/sdc1                      lvm2 [<5.00 GiB]
  Total: 3 [<24.41 GiB] / in use: 1 [14.41 GiB] / in no VG: 2 [<10.00 GiB]
[root@centt83-02 ~]# 

[root@centt83-02 ~]# pvdisplay
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name               
  PV Size               <5.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               MrVE23-LFhX-KNb2-4aU4-jgF7-p1hG-klwfU9
   
  "/dev/sdc1" is a new physical volume of "<5.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdc1
  VG Name               
  PV Size               <5.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               yd1Fp6-3IkA-7Coa-kV5O-dtC0-F1S3-ggnHoT
   
[root@centt83-02 ~]# 
```

#3.VG作成/参加
VG:Volume Groupの作成と参加をします。
まずはPV`/dev/sdb1/`を利用してVG`vg01`を作成し、その後PV`dev/sdbc1/`をVG`vg01`に参加します。

##3-1.VG作成
`vgcreate [VG] [PV]`にてPVを作成します。
作成後、`vgs`,`vgscan`,`vgdisplay`で確認をします。

＃`vgcreate [VG] [PV1] [PV2] [PV3]`とすることで、VG作成と同時にPV1～3をまとめてVGに入力可能です。

```text:vg作成
[root@centt83-02 ~]# vgcreate test_vg01 /dev/sdb1
  Volume group "test_vg01" successfully created
[root@centt83-02 ~]# 
```

```text:vg確認
[root@centt83-02 ~]# vgs
  VG        #PV #LV #SN Attr   VSize  VFree 
  test_vg01   1   0   0 wz--n- <5.00g <5.00g
[root@centt83-02 ~]# 

[root@centt83-02 ~]# vgscan
  Found volume group "test_vg01" using metadata type lvm2
[root@centt83-02 ~]# 

[root@centt83-02 ~]# vgdisplay
  --- Volume group ---
  VG Name               test_vg01
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <5.00 GiB
  PE Size               4.00 MiB
  Total PE              1279
  Alloc PE / Size       0 / 0   
  Free  PE / Size       1279 / <5.00 GiB
  VG UUID               zmBgH0-NSFy-QNFm-H5iq-xY7L-bBPN-SWlavx
   
[root@centt83-02 ~]# 
```

##3-2.VG参加
`vgextend [VG] [PV]`にてVGを作成します。
作成後、`vgs`,`vgscan`,`vgdisplay`で確認をします。

```text:vg参加
[root@centt83-02 ~]# vgextend test_vg01 /dev/sdc1
  Volume group "test_vg01" successfully extended
[root@centt83-02 ~]# 
```

```text:vg確認
[root@centt83-02 ~]# vgs
  VG        #PV #LV #SN Attr   VSize  VFree
  test_vg01   2   0   0 wz--n-  9.99g 9.99g
[root@centt83-02 ~]# 

[root@centt83-02 ~]# vgscan
  Found volume group "test_vg01" using metadata type lvm2
[root@centt83-02 ~]# 

[root@centt83-02 ~]# vgdisplay
  --- Volume group ---
  VG Name               test_vg01
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  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       0 / 0   
  Free  PE / Size       2558 / 9.99 GiB
  VG UUID               zmBgH0-NSFy-QNFm-H5iq-xY7L-bBPN-SWlavx
   
[root@centt83-02 ~]# 
```

#4.LV作成
`lvcreate -n [LV] -L [Size] [VG]`にてLVを作成します。
`-L [Size]`は`-L 1g`=1024^3byte、`-L 1G`=1000^3byteで計算します。
また、`-l [number]%[suffix]`オプションを利用して相対容量を入力可能です。
>`lvcreate -l 30%VG -n [LV] [VG]`：VGの30%を利用してLVを作成
`lvcreate -l 100%FREE -n [LV] [VG]`：VGの残り100%(=残り全て)を利用してLVを作成

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

```text:LV作成
[root@centt83-02 ~]# lvcreate -n test_lv01 -L 2g test_vg01
  Logical volume "test_lv01" created.
[root@centt83-02 ~]# 

[root@centt83-02 ~]# lvcreate -n test_lv02 -L 2g test_vg01
  Logical volume "test_lv02" created.
[root@centt83-02 ~]# 
```

```text:LV確認
[root@centt83-02 ~]# lvs
  LV        VG        Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  test_lv01 test_vg01 -wi-a-----   2.00g                                                    
  test_lv02 test_vg01 -wi-a-----   2.00g                                                    
[root@centt83-02 ~]# 

[root@centt83-02 ~]# lvscan
  ACTIVE            '/dev/test_vg01/test_lv01' [2.00 GiB] inherit
  ACTIVE            '/dev/test_vg01/test_lv02' [2.00 GiB] inherit
[root@centt83-02 ~]# 

[root@centt83-02 ~]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/test_vg01/test_lv01
  LV Name                test_lv01
  VG Name                test_vg01
  LV UUID                DtXMWK-Z22z-OCS2-EfnX-YWPJ-4Wrc-tLHkvR
  LV Write Access        read/write
  LV Creation host, time centt83-02, 2022-01-30 19:04:46 +0900
  LV Status              available
  # open                 0
  LV Size                2.00 GiB
  Current LE             512
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2
   
  --- 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                 0
  LV Size                2.00 GiB
  Current LE             512
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:3
   
[root@centt83-02 ~]# 
```


#5.FS作成
ファイルシステムを作成します。
`lvdisplay`コマンドの出力の`LV Path`を利用して、各LVのファイルシステムを作成します。



`/dev/test_vg01/test_lv01`：`ext4`でファイルシステム作成　→　`mkfs.ext4 [LV]`
`/dev/test_vg01/test_lv02`：`xfs`でファイルシステム作成　→　`mkfs.xfs [LV]`


```text:LV_Path
[root@centt83-02 ~]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/test_vg01/test_lv01
  --- Logical volume ---
  LV Path                /dev/test_vg01/test_lv02
```


```text:ファイルシステム作成
[root@centt83-02 ~]# mkfs.ext4 /dev/test_vg01/test_lv01
mke2fs 1.45.6 (20-Mar-2020)
Discarding device blocks:   4096/524288             done                            
Creating filesystem with 524288 4k blocks and 131072 inodes
Filesystem UUID: 35d5a3a5-c00d-4f17-b6d6-2d02ccd0ee38
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912

Allocating group tables:  0/16     done                            
Writing inode tables:  0/16     done                            
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information:  0/16     done
[root@centt83-02 ~]# 

[root@centt83-02 ~]# mkfs.xfs /dev/test_vg01/test_lv02
meta-data=/dev/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
Discarding blocks...Done.
[root@centt83-02 ~]# 
```

```text:ファイルシステム確認
[root@centt83-02 ~]# lsblk -if
NAME                    FSTYPE      LABEL                      UUID                                   MOUNTPOINT
sdb                                                                                                   
`-sdb1                  LVM2_member                            MrVE23-LFhX-KNb2-4aU4-jgF7-p1hG-klwfU9 
  |-test_vg01-test_lv01 ext4                                   35d5a3a5-c00d-4f17-b6d6-2d02ccd0ee38   
  `-test_vg01-test_lv02 xfs                                    43901ab2-1a9d-4f14-8f3c-4e16696cb1fb   
sdc                                                                                                   
`-sdc1                  LVM2_member                            yd1Fp6-3IkA-7Coa-kV5O-dtC0-F1S3-ggnHoT 
[root@centt83-02 ~]# 
```


#6.mount
マウントを実施します。
まずはマウントポイントとなるディレクトリを`mkdir -p [direcvory]`で作成します。
その後、`/etc/fstab`に各LVを追記し、`mount -a`でマウントします。

```text:マウントポイント作成
[root@centt83-02 ~]# mkdir -p /lvm/vol1
[root@centt83-02 ~]# mkdir -p /lvm/vol2
[root@centt83-02 ~]# 
[root@centt83-02 ~]# ll /lvm
合計 0
drwxr-xr-x. 2 root root 6  1月 30 19:17 vol1
drwxr-xr-x. 2 root root 6  1月 30 19:17 vol2
[root@centt83-02 ~]# 
```

```text:/etc/fstab(追記部分のみ)
[root@centt83-02 ~]# cat /etc/fstab
UUID=35d5a3a5-c00d-4f17-b6d6-2d02ccd0ee38 /lvm/vol1               ext4    defaults        0 0
UUID=43901ab2-1a9d-4f14-8f3c-4e16696cb1fb /lvm/vol2               xfs     defaults        0 0
```

```text:mount、mount確認
[root@centt83-02 ~]# mount -a
[root@centt83-02 ~]# 

[root@centt83-02 ~]# mount
/dev/mapper/test_vg01-test_lv01 on /lvm/vol1 type ext4 (rw,relatime,seclabel)
/dev/mapper/test_vg01-test_lv02 on /lvm/vol2 type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota)
[root@centt83-02 ~]# 
```
```text:df
[root@centt83-02 ~]# df -h
ファイルシス                    サイズ  使用  残り 使用% マウント位置
/dev/mapper/test_vg01-test_lv01   2.0G  6.0M  1.8G    1% /lvm/vol1
/dev/mapper/test_vg01-test_lv02   2.0G   47M  2.0G    3% /lvm/vol2
[root@centt83-02 ~]# 
```

<br>
<br>
ext4,xfsのLV拡張/縮小については以下に続きを記載しております。

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

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



#参考
https://go-journey.club/archives/557

https://qiita.com/TsutomuNakamura/items/93c6333c8dd32aeb197a

https://atmarkit.itmedia.co.jp/ait/articles/1909/06/news018.html

https://man7.org/linux/man-pages/man8/pvcreate.8.html

https://atmarkit.itmedia.co.jp/ait/articles/1909/12/news018.html

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

https://atmarkit.itmedia.co.jp/ait/articles/1910/03/news018.html

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

https://atmarkit.itmedia.co.jp/ait/articles/1909/13/news019.html

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

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

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