Disk image adalah file yang berisi data dari sebuah disk virtual, sering digunakan untuk simulasi lingkungan komputasi dalam virtualisasi. Dalam konteks QEMU (Quick Emulator), dua format disk image yang paling umum digunakan adalah QCOW2 (QEMU Copy-On-Write version 2).

Salah satu konsep penting dalam disk image adalah virtual size. Virtual size mengacu pada ukuran total kapasitas disk yang terlihat oleh sistem operasi tamu (guest OS). Virtual size adalah batas maksimal ruang penyimpanan yang dapat digunakan oleh guest OS, meskipun file disk image itu sendiri mungkin tidak menggunakan semua ruang tersebut di host.

Menampilkan Informasi Virtual Size dan Actual Size

Untuk menampilkan informasi tentang virtual size dan actual size dari disk image, kita dapat menggunakan perintah qemu-img yang merupakan utilitas bawaan QEMU.

qemu-img info ubuntu.img

Output:

image: ubuntu.img
file format: qcow2
virtual size: 3.5 GiB (3758096384 bytes)
disk size: 582 MiB
cluster_size: 65536
Format specific information:
    compat: 1.1
    compression type: zlib
    lazy refcounts: false
    refcount bits: 16
    corrupt: false
    extended l2: false
  • virtual size: kapasitas maksimum disk yang terlihat oleh guest OS, 3.5GB.
  • disk size: ukuran aktual file disk image di host, 582MB.

Contoh lain, disk image Rocky Linux:

image: rocky.qcow2
file format: qcow2
virtual size: 10 GiB (10737418240 bytes)
disk size: 582 MiB
cluster_size: 65536
Format specific information:
    compat: 1.1
    compression type: zlib
    lazy refcounts: false
    refcount bits: 16
    corrupt: false
    extended l2: false

Menaikkan Kapasitas Disk Image (Resize)

Jika memerlukan lebih banyak ruang untuk guest OS, kita dapat meningkatkan virtual size disk image menggunakan perintah qemu-img resize. Proses ini hanya menambahkan ruang kosong; tetap perlu memperluas partisi di dalam guest OS setelahnya.

Menaikkan kapasitas disk menjadi 30GB:

qemu-img resize ubuntu.img 30G

Output:

Image resized.

Verifikasi hasil resize:

qemu-img info ubuntu.img

Output:

image: ubuntu.img
file format: qcow2
virtual size: 30 GiB (32212254720 bytes)
disk size: 582 MiB
cluster_size: 65536
Format specific information:
    compat: 1.1
    compression type: zlib
    lazy refcounts: false
    refcount bits: 16
    corrupt: false
    extended l2: false

Memperluas Partisi

Masuk ke guest OS atau virtual machine, lalu melihat partisi yang ada beserta kapasitasnya.

lsblk

Output:

NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
vda     253:0    0   30G  0 disk 
├─vda1  253:1    0  2.5G  0 part /
├─vda14 253:14   0    4M  0 part 
├─vda15 253:15   0  106M  0 part /boot/efi
└─vda16 259:0    0  913M  0 part /boot

Dalam contoh ini, vda memiliki ukuran 30GB, sementara ukuran partisi vda1 hanya 2.5G. Ruang disk yang tersisa mau dialokasikan seluruhnya ke partisi vda1.

Memperluas partisi vda1:

growpart /dev/vda 1

Output:

CHANGED: partition=1 start=2099200 old: size=5240799 end=7339998 new: size=60815327 end=62914526

Lalu resize2fs:

resize2fs /dev/vda1

Output:

resize2fs 1.47.0 (5-Feb-2023)
Filesystem at /dev/vda1 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 4
The filesystem on /dev/vda1 is now 7601915 (4k) blocks long.

Verifikasi hasilnya dengan lsblk atau df -h:

root@ubuntu:~# lsblk 
NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
vda     253:0    0   30G  0 disk 
├─vda1  253:1    0   29G  0 part /
├─vda14 253:14   0    4M  0 part 
├─vda15 253:15   0  106M  0 part /boot/efi
└─vda16 259:0    0  913M  0 part /boot


root@ubuntu:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
tmpfs            97M  1.0M   96M   2% /run
/dev/vda1        29G  1.6G   27G   6% /
tmpfs           481M     0  481M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
/dev/vda16      881M   61M  758M   8% /boot
/dev/vda15      105M  6.1M   99M   6% /boot/efi
tmpfs            97M   12K   97M   1% /run/user/0

Ukuran disk dan partisi sudah berhasil dinaikkan kapasitasnya.