【2023年06月版】物理ボリューム・ボリュームグループ・論理ボリューム操作メモ

# はじめに

物理ボリューム・ボリュームグループ・論理ボリュームの操作忘れがち
メモ

- 環境は Ubuntu22.04

# 含まれる内容

- 作成
- 削除
- サイズの縮小
- サイズの拡張
- 物理ディスクを追加してサイズの拡張
- 物理ディスクを削除してサイズの縮小

# 作成

- 論理ボリュームを作成するデバイスは サイズ `2G` の `/dev/sdb`
- `/dev/sdb` 全体の物理ボリュームを作成して、ボリュームグループ `vg0`、論理ボリューム `lv0` を作成
- `/dev/vg0/lv0` を `/export` へマウントする

## 物理ボリュームの作成
```terminal
$ sudo pvcreate /dev/sdb
  Physical volume "/dev/sdb" successfully created.
$ sudo pvs
  PV         VG        Fmt  Attr PSize   PFree   
  :
  :
  /dev/sdb             lvm2 ---    2.00g  2.00g
  :
  :
```

## ボリュームグループの作成
```terminal
$ sudo vgcreate vg0 /dev/sdb
  Volume group "vg0" successfully created
$ sudo vgs
  VG        #PV #LV #SN Attr   VSize   VFree 
  :
  :
  vg0         1   0   0 wz--n-  <2.00g <2.00g
  :
  :
$ sudo pvs
  PV         VG        Fmt  Attr PSize   PFree 
  :
  :
  /dev/sdb   vg0       lvm2 a--   <2.00g <2.00g
  :
  :
```
## 論理ボリュームの作成
```terminal
$ sudo lvcreate -l100%FREE -n lv0 vg0
  Logical volume "lv0" created.
$ sudo lvs
  LV        VG        Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  :
  :
  lv0       vg0       -wi-a----- <2.00g
  :
  :
$ sudo vgs
  VG        #PV #LV #SN Attr   VSize   VFree 
  :
  :
  vg0         1   1   0 wz--n-  <2.00g     0
  :
  :
$ sudo pvs
  PV         VG        Fmt  Attr PSize   PFree 
  :
  :
  /dev/sdb   vg0       lvm2 a--   <2.00g     0 
  :
  :
```
## 論理ボリュームのフォーマット
```terminal
$ lsblk -f
  :
  :
NAME                      FSTYPE      FSVER    LABEL UUID                                   FSAVAIL FSUSE% MOUNTPOINTS
sdb                       LVM2_member LVM2 001       ******-****-****-****-****-****-******                
└─vg0-lv0                                                                                  
  :
  :
$ sudo mkfs.ext4 /dev/vg0/lv0
mke2fs 1.46.5 (30-Dec-2021)
Discarding device blocks: done                            
Creating filesystem with 523264 4k blocks and 130816 inodes
Filesystem UUID: 71ec8fd6-57b0-4f73-9489-0133772a83ec
Superblock backups stored on blocks: 
32768, 98304, 163840, 229376, 294912
  
Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
$ lsblk -f
  :
  :
NAME                      FSTYPE      FSVER    LABEL UUID                                   FSAVAIL FSUSE% MOUNTPOINTS
sdb                       LVM2_member LVM2 001       ******-****-****-****-****-****-******                
└─vg0-lv0                 ext4        1.0            ********-****-****-****-************  
  :
  :
```
## 論理ボリュームのマウント
```terminal
$ lsblk
NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
  :
  :
sdb                         8:16   0    2G  0 disk 
└─vg0-lv0                 253:0    0    2G  0 lvm
  :
  :
$ sudo mount /dev/vg0/lv0 /export
$ lsblk
NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
  :
  :
sdb                         8:16   0    2G  0 disk 
└─vg0-lv0                 253:0    0    2G  0 lvm  /export
  :
  :
$ df -h
Filesystem                         Size  Used Avail Use% Mounted on
  :
  :
/dev/mapper/vg0-lv0                2.0G   24K  1.9G   1% /export
  :
  :
```

