VMware上のUbuntu 22.04 ファイルシステム拡張

VMwareでUbuntuをデフォルトで作ると、20GBのハードディスクとなり、更に「/」には、10GBの論理ボリュームだけがマウントされ、すぐに足りなくなる。ここで、その拡張方法を記載しておく。

:::note info
Ubuntu20までは、LVMを使っておらず、「/dev/sda5」が「/」に直接マウントしているが、Ubuntu22デフォルトではLVMを使い始めているようだ。
:::

# VMwareからハードディスクサイズ拡張
これは一番簡単。Ubuntuが起動されてない状態で、仮想マシン設定でハードディスクを選んで、「展開」ボタンから好きなサイズに拡張できる。

# Ubuntuにハードディスクのサイズ変更を認識させる
```shell
~$ sudo sh -c "echo 1 > /sys/class/block/sda/device/rescan"
```
# パーティション拡張
partedを利用して、拡張されたハードディスクに合わせてパーティションを拡張させる。
```shell
~$ sudo parted /dev/sda
(parted)
```
partedに入ったので、「print free」でまず状況確認。
```shell
(parted) print free
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sda: 40GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name  Flags
        17.4kB  1049kB  1031kB  Free Space
 1      1049kB  2097kB  1049kB                     bios_grub
 2      2097kB  1904MB  1902MB  ext4
 3      1904MB    21GB    19GB
          21GB    41GB    20GB  Free Space
```
Number列のNo.3は現在の「/dev/sda3」である。後ろの「Free Space」は拡張されたハードディスクの空き領域。
```shell
(parted) resizepart 3
End?  [21GB]? 100%    <- 100%は入力。
(parted)
```
もう一回「print free」で確認すると、「Free Space」が消え、No.3のサイズが拡張されたはず。
「q」でpartedを抜ける。
# 物理ボリュームの拡張
pvdisplayで一度現状確認。
```shell
~$ sudo pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda3
  VG Name               ubuntu-vg
  PV Size               <18.23 GiB / not usable 3.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              4665
  Free PE               0
  Allocated PE          4665
  PV UUID               TOLx1p-N5Ma-0vMa-59hz-0lBO-TyXz-Q4I7u8
```
「PV Size」のところは現在のサイズ。
```shell
~$ sudo pvresize /dev/sda3
  Physical volume "/dev/sda3" changed
  1 physical volume(s) resized or updated / 0 physical volume(s) not resized
```
「/dev/sda3」を最大に拡張された。
もう一回pvdisplayで確認する。
```shell
~$ sudo pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda3
  VG Name               ubuntu-vg
  PV Size               <38.23 GiB / not usable 2.98 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              25145
  Free PE               20480
  Allocated PE          4665
  PV UUID               TOLx1p-N5Ma-0vMa-59hz-0lBO-TyXz-Q4I7u8
```
「PV Size」が拡張されたね。
# Volume Group拡張不要
物理ボリューム「/dev/sda3」は既にVolume Group「ubuntu-vg」の構成となっているため、PV拡張＝VG拡張。なので、Volume Group拡張は不要。
念のため、vgdisplayで状況確認。
```shell
~$ sudo vgdisplay
  --- Volume group ---
  VG Name               ubuntu-vg
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               38.22 GiB
  PE Size               4.00 MiB
  Total PE              8145
  Alloc PE / Size       4665 / 18.22 GiB
  Free  PE / Size       4480 / 20.00 GiB
  VG UUID               g939fE-NWSB-tuKX-5IH3-6nnu-Ay20-5N1HSX
```
「Free」空間あるね。

# Logical Volume拡張
lvdisplayで状況確認
```shell
$ sudo lvdisplay
  --- Logical volume ---
  LV Path                /dev/ubuntu-vg/ubuntu-lv
  LV Name                ubuntu-lv
  VG Name                ubuntu-vg
  LV UUID                KmJZUz-FFaR-1dWk-4Mkg-OmTw-gwmN-PTmZQ6
  LV Write Access        read/write
  LV Creation host, time ubuntu-server, 2022-07-25 11:15:42 +0900
  LV Status              available
  # open                 1
  LV Size                18.22 GiB
  Current LE             4665
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
```
拡張させる。
```shell
~$ sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
  Size of logical volume ubuntu-vg/ubuntu-lv changed from 18.22 GiB (4665 extents) to 38.22 GiB (8145 extents).
  Logical volume ubuntu-vg/ubuntu-lv successfully resized.
```

# ファイルシステム拡張
```shell
~$ sudo resize2fs /dev/ubuntu-vg/ubuntu-lv
resize2fs 1.46.5 (30-Dec-2021)
Filesystem at /dev/ubuntu-vg/ubuntu-lv is mounted on /; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 13
The filesystem on /dev/ubuntu-vg/ubuntu-lv is now 9748480 (4k) blocks long.
```
:::note info
ファイルシステムがxfsの場合、`sudo xfs_growfs /dev/rhel/root`のように、`resize2fs`ではなく、`xfs_growfs`を使うこと。
:::
# 最後に
```shell
~$ df -h
Filesystem                         Size  Used Avail Use% Mounted on
tmpfs                              792M  1.6M  791M   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv   40G  8.2G   32G  19% /
tmpfs                              3.9G     0  3.9G   0% /dev/shm
tmpfs                              5.0M     0  5.0M   0% /run/lock
/dev/sda2                          1.8G  247M  1.4G  16% /boot
tmpfs                              792M  4.0K  792M   1% /run/user/1000
```
めでたしめでたし、「/」が使える容量が想定通り増えた！