仮想サーバで作ったディスクが容量不足!の話

コマンド一発で仮想サーバは作ります。
で、こんなことありませんか?

容量が足りない… ってか指定が少なすぎた…

virt-install \
--name ubuntu_test \
--ram 4096 \
--disk path=/var/lib/libvirt/ubuntu_test.img,size=20 \
--vcpus 2 \
--os-variant ubuntu22.04 \
--network bridge=br0 \
--graphics none \
--console pty,target_type=serial \
--location ubuntu-22.04.1-live-server-amd64.iso,kernel=casper/vmlinuz,initrd=casper/initrd \
--extra-args 'console=ttyS0,115200n8 serial'

いつも通りの汎用のコマンドをコピペしたのでしょうがない

普段は20GBで十分だったのですがdockerで激しめに使う必要があったので200GBは欲しかったんですよね。

これを作成後に拡張させる手順をまとめておきます

環境

wataru@gitlab:~$ virsh version
Compiled against library: libvirt 8.0.0
Using library: libvirt 8.0.0
Using API: QEMU 8.0.0
Running hypervisor: QEMU 6.2.0

容量を増やす冴えた方法

ではではどの様に拡張するか!

ディスクは/var/lib/libvirt/ubuntu_test.imgに定義しています。
imgの拡張子をつけてしまって書式がわからないのでしょうがないです。
まずはそちらを調べます、調べるとqcow2でした。
今回はvirt-managerのストレージ管理から確認しました。

ディスク容量をアップするのはコマンド一発です。

root@gitlab:/var/lib/libvirt# sudo qemu-img resize ubuntu_test.img +180G
Image resized.

今回は20GBで定義していたもを200GBにしました。

ここでは注意です、ちゃんとマウントしている仮想サーバは停止してください。エラーになります。

あとはディスクのコピー後と同じ様に拡張すればOKです

終いに

今回は作成した後にしまった!という時の復帰方法を書いておきます

メモ

記事参照だけではアレなので実行したコマンドを残しておきます

拡張前の状態を確認します

wataru@ubuntutest:~$ sudo parted /dev/vda
GNU Parted 3.4
Using /dev/vda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p                                                                
Warning: Not all of the space available to /dev/vda appears to be used, you can fix the GPT to use all of the space (an extra 377487360 blocks) or continue with the current setting? 
Fix/Ignore? i                                                             
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 215GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  2097kB  1049kB                     bios_grub
 2      2097kB  1904MB  1902MB  ext4
 3      1904MB  21.5GB  19.6GB

パーティションを拡張します

(parted) resizepart 3 215GB                                               
(parted) p                                                                
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 215GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  2097kB  1049kB                     bios_grub
 2      2097kB  1904MB  1902MB  ext4
 3      1904MB  215GB   213GB

pvを拡張します

wataru@ubuntutest:~$ sudo pvdisplay /dev/vda3
  --- Physical volume ---
  PV Name               /dev/vda3
  VG Name               ubuntu-vg
  PV Size               <18.23 GiB / not usable 3.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              4665
  Free PE               2105
  Allocated PE          2560
  PV UUID               eDOtIf-wDZv-ozT7-IWH5-zVQF-wGyZ-5E2g7V

wataru@ubuntutest:~$ sudo pvresize /dev/vda3
  Physical volume "/dev/vda3" changed
  1 physical volume(s) resized or updated / 0 physical volume(s) not resized
wataru@ubuntutest:~$ sudo pvdisplay /dev/vda3
  --- Physical volume ---
  PV Name               /dev/vda3
  VG Name               ubuntu-vg
  PV Size               <198.23 GiB / not usable 2.98 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              50745
  Free PE               48185
  Allocated PE          2560
  PV UUID               eDOtIf-wDZv-ozT7-IWH5-zVQF-wGyZ-5E2g7V

lvを拡張します

wataru@ubuntutest:~$ sudo lvdisplay
  --- Logical volume ---
  LV Path                /dev/ubuntu-vg/ubuntu-lv
  LV Name                ubuntu-lv
  VG Name                ubuntu-vg
  LV UUID                KAWM0j-45Fw-ytH5-LpM3-Kn90-9QMe-yZG9F2
  LV Write Access        read/write
  LV Creation host, time ubuntu-server, 2022-12-10 08:36:07 +0000
  LV Status              available
  # open                 1
  LV Size                10.00 GiB
  Current LE             2560
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
   
wataru@ubuntutest:~$ sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
  Size of logical volume ubuntu-vg/ubuntu-lv changed from 10.00 GiB (2560 extents) to 198.22 GiB (50745 extents).
  Logical volume ubuntu-vg/ubuntu-lv successfully resized.
wataru@ubuntutest:~$ sudo lvdisplay
  --- Logical volume ---
  LV Path                /dev/ubuntu-vg/ubuntu-lv
  LV Name                ubuntu-lv
  VG Name                ubuntu-vg
  LV UUID                KAWM0j-45Fw-ytH5-LpM3-Kn90-9QMe-yZG9F2
  LV Write Access        read/write
  LV Creation host, time ubuntu-server, 2022-12-10 08:36:07 +0000
  LV Status              available
  # open                 1
  LV Size                198.22 GiB
  Current LE             50745
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

lvサイズを最大にします

wataru@ubuntutest:~$ df -h
Filesystem                         Size  Used Avail Use% Mounted on
tmpfs                              393M  896K  392M   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv  9.8G  9.1G  233M  98% /
tmpfs                              2.0G     0  2.0G   0% /dev/shm
tmpfs                              5.0M     0  5.0M   0% /run/lock
/dev/vda2                          1.8G  127M  1.5G   8% /boot
tmpfs                              393M  4.0K  393M   1% /run/user/1000
wataru@ubuntutest:~$ sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
resize2fs 1.46.5 (30-Dec-2021)
Filesystem at /dev/mapper/ubuntu--vg-ubuntu--lv is mounted on /; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 25
The filesystem on /dev/mapper/ubuntu--vg-ubuntu--lv is now 51962880 (4k) blocks long.

wataru@ubuntutest:~$ df -h
Filesystem                         Size  Used Avail Use% Mounted on
tmpfs                              393M  896K  392M   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv  195G  9.1G  178G   5% /
tmpfs                              2.0G     0  2.0G   0% /dev/shm
tmpfs                              5.0M     0  5.0M   0% /run/lock
/dev/vda2                          1.8G  127M  1.5G   8% /boot
tmpfs                              393M  4.0K  393M   1% /run/user/1000