KVM (libvirt) 仮想環境のゲスト VM (Alma Linux) の構成変更 (仮想DISK追加)

ゲスト VM に仮想 DISK を追加

ゲスト VM の「Alma Linux」に新規の仮想ディスクを追加する。追加する仮想ディスクは以下の設定とする。

仮想ディスクイメージ形式QCOW2
サイズ5GB
ホスト OS 仮想ディスク設定
ディスクデバイス名/dev/vdb
パーティションテーブルMBR (msdos)
パーティションタイプprimary (全領域)
LVM有効
ゲスト VM パーティション設定
Physical Volume 対象/dev/vdb1
Volume Group 名vg1
Logical Volume 名root
File Systemxfs
ゲスト VM LVM設定

ホスト OS 側での仮想ディスク作成

ホスト OS となる Ubuntu Desktop 側で仮想ディスクのイメージファイルを作成する。
イメージファイル形式はスナップショット等が利用可能な「qcow2」で作成する。

$ cd /var/lib/libvirt/images
$ sudo qemu-img create -f qcow2 VM-01-disk1.qcow2 5G
Formatting 'VM-01-disk1.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=5368709120 lazy_refcounts=off refcount_bits=16

$ sudo chmod 600 VM-01-disk1.qcow2
$ sudo chown libvirt-qemu:kvm VM-01-disk1.qcow2

作成された仮想ディスクのイメージファイル情報を確認する。

$ sudo qemu-img info VM-01-disk1.qcow2
image: VM-01-disk1.qcow2
file format: qcow2
virtual size: 5 GiB (5368709120 bytes)
disk size: 17 KiB
cluster_size: 65536
Format specific information:
    compat: 1.1
    compression type: zlib
    lazy refcounts: false
    refcount bits: 16
    corrupt: false
    extended l2: false

ゲスト VM に仮想ディスクの追加

ゲスト VM に作成した仮想ディスクを追加する。

$ virsh
virsh # attach-disk --domain VM-01 --source /var/lib/libvirt/images/VM-01-disk1.qcow2 --subdriver qcow2 --target vdb --persistent
Disk attached successfully

virsh # domblklist  --domain VM-01
 Target   Source
--------------------------------------------------------
 vda      /var/lib/libvirt/images/VM-01.qcow2
 vdb      /var/lib/libvirt/images/VM-01-disk1.qcow2

virsh # domblkinfo --domain VM-01 --all
 Target   Capacity      Allocation   Physical
--------------------------------------------------
 vda      21474836480   2534310912   21478375424
 vdb      5368709120    17408        196688

ゲスト VM から仮想ディスクを取り外す場合は以下を実行する。

virsh # detach-disk --domain VM-01 --target vdb --persistent
Disk detached successfully

ゲスト VM で仮想ディスクのボリューム作成

ゲスト VM を起動し、 SSH 等でゲスト VM に接続する。ゲスト VM 上で追加された仮想ディスクを利用可能な状態にする。

[root@vm-01 ~]# lsblk
NAME               MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
vda                252:0    0  20G  0 disk
├─vda1             252:1    0   1G  0 part /boot
└─vda2             252:2    0  19G  0 part
  ├─almalinux-root 253:0    0  18G  0 lvm  /
  └─almalinux-swap 253:1    0   1G  0 lvm  [SWAP]
vdb                252:16   0   5G  0 disk

[root@vm-01 ~]# fdisk -l /dev/vdb
Disk /dev/vdb: 5 GiB, 5368709120 bytes, 10485760 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

新規 Primary パーティションを作成する。この時、 LVM を有効にする。

[root@vm-01 ~]# parted /dev/vdb
GNU Parted 3.5
Using /dev/vdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel msdos
(parted) mkpart primary 0% 100%
(parted) set 1 lvm on
(parted) print
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  5369MB  5368MB  primary               lvm

(parted) quit

作成したパーティションを確認する。

[root@vm-01 ~]# lsblk
NAME               MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
vda                252:0    0  20G  0 disk
├─vda1             252:1    0   1G  0 part /boot
└─vda2             252:2    0  19G  0 part
  ├─almalinux-root 253:0    0  18G  0 lvm  /
  └─almalinux-swap 253:1    0   1G  0 lvm  [SWAP]
vdb                252:16   0   5G  0 disk
└─vdb1             252:17   0   5G  0 part

[root@vm-01 ~]# fdisk -l /dev/vdb
Disk /dev/vdb: 5 GiB, 5368709120 bytes, 10485760 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x075adb9c

Device     Boot Start      End  Sectors Size Id Type
/dev/vdb1        2048 10485759 10483712   5G 8e Linux LVM

次に LVM を作成する。