# 削除

- 論理ボリュームが存在するデバイスは サイズ `2G` の `/dev/sdb`
- `/dev/sdb` 全体の物理ボリューム上に、ボリュームグループ `vg0`、論理ボリューム `lv0` が存在する
- `/export` へマウントしている論理ボリューム、ボリュームグループ、物理ボリュームを削除

## 論理ボリュームのマウント解除

```terminal
$ lsblk
NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
  :
  :
sdb                         8:16   0    2G  0 disk 
└─vg0-lv0                 253:0    0    2G  0 lvm  /mnt/export
  :
  :
$ df -h
Filesystem                         Size  Used Avail Use% Mounted on
  :
  :
/dev/mapper/vg0-lv0                2.0G   24K  1.9G   1% /mnt/test
  :
  :
$ sudo umount /dev/vg0/lv0
$ lsblk
NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
  :
  :
sdb                         8:16   0    2G  0 disk 
└─vg0-lv0                 253:0    0    2G  0 lvm  
  :
  :
```

## 論理ボリュームの削除

```terminal
$ sudo lvremove /dev/vg0/lv0
Do you really want to remove and DISCARD active logical volume vg0/lv0? [y/n]: y
  Logical volume "lv0" successfully removed
```

## ボリュームグループの削除

```terminal
$ sudo vgremove /dev/vg0
  Volume group "vg0" successfully removed
```

## 物理ボリュームの削除

```terminal
$ $ sudo pvremove /dev/sdb
  Labels on physical volume "/dev/sdb" successfully wiped.
```

# サイズの縮小

- 論理ボリュームが存在するデバイスは サイズ `2G` の `/dev/sdb`
- `/dev/sdb` 全体の物理ボリューム上に、ボリュームグループ `vg0`、論理ボリューム `lv0` が存在する
- ファイルシステムは、サイズ変更が可能な、ext4 を利用
- `/export` へマウントしている論理ボリュームを `1G` へ縮小

## 縮小前の状態の確認

```terminal
$ df -h
Filesystem                         Size  Used Avail Use% Mounted on
  :
  :
/dev/mapper/vg0-lv0                2.0G   24K  1.9G   1% /export
  :
  :
$ lsblk -f
NAME                      FSTYPE      FSVER    LABEL UUID                                   FSAVAIL FSUSE% MOUNTPOINTS
  :
  :
sdb                       LVM2_member LVM2 001       ******-****-****-****-****-****-******                
└─vg0-lv0                 ext4        1.0            ********-****-****-****-************      1.8G     0% /export
  :
  :
```

## 論理ボリュームのマウント解除

```terminal
$ sudo umount /dev/vg0/lv0
```

## ファイルシステムのサイズの縮小

```terminal
$ sudo e2fsck -f /dev/vg0/lv0
e2fsck 1.46.5 (30-Dec-2021)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/vg0/lv0: 11/130816 files (0.0% non-contiguous), 17948/523264 blocks
$ sudo resize2fs /dev/vg0/lv0 1G
resize2fs 1.46.5 (30-Dec-2021)
Resizing the filesystem on /dev/vg0/lv0 to 262144 (4k) blocks.
The filesystem on /dev/vg0/lv0 is now 262144 (4k) blocks long.
```

## 論理ボリュームのサイズの縮小

- 2G を 1G に縮小

```terminal
$ sudo lvreduce -L 1G /dev/vg0/lv0
  WARNING: Reducing active logical volume to 1.00 GiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg0/lv0? [y/n]: y
  Size of logical volume vg0/lv0 changed from <2.00 GiB (511 extents) to 1.00 GiB (256 extents).
  Logical volume vg0/lv0 successfully resized.
```

## 論理ボリュームの再マウント

```terminal
$ sudo mount /dev/vg0/lv0 /export
```

## 縮小後の状態の確認

