blob: be31191e43413f88fc3ff23d613cbb70221bb218 [file] [log] [blame]
bellardacd935e2004-11-15 22:57:26 +00001@example
2@c man begin SYNOPSIS
3usage: qemu-img command [command options]
4@c man end
5@end example
6
Kevin Wolf48467322012-08-16 10:56:35 +02007@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
bellardacd935e2004-11-15 22:57:26 +000017@c man begin OPTIONS
18
19The following commands are supported:
Stuart Brady153859b2009-06-07 00:42:17 +010020
21@include qemu-img-cmds.texi
bellardacd935e2004-11-15 22:57:26 +000022
23Command parameters:
24@table @var
25@item filename
26 is a disk image filename
ths5fafdf22007-09-16 21:08:06 +000027@item fmt
Kevin Wolff932c042009-10-28 12:49:15 +010028is the disk image format. It is guessed automatically in most cases. See below
29for a description of the supported disk formats.
bellardacd935e2004-11-15 22:57:26 +000030
Kashyap Chamarthye5357562012-10-18 11:25:34 +053031@item --backing-chain
32will enumerate information about backing files in a disk image chain. Refer
33below for further description.
34
ths5fafdf22007-09-16 21:08:06 +000035@item size
Kevin Wolfeff44262009-06-04 15:39:39 +020036is 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.
bellardacd935e2004-11-15 22:57:26 +000039
40@item output_filename
ths5fafdf22007-09-16 21:08:06 +000041is the destination disk image filename
bellardacd935e2004-11-15 22:57:26 +000042
43@item output_fmt
44 is the destination format
Kevin Wolfeff44262009-06-04 15:39:39 +020045@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
Kevin Wolf3e032362009-10-28 12:49:17 +010048by the used format or see the format descriptions below for details.
Wenchao Xiaef806542013-12-04 17:10:57 +080049@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
bellardacd935e2004-11-15 22:57:26 +000054
55@item -c
56indicates that target image must be compressed (qcow format only)
blueswir1d2c639d2009-01-24 18:19:25 +000057@item -h
58with or without a command shows help and lists the supported formats
Jes Sorensenaaf55b42011-07-19 15:01:34 +020059@item -p
60display progress bar (convert and rebase commands only)
Miroslav Rezaninaf382d432013-02-13 09:09:40 +010061@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.
Kevin Wolfa22f1232011-08-26 15:27:13 +020064@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.
Kevin Wolf3763f262011-12-07 13:57:13 +010069@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.
blueswir1d2c639d2009-01-24 18:19:25 +000073@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
bellardacd935e2004-11-15 22:57:26 +000089@end table
90
Miroslav Rezaninad14ed182013-02-13 09:09:41 +010091Parameters 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
Alexandre Derumierb2e10492013-09-02 19:07:24 +0100103Parameters to convert subcommand:
104
105@table @option
106
107@item -n
108Skip the creation of the target volume
109@end table
110
bellardacd935e2004-11-15 22:57:26 +0000111Command description:
112
113@table @option
Federico Simoncelli8599ea42013-01-28 06:59:47 -0500114@item check [-f @var{fmt}] [--output=@var{ofmt}] [-r [leaks | all]] @var{filename}
Kevin Wolfe6184692011-01-17 15:35:28 +0100115
Federico Simoncelli8599ea42013-01-28 06:59:47 -0500116Perform 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}.
Kevin Wolfe6184692011-01-17 15:35:28 +0100118
Kevin Wolf4534ff52012-05-11 16:07:02 +0200119If @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
Stefan Weil0546b8c2012-08-10 22:03:25 +0200122wrong fix or hiding corruption that has already occurred.
Kevin Wolf4534ff52012-05-11 16:07:02 +0200123
Kevin Wolfe6184692011-01-17 15:35:28 +0100124Only the formats @code{qcow2}, @code{qed} and @code{vdi} support
125consistency checks.
126
Kevin Wolf8063d0f2009-10-28 12:49:16 +0100127@item create [-f @var{fmt}] [-o @var{options}] @var{filename} [@var{size}]
bellardacd935e2004-11-15 22:57:26 +0000128
129Create the new disk image @var{filename} of size @var{size} and format
Kevin Wolf8063d0f2009-10-28 12:49:16 +0100130@var{fmt}. Depending on the file format, you can add one or more @var{options}
131that enable additional features of this format.
bellardacd935e2004-11-15 22:57:26 +0000132
Kevin Wolf8063d0f2009-10-28 12:49:16 +0100133If 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).
bellardacd935e2004-11-15 22:57:26 +0000137
Kevin Wolfeff44262009-06-04 15:39:39 +0200138The 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
Kevin Wolf3763f262011-12-07 13:57:13 +0100141@item commit [-f @var{fmt}] [-t @var{cache}] @var{filename}
bellardacd935e2004-11-15 22:57:26 +0000142
143Commit the changes recorded in @var{filename} in its base image.
144
Miroslav Rezaninad14ed182013-02-13 09:09:41 +0100145@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
Wenchao Xiaef806542013-12-04 17:10:57 +0800186@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}
bellardacd935e2004-11-15 22:57:26 +0000187
Wenchao Xiaef806542013-12-04 17:10:57 +0800188Convert 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}
Kevin Wolfeff44262009-06-04 15:39:39 +0200190option) or use any format specific options like encryption (@code{-o} option).
bellardacd935e2004-11-15 22:57:26 +0000191
Kevin Wolf8063d0f2009-10-28 12:49:16 +0100192Only the formats @code{qcow} and @code{qcow2} support compression. The
bellardacd935e2004-11-15 22:57:26 +0000193compression is read-only. It means that if a compressed sector is
194rewritten, then it is rewritten as uncompressed data.
195
bellardacd935e2004-11-15 22:57:26 +0000196Image 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
Peter Lieven11b66992013-10-24 12:07:05 +0200200@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
Kevin Wolf8063d0f2009-10-28 12:49:16 +0100206You 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
Alexandre Derumierb2e10492013-09-02 19:07:24 +0100211If 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
Kashyap Chamarthye5357562012-10-18 11:25:34 +0530216@item info [-f @var{fmt}] [--output=@var{ofmt}] [--backing-chain] @var{filename}
bellardacd935e2004-11-15 22:57:26 +0000217
218Give information about the disk image @var{filename}. Use it in
219particular to know the size reserved on disk which can be different
bellard19d36792006-08-07 21:34:34 +0000220from the displayed size. If VM snapshots are stored in the disk image,
Benoît Canetc054b3f2012-09-05 13:09:02 +0200221they are displayed too. The command can output in the format @var{ofmt}
222which is either @code{human} or @code{json}.
blueswir1d2c639d2009-01-24 18:19:25 +0000223
Kashyap Chamarthye5357562012-10-18 11:25:34 +0530224If 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
Paolo Bonzinifacd6e22013-09-04 19:00:34 +0200239@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
blueswir1d2c639d2009-01-24 18:19:25 +0000294@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}.
Stefan Hajnocziae6b0ed2010-04-24 09:12:12 +0100297
Kevin Wolf3763f262011-12-07 13:57:13 +0100298@item rebase [-f @var{fmt}] [-t @var{cache}] [-p] [-u] -b @var{backing_file} [-F @var{backing_fmt}] @var{filename}
Kevin Wolfe6184692011-01-17 15:35:28 +0100299
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
Alex Bligha6166732012-10-16 13:46:18 +0100305@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).
Kevin Wolfe6184692011-01-17 15:35:28 +0100308
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
Richard W.M. Jones9fda6ab2012-05-21 14:58:05 +0100334You 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
Stefan Hajnocziae6b0ed2010-04-24 09:12:12 +0100352@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.
Max Reitz6f176b42013-09-03 10:09:50 +0200363
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.
bellardacd935e2004-11-15 22:57:26 +0000368@end table
Kevin Wolfd3067b02012-11-21 14:21:47 +0100369@c man end
bellardacd935e2004-11-15 22:57:26 +0000370
Kevin Wolfd3067b02012-11-21 14:21:47 +0100371@ignore
372@c man begin NOTES
Kevin Wolff932c042009-10-28 12:49:15 +0100373Supported 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
Kevin Wolff932c042009-10-28 12:49:15 +0100385@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.
Kevin Wolf8063d0f2009-10-28 12:49:16 +0100390
Kevin Wolf3e032362009-10-28 12:49:17 +0100391Supported options:
392@table @code
Kevin Wolfd3067b02012-11-21 14:21:47 +0100393@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
Kevin Wolf3e032362009-10-28 12:49:17 +0100400@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
Kevin Wolf8063d0f2009-10-28 12:49:16 +0100407Encryption uses the AES format which is very secure (128 bit keys). Use
408a long password (16 characters) to get maximum protection.
Kevin Wolf3e032362009-10-28 12:49:17 +0100409
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
Kevin Wolfd3067b02012-11-21 14:21:47 +0100420@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.
427
428This option can only be enabled if @code{compat=1.1} is specified.
429
Kevin Wolf3e032362009-10-28 12:49:17 +0100430@end table
431
Kevin Wolfd3067b02012-11-21 14:21:47 +0100432@item Other
433QEMU also supports various other image file formats for compatibility with
434older QEMU versions or other hypervisors, including VMDK, VDI, VHD (vpc), qcow1
435and QED. For a full list of supported formats see @code{qemu-img --help}.
436For a more detailed description of these formats, see the QEMU Emulation User
437Documentation.
Stefan Hajnoczif0858002012-06-13 14:29:15 +0100438
Kevin Wolfd3067b02012-11-21 14:21:47 +0100439The 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.
Kevin Wolff932c042009-10-28 12:49:15 +0100442@end table
443
444
bellardacd935e2004-11-15 22:57:26 +0000445@c man end
446
bellardacd935e2004-11-15 22:57:26 +0000447@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