Skip to main content
  1. Posts/

QEMU-IMG Cheatsheet

·4 mins·
libvirt kvm libvirt
Table of Contents

Berikut merupakan cheatsheet atau referensi untuk semua perintah terkait qemu-img yang dapat digunakan berdasarkan syntax yang tersedia.

$ qemu-img  --help
qemu-img version 6.2.0 (Debian 1:6.2+dfsg-2ubuntu6.15)
Copyright (c) 2003-2021 Fabrice Bellard and the QEMU Project developers
usage: qemu-img [standard options] command [command options]
QEMU disk image utility

    '-h', '--help'       display this help and exit
    '-V', '--version'    output version information and exit
    '-T', '--trace'      [[enable=]<pattern>][,events=<file>][,file=<file>]
                         specify tracing options

Command syntax:
  amend [--object objectdef] [--image-opts] [-p] [-q] [-f fmt] [-t cache] [--force] -o options filename
  bench [-c count] [-d depth] [-f fmt] [--flush-interval=flush_interval] [-i aio] [-n] [--no-drain] [-o offset] [--pattern=pattern] [-q] [-s buffer_size] [-S step_size] [-t cache] [-w] [-U] filename
  bitmap (--merge SOURCE | --add | --remove | --clear | --enable | --disable)... [-b source_file [-F source_fmt]] [-g granularity] [--object objectdef] [--image-opts | -f fmt] filename bitmap
  check [--object objectdef] [--image-opts] [-q] [-f fmt] [--output=ofmt] [-r [leaks | all]] [-T src_cache] [-U] filename
  commit [--object objectdef] [--image-opts] [-q] [-f fmt] [-t cache] [-b base] [-r rate_limit] [-d] [-p] filename
  compare [--object objectdef] [--image-opts] [-f fmt] [-F fmt] [-T src_cache] [-p] [-q] [-s] [-U] filename1 filename2
  convert [--object objectdef] [--image-opts] [--target-image-opts] [--target-is-zero] [--bitmaps] [-U] [-C] [-c] [-p] [-q] [-n] [-f fmt] [-t cache] [-T src_cache] [-O output_fmt] [-B backing_file [-F backing_fmt]] [-o options] [-l snapshot_param] [-S sparse_size] [-r rate_limit] [-m num_coroutines] [-W] [--salvage] filename [filename2 [...]] output_filename
  create [--object objectdef] [-q] [-f fmt] [-b backing_file] [-F backing_fmt] [-u] [-o options] filename [size]
  dd [--image-opts] [-U] [-f fmt] [-O output_fmt] [bs=block_size] [count=blocks] [skip=blocks] if=input of=output
  info [--object objectdef] [--image-opts] [-f fmt] [--output=ofmt] [--backing-chain] [-U] filename
  map [--object objectdef] [--image-opts] [-f fmt] [--start-offset=offset] [--max-length=len] [--output=ofmt] [-U] filename
  measure [--output=ofmt] [-O output_fmt] [-o options] [--size N | [--object objectdef] [--image-opts] [-f fmt] [-l snapshot_param] filename]
  snapshot [--object objectdef] [--image-opts] [-U] [-q] [-l | -a snapshot | -c snapshot | -d snapshot] filename
  rebase [--object objectdef] [--image-opts] [-U] [-q] [-f fmt] [-t cache] [-T src_cache] [-p] [-u] -b backing_file [-F backing_fmt] filename
  resize [--object objectdef] [--image-opts] [-f fmt] [--preallocation=prealloc] [-q] [--shrink] filename [+ | -]size

Get Output in JSON
#

Untuk mengubah format output menjadi json tambahkan parameter --output=json

$ qemu-img info cirros-0.6.2-x86_64-disk.img --output=json
{
    "virtual-size": 117440512,
    "filename": "cirros-0.6.2-x86_64-disk.img",
    "cluster-size": 65536,
    "format": "qcow2",
    "actual-size": 50466816,
    "format-specific": {
        "type": "qcow2",
        "data": {
            "compat": "1.1",
            "compression-type": "zlib",
            "lazy-refcounts": false,
            "refcount-bits": 16,
            "corrupt": false,
            "extended-l2": false
        }
    },
    "dirty-flag": false
}

Get Full Chain
#

Untuk mengetahui dimana letak backing file berada.

qemu-img info --backing-chain filename

Convert Image
#

Anda dapat mengonversi image qcow2 ke format raw, qed, vdi, vmdk, vhd lalu menjalankannya di hypervisor yang mendukung format image tersebut.

Image format Argument to qemu-img
QCOW2 (KVM, Xen) qcow2
QED (KVM) qed
raw raw
VDI (VirtualBox) vdi
VHD (Hyper-V) vpc
VMDK (VMware) vmdk

Contoh perintah untuk mengonversi image qcow2 ke format vmdk

qemu-img convert -f qcow2 -O vmdk filename.qcow2 output_filename.vmdk

Resize/Expand Disk Image
#

Untuk mengubah size disk image.

qemu-img resize -f fmt filename [+ | -]size

Gunakan perintah resize untuk memperbesar disk image. Apabila ingin memperkecil disk image, Anda perlu menggunakan tool untuk mengelola partisi di dalam VM agar ukuran partisi bisa dikurangi lalu setelahnya Anda bisa menjalankan perintah resize untuk memperkecil disk image.

Selalu utamakan backup sebelum melakukan resize karena kegagalan dalam proses resize dapat mengakibatkan hilangnya data.

Merge Image Into Its Backing File - Commit
#

Katakanlah Anda memiliki disk image bernama head.qcow2 dan base.qcow2 sebagai backing file. Jika Anda ingin menggabungkan keduanya, gunakan perintah commit agar perubahan pada head.qcow2 dapat tersimpan di base.qcow2

flowchart 561572("head.qcow2") --> 429380("commit") 429380 --> 482324("base.qcow2")
qemu-img commit head.qcow2

Change Path Of Backing File
#

Jika Anda memindahkan backing file base.qcow2 ke path lain, Gunakan perintah rebase pada head.qcow2 untuk mengubah path backing file agar menunjuk ke lokasi yang baru.

qemu-img rebase -f qcow2 -u -b /path/to/base.qcow2 -F qcow2 head.qcow2

Perintah rebase hanya mendukung disk image dengan format qcow2 saja.

Collapse/Flatten All Images
#

Jika perintah commit untuk menggabungkan perubahan pada head.qcow2 ke backing file base.qcow2. Lalu bagaimana jika Anda ingin membuat head.qcow2 sebagai disk image yang utuh tanpa backing file ?

Untuk melakukan hal tersebut Anda bisa menggunakan perintah virsh blockpull

virsh blockpull domname vda --wait --verbose

Internal Snapshots
#

List Snapshots

qemu-img snapshot -l filename

Create Snapshot

qemu-img snapshot -c snapshot1 filename

Restore (Apply) Snapshot

qemu-img snapshot -a snapshot1 filename

Delete Snapshot

qemu-img snapshot -d snapshot1 filename

Related

KVM Hypervisor Features
·1 min
libvirt kvm libvirt
Disable Virtualization Engine in Libvirt
·2 mins
libvirt kvm libvirt
Error: Failed to Attach Device, No More Available PCI Slots
·2 mins
libvirt kvm libvirt
Block I/O Tuning in Libvirt
·1 min
libvirt kvm libvirt
Direct Kernel Boot in Libvirt
·2 mins
libvirt libvirt kvm
Using Tunnel in Libvirt
·2 mins
libvirt libvirt kvm