```terminal
$ df -h
Filesystem                         Size  Used Avail Use% Mounted on
  :
  :
/dev/mapper/vg0-lv0                971M   24K  904M   1% /export
  :
  :
$ lsblk -f
NAME                      FSTYPE      FSVER    LABEL UUID                                   FSAVAIL FSUSE% MOUNTPOINTS
  :
  :
sdb                       LVM2_member LVM2 001       ******-****-****-****-****-****-******                
└─vg0-lv0                 ext4        1.0            ********-****-****-****-************    903.7M     0% /export
  :
  :
```

# サイズの拡張

- 論理ボリュームが存在するデバイスは サイズ `1G` の `/dev/sdb`
- `/dev/sdb` 全体の物理ボリューム上に、ボリュームグループ `vg0`、論理ボリューム `lv0` が存在する
- ファイルシステムは、サイズ変更が可能な、ext4 を利用
- `/export` へマウントしている論理ボリュームを `2G` へ拡張

## 拡張前の状態の確認

```terminal
$ df -h
Filesystem                         Size  Used Avail Use% Mounted on
  :
  :
/dev/mapper/vg0-lv0                971M   24K  904M   1% /export
  :
  :
$ lsblk -f
NAME                      FSTYPE      FSVER    LABEL UUID                                   FSAVAIL FSUSE% MOUNTPOINTS
  :
  :
sdb                       LVM2_member LVM2 001       ******-****-****-****-****-****-******                
└─vg0-lv0                 ext4        1.0            ********-****-****-****-************    903.7M     0% /export
  :
  :
```

## 論理ボリュームのマウント解除

```terminal
$ sudo umount /dev/vg0/lv0
```

## 論理ボリュームのサイズの拡張

- 1G を 2G に拡張

```terminal
$ sudo lvextend -l+100%FREE /dev/vg0/lv0
  Size of logical volume vg0/lv0 changed from 1.00 GiB (256 extents) to <2.00 GiB (511 extents).
  Logical volume vg0/lv0 successfully resized.
```

## ファイルシステムのサイズの縮小

```terminal
$ sudo e2fsck -f /dev/vg0/lv0
e2fsck 1.46.5 (30-Dec-2021)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/vg0/lv0: 11/65408 files (0.0% non-contiguous), 13587/262144 blocks
$ sudo resize2fs /dev/vg0/lv0
resize2fs 1.46.5 (30-Dec-2021)
Resizing the filesystem on /dev/vg0/lv0 to 523264 (4k) blocks.
The filesystem on /dev/vg0/lv0 is now 523264 (4k) blocks long.
```

## 論理ボリュームの再マウント

```terminal
$ sudo mount /dev/vg0/lv0 /export
```

## 拡張後の状態の確認

```terminal
$ df -h
Filesystem                         Size  Used Avail Use% Mounted on
  :
  :
/dev/mapper/vg0-lv0                2.0G   24K  1.9G   1% /export
  :
  :
$ lsblk -f
NAME                      FSTYPE      FSVER    LABEL UUID                                   FSAVAIL FSUSE% MOUNTPOINTS
  :
  :
sdb                       LVM2_member LVM2 001       ******-****-****-****-****-****-******                
└─vg0-lv0                 ext4        1.0            ********-****-****-****-************      1.8G     0% /export
  :
  :
```

# 物理ディスクを追加してサイズの拡張

- 既存の論理ボリュームが存在するデバイスは サイズ `2G` の `/dev/sdb`
- 追加するデバイスは サイズ `2G` の `/dev/sdc`
- `/dev/sdb` 全体の物理ボリューム上に、ボリュームグループ `vg0`、論理ボリューム `lv0` が存在する
- ファイルシステムは、サイズ変更が可能な、ext4 を利用
- `/export` へマウントしている論理ボリュームを `4G` へ拡張

## 拡張前の状態の確認

