]> git.proxmox.com Git - mirror_qemu.git/blame - qemu-img.texi
vfio: fix mapping of MSIX bar
[mirror_qemu.git] / qemu-img.texi
CommitLineData
acd935ef
FB
1@example
2@c man begin SYNOPSIS
3usage: qemu-img command [command options]
4@c man end
5@end example
6
48467328
KW
7@c man begin DESCRIPTION
8qemu-img allows you to create, convert and modify images offline. It can handle
9all image formats supported by QEMU.
10
11@b{Warning:} Never use qemu-img to modify images in use by a running virtual
12machine or any other process; this may destroy the image. Also, be aware that
13querying an image that is being modified by another process may encounter
14inconsistent state.
15@c man end
16
acd935ef
FB
17@c man begin OPTIONS
18
19The following commands are supported:
153859be
SB
20
21@include qemu-img-cmds.texi
acd935ef
FB
22
23Command parameters:
24@table @var
25@item filename
26 is a disk image filename
5fafdf24 27@item fmt
f932c040
KW
28is the disk image format. It is guessed automatically in most cases. See below
29for a description of the supported disk formats.
acd935ef 30
e5357560
KC
31@item --backing-chain
32will enumerate information about backing files in a disk image chain. Refer
33below for further description.
34
5fafdf24 35@item size
eff44266
KW
36is the disk image size in bytes. Optional suffixes @code{k} or @code{K}
37(kilobyte, 1024) @code{M} (megabyte, 1024k) and @code{G} (gigabyte, 1024M)
38and T (terabyte, 1024G) are supported. @code{b} is ignored.
acd935ef
FB
39
40@item output_filename
5fafdf24 41is the destination disk image filename
acd935ef
FB
42
43@item output_fmt
44 is the destination format
eff44266
KW
45@item options
46is a comma separated list of format specific options in a
47name=value format. Use @code{-o ?} for an overview of the options supported
3e032364 48by the used format or see the format descriptions below for details.
ef80654d
WX
49@item snapshot_param
50is param used for internal snapshot, format is
51'snapshot.id=[ID],snapshot.name=[NAME]' or '[ID_OR_NAME]'
52@item snapshot_id_or_name
53is deprecated, use snapshot_param instead
acd935ef
FB
54
55@item -c
56indicates that target image must be compressed (qcow format only)
d2c639d6
BS
57@item -h
58with or without a command shows help and lists the supported formats
aaf55b47
JS
59@item -p
60display progress bar (convert and rebase commands only)
f382d43a
MR
61@item -q
62Quiet mode - do not print any output (except errors). There's no progress bar
63in case both @var{-q} and @var{-p} options are used.
a22f123c
KW
64@item -S @var{size}
65indicates the consecutive number of bytes that must contain only zeros
66for qemu-img to create a sparse image during conversion. This value is rounded
67down to the nearest 512 bytes. You may use the common size suffixes like
68@code{k} for kilobytes.
3763f26f
KW
69@item -t @var{cache}
70specifies the cache mode that should be used with the (destination) file. See
71the documentation of the emulator's @code{-drive cache=...} option for allowed
72values.
d2c639d6
BS
73@end table
74
75Parameters to snapshot subcommand:
76
77@table @option
78
79@item snapshot
80is the name of the snapshot to create, apply or delete
81@item -a
82applies a snapshot (revert disk to saved state)
83@item -c
84creates a snapshot
85@item -d
86deletes a snapshot
87@item -l
88lists all snapshots in the given image
acd935ef
FB
89@end table
90
d14ed18c
MR
91Parameters to compare subcommand:
92
93@table @option
94
95@item -f
96First image format
97@item -F
98Second image format
99@item -s
100Strict mode - fail on on different image size or sector allocation
101@end table
102
b2e10493
AD
103Parameters to convert subcommand:
104
105@table @option
106
107@item -n
108Skip the creation of the target volume
109@end table
110
acd935ef
FB
111Command description:
112
113@table @option
8599ea4c 114@item check [-f @var{fmt}] [--output=@var{ofmt}] [-r [leaks | all]] @var{filename}
e6184690 115
8599ea4c
FS
116Perform a consistency check on the disk image @var{filename}. The command can
117output in the format @var{ofmt} which is either @code{human} or @code{json}.
e6184690 118
4534ff54
KW
119If @code{-r} is specified, qemu-img tries to repair any inconsistencies found
120during the check. @code{-r leaks} repairs only cluster leaks, whereas
121@code{-r all} fixes all kinds of errors, with a higher risk of choosing the
0546b8c2 122wrong fix or hiding corruption that has already occurred.
4534ff54 123
e6184690
KW
124Only the formats @code{qcow2}, @code{qed} and @code{vdi} support
125consistency checks.
126
8063d0fe 127@item create [-f @var{fmt}] [-o @var{options}] @var{filename} [@var{size}]
acd935ef
FB
128
129Create the new disk image @var{filename} of size @var{size} and format
8063d0fe
KW
130@var{fmt}. Depending on the file format, you can add one or more @var{options}
131that enable additional features of this format.
acd935ef 132
8063d0fe
KW
133If the option @var{backing_file} is specified, then the image will record
134only the differences from @var{backing_file}. No size needs to be specified in
135this case. @var{backing_file} will never be modified unless you use the
136@code{commit} monitor command (or qemu-img commit).
acd935ef 137
eff44266
KW
138The size can also be specified using the @var{size} option with @code{-o},
139it doesn't need to be specified separately in this case.
140
3763f26f 141@item commit [-f @var{fmt}] [-t @var{cache}] @var{filename}
acd935ef
FB
142
143Commit the changes recorded in @var{filename} in its base image.
144
d14ed18c
MR
145@item compare [-f @var{fmt}] [-F @var{fmt}] [-p] [-s] [-q] @var{filename1} @var{filename2}
146
147Check if two images have the same content. You can compare images with
148different format or settings.
149
150The format is probed unless you specify it by @var{-f} (used for
151@var{filename1}) and/or @var{-F} (used for @var{filename2}) option.
152
153By default, images with different size are considered identical if the larger
154image contains only unallocated and/or zeroed sectors in the area after the end
155of the other image. In addition, if any sector is not allocated in one image
156and contains only zero bytes in the second one, it is evaluated as equal. You
157can use Strict mode by specifying the @var{-s} option. When compare runs in
158Strict mode, it fails in case image size differs or a sector is allocated in
159one image and is not allocated in the second one.
160
161By default, compare prints out a result message. This message displays
162information that both images are same or the position of the first different
163byte. In addition, result message can report different image size in case
164Strict mode is used.
165
166Compare exits with @code{0} in case the images are equal and with @code{1}
167in case the images differ. Other exit codes mean an error occurred during
168execution and standard error output should contain an error message.
169The following table sumarizes all exit codes of the compare subcommand:
170
171@table @option
172
173@item 0
174Images are identical
175@item 1
176Images differ
177@item 2
178Error on opening an image
179@item 3
180Error on checking a sector allocation
181@item 4
182Error on reading data
183
184@end table
185
ef80654d 186@item convert [-c] [-p] [-n] [-f @var{fmt}] [-t @var{cache}] [-O @var{output_fmt}] [-o @var{options}] [-s @var{snapshot_id_or_name}] [-l @var{snapshot_param}] [-S @var{sparse_size}] @var{filename} [@var{filename2} [...]] @var{output_filename}
acd935ef 187
ef80654d
WX
188Convert the disk image @var{filename} or a snapshot @var{snapshot_param}(@var{snapshot_id_or_name} is deprecated)
189to disk image @var{output_filename} using format @var{output_fmt}. It can be optionally compressed (@code{-c}
eff44266 190option) or use any format specific options like encryption (@code{-o} option).
acd935ef 191
8063d0fe 192Only the formats @code{qcow} and @code{qcow2} support compression. The
acd935ef
FB
193compression is read-only. It means that if a compressed sector is
194rewritten, then it is rewritten as uncompressed data.
195
acd935ef
FB
196Image conversion is also useful to get smaller image when using a
197growable format such as @code{qcow} or @code{cow}: the empty sectors
198are detected and suppressed from the destination image.
199
11b6699a
PL
200@var{sparse_size} indicates the consecutive number of bytes (defaults to 4k)
201that must contain only zeros for qemu-img to create a sparse image during
202conversion. If @var{sparse_size} is 0, the source will not be scanned for
203unallocated or zero sectors, and the destination image will always be
204fully allocated.
205
8063d0fe
KW
206You can use the @var{backing_file} option to force the output image to be
207created as a copy on write image of the specified base image; the
208@var{backing_file} should have the same content as the input's base image,
209however the path, image format, etc may differ.
210
b2e10493
AD
211If the @code{-n} option is specified, the target volume creation will be
212skipped. This is useful for formats such as @code{rbd} if the target
213volume has already been created with site specific options that cannot
214be supplied through qemu-img.
215
e5357560 216@item info [-f @var{fmt}] [--output=@var{ofmt}] [--backing-chain] @var{filename}
acd935ef
FB
217
218Give information about the disk image @var{filename}. Use it in
219particular to know the size reserved on disk which can be different
19d36792 220from the displayed size. If VM snapshots are stored in the disk image,
c054b3fd
BC
221they are displayed too. The command can output in the format @var{ofmt}
222which is either @code{human} or @code{json}.
d2c639d6 223
e5357560
KC
224If a disk image has a backing file chain, information about each disk image in
225the chain can be recursively enumerated by using the option @code{--backing-chain}.
226
227For instance, if you have an image chain like:
228
229@example
230base.qcow2 <- snap1.qcow2 <- snap2.qcow2
231@end example
232
233To enumerate information about each disk image in the above chain, starting from top to base, do:
234
235@example
236qemu-img info --backing-chain snap2.qcow2
237@end example
238
facd6e2b
PB
239@item map [-f @var{fmt}] [--output=@var{ofmt}] @var{filename}
240
241Dump the metadata of image @var{filename} and its backing file chain.
242In particular, this commands dumps the allocation state of every sector
243of @var{filename}, together with the topmost file that allocates it in
244the backing file chain.
245
246Two option formats are possible. The default format (@code{human})
247only dumps known-nonzero areas of the file. Known-zero parts of the
248file are omitted altogether, and likewise for parts that are not allocated
249throughout the chain. @command{qemu-img} output will identify a file
250from where the data can be read, and the offset in the file. Each line
251will include four fields, the first three of which are hexadecimal
252numbers. For example the first line of:
253@example
254Offset Length Mapped to File
2550 0x20000 0x50000 /tmp/overlay.qcow2
2560x100000 0x10000 0x95380000 /tmp/backing.qcow2
257@end example
258@noindent
259means that 0x20000 (131072) bytes starting at offset 0 in the image are
260available in /tmp/overlay.qcow2 (opened in @code{raw} format) starting
261at offset 0x50000 (327680). Data that is compressed, encrypted, or
262otherwise not available in raw format will cause an error if @code{human}
263format is in use. Note that file names can include newlines, thus it is
264not safe to parse this output format in scripts.
265
266The alternative format @code{json} will return an array of dictionaries
267in JSON format. It will include similar information in
268the @code{start}, @code{length}, @code{offset} fields;
269it will also include other more specific information:
270@itemize @minus
271@item
272whether the sectors contain actual data or not (boolean field @code{data};
273if false, the sectors are either unallocated or stored as optimized
274all-zero clusters);
275
276@item
277whether the data is known to read as zero (boolean field @code{zero});
278
279@item
280in order to make the output shorter, the target file is expressed as
281a @code{depth}; for example, a depth of 2 refers to the backing file
282of the backing file of @var{filename}.
283@end itemize
284
285In JSON format, the @code{offset} field is optional; it is absent in
286cases where @code{human} format would omit the entry or exit with an error.
287If @code{data} is false and the @code{offset} field is present, the
288corresponding sectors in the file are not yet in use, but they are
289preallocated.
290
291For more information, consult @file{include/block/block.h} in QEMU's
292source code.
293
d2c639d6
BS
294@item snapshot [-l | -a @var{snapshot} | -c @var{snapshot} | -d @var{snapshot} ] @var{filename}
295
296List, apply, create or delete snapshots in image @var{filename}.
ae6b0ed6 297
3763f26f 298@item rebase [-f @var{fmt}] [-t @var{cache}] [-p] [-u] -b @var{backing_file} [-F @var{backing_fmt}] @var{filename}
e6184690
KW
299
300Changes the backing file of an image. Only the formats @code{qcow2} and
301@code{qed} support changing the backing file.
302
303The backing file is changed to @var{backing_file} and (if the image format of
304@var{filename} supports this) the backing file format is changed to
a616673d
AB
305@var{backing_fmt}. If @var{backing_file} is specified as ``'' (the empty
306string), then the image is rebased onto no backing file (i.e. it will exist
307independently of any backing file).
e6184690
KW
308
309There are two different modes in which @code{rebase} can operate:
310@table @option
311@item Safe mode
312This is the default mode and performs a real rebase operation. The new backing
313file may differ from the old one and qemu-img rebase will take care of keeping
314the guest-visible content of @var{filename} unchanged.
315
316In order to achieve this, any clusters that differ between @var{backing_file}
317and the old backing file of @var{filename} are merged into @var{filename}
318before actually changing the backing file.
319
320Note that the safe mode is an expensive operation, comparable to converting
321an image. It only works if the old backing file still exists.
322
323@item Unsafe mode
324qemu-img uses the unsafe mode if @code{-u} is specified. In this mode, only the
325backing file name and format of @var{filename} is changed without any checks
326on the file contents. The user must take care of specifying the correct new
327backing file, or the guest-visible content of the image will be corrupted.
328
329This mode is useful for renaming or moving the backing file to somewhere else.
330It can be used without an accessible old backing file, i.e. you can use it to
331fix an image whose backing file has already been moved/renamed.
332@end table
333
9fda6ab1
RJ
334You can use @code{rebase} to perform a ``diff'' operation on two
335disk images. This can be useful when you have copied or cloned
336a guest, and you want to get back to a thin image on top of a
337template or base image.
338
339Say that @code{base.img} has been cloned as @code{modified.img} by
340copying it, and that the @code{modified.img} guest has run so there
341are now some changes compared to @code{base.img}. To construct a thin
342image called @code{diff.qcow2} that contains just the differences, do:
343
344@example
345qemu-img create -f qcow2 -b modified.img diff.qcow2
346qemu-img rebase -b base.img diff.qcow2
347@end example
348
349At this point, @code{modified.img} can be discarded, since
350@code{base.img + diff.qcow2} contains the same information.
351
ae6b0ed6
SH
352@item resize @var{filename} [+ | -]@var{size}
353
354Change the disk image as if it had been created with @var{size}.
355
356Before using this command to shrink a disk image, you MUST use file system and
357partitioning tools inside the VM to reduce allocated file systems and partition
358sizes accordingly. Failure to do so will result in data loss!
359
360After using this command to grow a disk image, you must use file system and
361partitioning tools inside the VM to actually begin using the new space on the
362device.
6f176b48
HR
363
364@item amend [-f @var{fmt}] -o @var{options} @var{filename}
365
366Amends the image format specific @var{options} for the image file
367@var{filename}. Not all file formats support this operation.
acd935ef 368@end table
d3067b02 369@c man end
acd935ef 370
d3067b02
KW
371@ignore
372@c man begin NOTES
f932c040
KW
373Supported image file formats:
374
375@table @option
376@item raw
377
378Raw disk image format (default). This format has the advantage of
379being simple and easily exportable to all other emulators. If your
380file system supports @emph{holes} (for example in ext2 or ext3 on
381Linux or NTFS on Windows), then only the written sectors will reserve
382space. Use @code{qemu-img info} to know the real size used by the
383image or @code{ls -ls} on Unix/Linux.
384
f932c040
KW
385@item qcow2
386QEMU image format, the most versatile format. Use it to have smaller
387images (useful if your filesystem does not supports holes, for example
388on Windows), optional AES encryption, zlib based compression and
389support of multiple VM snapshots.
8063d0fe 390
3e032364
KW
391Supported options:
392@table @code
d3067b02
KW
393@item compat
394Determines the qcow2 version to use. @code{compat=0.10} uses the traditional
395image format that can be read by any QEMU since 0.10 (this is the default).
396@code{compat=1.1} enables image format extensions that only QEMU 1.1 and
397newer understand. Amongst others, this includes zero clusters, which allow
398efficient copy-on-read for sparse images.
399
3e032364
KW
400@item backing_file
401File name of a base image (see @option{create} subcommand)
402@item backing_fmt
403Image format of the base image
404@item encryption
405If this option is set to @code{on}, the image is encrypted.
406
8063d0fe
KW
407Encryption uses the AES format which is very secure (128 bit keys). Use
408a long password (16 characters) to get maximum protection.
3e032364
KW
409
410@item cluster_size
411Changes the qcow2 cluster size (must be between 512 and 2M). Smaller cluster
412sizes can improve the image file size whereas larger cluster sizes generally
413provide better performance.
414
415@item preallocation
416Preallocation mode (allowed values: off, metadata). An image with preallocated
417metadata is initially larger but can improve performance when the image needs
418to grow.
419
d3067b02
KW
420@item lazy_refcounts
421If this option is set to @code{on}, reference count updates are postponed with
422the goal of avoiding metadata I/O and improving performance. This is
423particularly interesting with @option{cache=writethrough} which doesn't batch
424metadata updates. The tradeoff is that after a host crash, the reference count
425tables must be rebuilt, i.e. on the next open an (automatic) @code{qemu-img
426check -r all} is required, which may take some time.
3e032364 427
d3067b02 428This option can only be enabled if @code{compat=1.1} is specified.
f085800e 429
f085800e 430@end table
3e032364 431
d3067b02
KW
432@item Other
433QEMU also supports various other image file formats for compatibility with
8282db1b
JC
434older QEMU versions or other hypervisors, including VMDK, VDI, VHD (vpc), VHDX,
435qcow1 and QED. For a full list of supported formats see @code{qemu-img --help}.
d3067b02
KW
436For a more detailed description of these formats, see the QEMU Emulation User
437Documentation.
3e032364 438
d3067b02
KW
439The main purpose of the block drivers for these formats is image conversion.
440For running VMs, it is recommended to convert the disk images to either raw or
441qcow2 in order to achieve good performance.
f932c040
KW
442@end table
443
444
acd935ef
FB
445@c man end
446
acd935ef
FB
447@setfilename qemu-img
448@settitle QEMU disk image utility
449
450@c man begin SEEALSO
451The HTML documentation of QEMU for more precise information and Linux
452user mode emulator invocation.
453@c man end
454
455@c man begin AUTHOR
456Fabrice Bellard
457@c man end
458
459@end ignore