[root@vm-01 ~]# pvcreate /dev/vdb1
  Physical volume "/dev/vdb1" successfully created.

[root@vm-01 ~]# vgcreate vg1 /dev/vdb1
  Volume group "vg1" successfully created

[root@vm-01 ~]# lvcreate --name root -l 100%FREE vg1
  Logical volume "root" created.

作成した LVM の構成を確認する。

[root@vm-01 ~]# lsblk
NAME               MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
vda                252:0    0  20G  0 disk
├─vda1             252:1    0   1G  0 part /boot
└─vda2             252:2    0  19G  0 part
  ├─almalinux-root 253:0    0  18G  0 lvm  /
  └─almalinux-swap 253:1    0   1G  0 lvm  [SWAP]
vdb                252:16   0   5G  0 disk
└─vdb1             252:17   0   5G  0 part
  └─vg1-root       253:2    0   5G  0 lvm

[root@vm-01 ~]# pvdisplay /dev/vdb1
  --- Physical volume ---
  PV Name               /dev/vdb1
  VG Name               vg1
  PV Size               <5.00 GiB / not usable 3.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              1279
  Free PE               0
  Allocated PE          1279
  PV UUID               4JyVQQ-bpIR-TtAk-FtK9-xauL-LZnq-DabBiY

[root@vm-01 ~]# vgdisplay vg1
  --- Volume group ---
  VG Name               vg1
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  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       1279 / <5.00 GiB
  Free  PE / Size       0 / 0
  VG UUID               inPeu0-KKdN-GeNb-p1vx-InWt-ap83-xTAJE5

[root@vm-01 ~]# lvdisplay --devices /dev/vdb1
  --- Logical volume ---
  LV Path                /dev/vg1/root
  LV Name                root
  VG Name                vg1
  LV UUID                GuCJSl-43Or-cNmP-unj0-qScW-o8zF-cHTgUZ
  LV Write Access        read/write
  LV Creation host, time vm-01.net.home, 2024-02-25 20:40:07 +0900
  LV Status              available
  # open                 2
  LV Size                <5.00 GiB
  Current LE             1279
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:2

作成した LVM のボリューム「/dev/mapper/vg1-root」を「xfs」でフォーマットする。

[root@vm-01 ~]# ll /dev/mapper/
total 0
lrwxrwxrwx. 1 root root       7 Mar  3 18:02 almalinux-root -> ../dm-0
lrwxrwxrwx. 1 root root       7 Mar  3 18:02 almalinux-swap -> ../dm-1
crw-------. 1 root root 10, 236 Mar  3 18:02 control
lrwxrwxrwx. 1 root root       7 Mar  3 18:02 vg1-root -> ../dm-2

[root@vm-01 ~]# dmsetup table
almalinux-root: 0 37740544 linear 252:2 2048
almalinux-swap: 0 2097152 linear 252:2 37742592
vg1-root: 0 10477568 linear 252:17 2048

[root@vm-01 ~]# mkfs.xfs /dev/mapper/vg1-root
meta-data=/dev/mapper/vg1-root   isize=512    agcount=4, agsize=327424 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1    bigtime=1 inobtcount=1 nrext64=0
data     =                       bsize=4096   blocks=1309696, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=16384, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
Discarding blocks...Done.

起動時にマウントするように「fstab」に追記する。

[root@vm-01 ~]# mkdir /mnt/vg1
[root@vm-01 ~]# cat /etc/fstab
/dev/mapper/almalinux-root /                       xfs     defaults        0 0
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /boot    xfs     defaults        0 0
/dev/mapper/almalinux-swap none                    swap    defaults        0 0
/dev/mapper/vg1-root /mnt/vg1                      xfs     defaults        0 0

[root@vm-01 ~]# systemctl daemon-reload
[root@vm-01 ~]# mount -a
[root@vm-01 ~]# df -hT
Filesystem                 Type      Size  Used Avail Use% Mounted on
devtmpfs                   devtmpfs  4.0M     0  4.0M   0% /dev
tmpfs                      tmpfs     379M   48M  332M  13% /dev/shm
tmpfs                      tmpfs     152M  3.2M  149M   3% /run
/dev/mapper/almalinux-root xfs        18G  3.2G   15G  18% /
/dev/vda1                  xfs       960M  275M  686M  29% /boot
tmpfs                      tmpfs      76M     0   76M   0% /run/user/0
/dev/mapper/vg1-root       xfs       5.0G   68M  4.9G   2% /mnt/vg1

参考URL
How to add disk image to KVM virtual machine with virsh command
論理ボリュームマネージャー(Linux LVM)について調査してみました
Debian11 で Libvirt(KVM)