```terminal
$ df -h
Filesystem                         Size  Used Avail Use% Mounted on
  :
  :
/dev/mapper/vg0-lv0                2.0G   24K  1.9G   1% /export
  :
  :
$ lsblk -f
NAME                      FSTYPE      FSVER    LABEL UUID                                   FSAVAIL FSUSE% MOUNTPOINTS
  :
  :
sdb                       LVM2_member LVM2 001       ******-****-****-****-****-****-******                
└─vg0-lv0                 ext4        1.0            ********-****-****-****-************      1.8G     0% /export
sdc   
  :
  :
```

## 論理ボリュームのマウント解除

```terminal
$ sudo umount /dev/vg0/lv0
```

## 物理ボリュームの作成
```terminal
$ sudo pvcreate /dev/sdc
  Physical volume "/dev/sdc" successfully created.
$ sudo pvs
  PV         VG        Fmt  Attr PSize   PFree   
  :
  :
  /dev/sdb   vg0       lvm2 a--   <2.00g     0 
  /dev/sdc             lvm2 ---    2.00g  2.00g
  :
  :
```

## 既存のボリュームグループに、物理ボリュームの追加
```terminal
$ sudo vgextend /dev/vg0 /dev/sdc
  Volume group "vg0" successfully extended
```

## 論理ボリュームの拡張
```terminal
$ sudo lvextend -l+100%FREE /dev/vg0/lv0
  Size of logical volume vg0/lv0 changed from <2.00 GiB (511 extents) to 3.99 GiB (1022 extents).
  Logical volume vg0/lv0 successfully resized.
$ sudo lvs
  LV        VG        Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  :
  :
  lv0       vg0       -wi-a-----  3.99g
  :
  :
```

## ファイルシステムのサイズの拡張

```terminal
$ sudo e2fsck -f /dev/vg0/lv0
e2fsck 1.46.5 (30-Dec-2021)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/vg0/lv0: 13/130816 files (0.0% non-contiguous), 17950/523264 blocks
$ sudo resize2fs /dev/vg0/lv0
resize2fs 1.46.5 (30-Dec-2021)
Resizing the filesystem on /dev/vg0/lv0 to 1046528 (4k) blocks.
The filesystem on /dev/vg0/lv0 is now 1046528 (4k) blocks long.
```

## 論理ボリュームの再マウント

```terminal
$ sudo mount /dev/vg0/lv0 /export
```

## 拡張後の状態の確認

```terminal
$ df -h
Filesystem                         Size  Used Avail Use% Mounted on
  :
  :
/dev/mapper/vg0-lv0                3.9G   24K  3.7G   1% /export
  :
  :
$ lsblk -f
NAME                      FSTYPE      FSVER    LABEL UUID                                   FSAVAIL FSUSE% MOUNTPOINTS
  :
  :
sdb                       LVM2_member LVM2 001       ******-****-****-****-****-****-******                
└─vg0-lv0                 ext4        1.0            ********-****-****-****-************      3.6G     0% /export
sdc                       LVM2_member LVM2 001       ******-****-****-****-****-****-******                
└─vg0-lv0                 ext4        1.0            ********-****-****-****-************      3.6G     0% /export
  :
  :
```

# 物理ディスクを削除してサイズの縮小

- 既存の論理ボリュームが存在するデバイスは サイズ `2G` の `/dev/sdb` と `/dev/sdc`
- 削除するデバイスは サイズ `2G` の `/dev/sdc`
- `/dev/sdb` と `dev/sdc` 全体の物理ボリューム上に、ボリュームグループ `vg0`、論理ボリューム `lv0` が存在する
- ファイルシステムは、サイズ変更が可能な、ext4 を利用
- `/export` へマウントしている論理ボリュームを `2G` へ拡張

## 縮小前の状態の確認

