How to use the command qemu-img (with examples)
qemu-img is a versatile command-line utility designed to create and manipulate virtual HDD images for Quick Emulator (QEMU). This tool is particularly useful for handling tasks such as creating new disk images, converting between different virtual disk formats, resizing existing disk images, and more. Whether you are setting up virtual machines for testing, development, or production, qemu-img provides a key role in managing the underlying disk images required by your virtual systems.
Use case 1: Create a disk image with a specific size (in gigabytes)
Code:
qemu-img create image_name.img 10G
Motivation:
Creating a virtual disk image with a specific size is often the very first step when setting up a new virtual machine. This disk image essentially acts as the hard drive for the virtual machine, and defining its size is crucial as it will determine the amount of data storage capacity available to the virtual machine. For example, if you plan on running a lightweight Linux server that needs minimal disk space, a smaller image may suffice, whereas a development environment might require a larger disk image.
Explanation:
qemu-img create
: This command is used to initiate the creation of a new virtual disk image file.image_name.img
: This is the name of the disk image file that will be created. You can choose any valid filename.10G
: This specifies the size of the disk image. TheG
stands for gigabytes, and10
indicates the size in this case is 10 gigabytes.
Example output:
Formatting 'image_name.img', fmt=raw size=10737418240
This output confirms that a new disk image named image_name.img
has been successfully created with a size of 10 gigabytes, formatted in raw mode.
Use case 2: Show information about a disk image
Code:
qemu-img info image_name.img
Motivation:
Having accurate information about a disk image is vital for both troubleshooting and management tasks. qemu-img info provides essential data about an image, such as its virtual size, actual disk size, format, and more. This command can assist in confirming that a disk image meets specific requirements before attaching it to a virtual machine, and it can help in diagnosing potential problems.
Explanation:
qemu-img info
: This invokes the command to display detailed information about a specific disk image.image_name.img
: Here, you specify the disk image for which you would like to obtain information. Replaceimage_name.img
with the actual name of your image file.
Example output:
image: image_name.img
file format: raw
virtual size: 10G (10737418240 bytes)
disk size: 0
This output reveals key details about image_name.img
, including its format (raw), virtual size (10G), and other attributes.
Use case 3: Increase or decrease image size
Code:
qemu-img resize image_name.img 15G
Motivation:
Resizing a disk image becomes necessary when the storage demands of the virtual machine change. For instance, suppose a virtual system accumulates data over time beyond the initially allocated disk space. In that case, increasing the disk size will allow additional data to be stored. Conversely, decreasing the size may be appropriate if the virtual machine no longer requires as much space, thereby conserving storage resources.
Explanation:
qemu-img resize
: This command allows the user to alter the size of an existing disk image.image_name.img
: This is the target disk image file whose size you want to modify.15G
: This size specifies the new total size of the disk image after resizing, set to 15 gigabytes in this example.
Example output:
Image resized.
The output indicates that image_name.img
has been successfully resized to the desired size of 15 gigabytes.
Use case 4: Dump the allocation state of every sector of the specified disk image
Code:
qemu-img map image_name.img
Motivation:
Understanding how space is used within a disk image can provide insights into data allocation and help identify areas for optimization. qemu-img map reveals the allocation state of each sector, showing which parts of the image are occupied by data and which are free. This information is beneficial for optimizing storage and diagnosing space-related issues within virtual machines.
Explanation:
qemu-img map
: The command is used to show the mapping of allocated blocks within the disk image.image_name.img
: Specifies the disk image to be examined for its sector allocation state.
Example output:
Offset Length Mapped to File
0x000000000000 0x000000400000 0x000000400000 image_name.img
This output provides details about the disk image’s sectors, indicating offsets, lengths, and how they map to the file.
Use case 5: Convert a VMware .vmdk disk image to a KVM .qcow2 disk image
Code:
qemu-img convert -f vmdk -O qcow2 path/to/file/foo.vmdk path/to/file/foo.qcow2
Motivation:
In environments where virtual machines need to be moved or shared across different hypervisors, converting disk image formats becomes crucial. When shifting from VMware to KVM (Kernel-based Virtual Machine), converting a .vmdk
file to a .qcow2
file format is necessary for compatibility. qemu-img convert facilitates this transition, ensuring the VM can run in a new environment without compatibility issues.
Explanation:
qemu-img convert
: This command is used to change the format of a disk image file from one type to another.-f vmdk
: This flag indicates that the source file is in the VMware Disk format (.vmdk
).-O qcow2
: This specifiesqcow2
as the output format, suitable for KVM.path/to/file/foo.vmdk
: This argument defines the source file path and name of the disk image to be converted.path/to/file/foo.qcow2
: This specifies the destination path and name for the converted disk image.
Example output:
Formatting 'path/to/file/foo.qcow2', fmt=qcow2 size=10737418240
This output confirms that foo.vmdk
has been successfully converted to foo.qcow2
in the qcow2
format.
Conclusion:
qemu-img proves to be an essential tool in the realm of virtual machine management, offering a set of powerful command-line utilities to handle virtual disk images effectively. From creating and resizing images to converting formats and inspecting disk properties, these functionalities support robust virtualization workflows. By harnessing qemu-img, IT professionals and developers can manage virtual infrastructures efficiently, ensuring flexibility across diverse virtualization environments.