```terminal
$ df -h
Filesystem                         Size  Used Avail Use% Mounted on
  :
  :
/dev/mapper/vg0-lv0                3.9G   24K  3.7G   1% /export
  :
  :
$ lsblk -f
NAME                      FSTYPE      FSVER    LABEL UUID                                   FSAVAIL FSUSE% MOUNTPOINTS
  :
  :
sdb                       LVM2_member LVM2 001       ******-****-****-****-****-****-******                
└─vg0-lv0                 ext4        1.0            ********-****-****-****-************      3.6G     0% /export
sdc                       LVM2_member LVM2 001       ******-****-****-****-****-****-******                
└─vg0-lv0                 ext4        1.0            ********-****-****-****-************      3.6G     0% /export
  :
  :
```

## 論理ボリュームのマウント解除

```terminal
$ sudo umount /dev/vg0/lv0
```

## ファイルシステムのサイズの縮小

```terminal
$ sudo e2fsck -f /dev/vg0/lv0
e2fsck 1.46.5 (30-Dec-2021)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/vg0/lv0: 11/261632 files (0.0% non-contiguous), 36902/1046528 blocks
$ sudo resize2fs /dev/vg0/lv0 1G
resize2fs 1.46.5 (30-Dec-2021)
Resizing the filesystem on /dev/vg0/lv0 to 262144 (4k) blocks.
The filesystem on /dev/vg0/lv0 is now 262144 (4k) blocks long.
```

## 論理ボリュームの縮小
```terminal
$ sudo lvreduce -L 1G /dev/vg0/lv0
  WARNING: Reducing active logical volume to 1.00 GiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg0/lv0? [y/n]: y
  Size of logical volume vg0/lv0 changed from 3.99 GiB (1022 extents) to 1.00 GiB (256 extents).
  Logical volume vg0/lv0 successfully resized.
$ sudo lvs
  LV        VG        Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  :
  :
  lv0       vg0       -wi-a-----  1.00g
  :
  :
```

## 既存のボリュームグループから、物理ボリュームの削除
```terminal
$ sudo vgreduce /dev/vg0 /dev/sdc
  Removed "/dev/sdc" from volume group "vg0"
```

## 物理ボリュームの削除
```terminal
$ sudo pvremove /dev/sdc
  Labels on physical volume "/dev/sdc" successfully wiped.
$ sudo pvs
  PV         VG        Fmt  Attr PSize   PFree   
  :
  :
  /dev/sdb   vg0       lvm2 a--   <2.00g 1020.00m
  :
  :
```

## 論理ボリュームの拡張
```terminal
$ sudo lvextend -l+100%FREE /dev/vg0/lv0
  Size of logical volume vg0/lv0 changed from 1.00 GiB (256 extents) to <2.00 GiB (511 extents).
  Logical volume vg0/lv0 successfully resized.
$ sudo lvs
  LV        VG        Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  :
  :
  lv0       vg0       -wi-a----- <2.00g
  :
  :
```

## ファイルシステムのサイズの拡張

```terminal
$ sudo e2fsck -f /dev/vg0/lv0
e2fsck 1.46.5 (30-Dec-2021)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/vg0/lv0: 11/65408 files (0.0% non-contiguous), 23054/262144 blocks
$ sudo resize2fs /dev/vg0/lv0
resize2fs 1.46.5 (30-Dec-2021)
Resizing the filesystem on /dev/vg0/lv0 to 523264 (4k) blocks.
The filesystem on /dev/vg0/lv0 is now 523264 (4k) blocks long.
```

## 論理ボリュームの再マウント

```terminal
$ sudo mount /dev/vg0/lv0 /export
```

## 拡張後の状態の確認

```terminal
$ df -h
Filesystem                         Size  Used Avail Use% Mounted on
  :
  :
/dev/mapper/vg0-lv0                1.9G   24K  1.8G   1% /export
  :
  :
$ lsblk -f
NAME                      FSTYPE      FSVER    LABEL UUID                                   FSAVAIL FSUSE% MOUNTPOINTS
  :
  :
sdb                       LVM2_member LVM2 001       ******-****-****-****-****-****-******                
└─vg0-lv0                 ext4        1.0            ********-****-****-****-************      1.8G     0% /export
  :
  :
```


# さいごに

かんたんでしたね