Imported Upstream version 1.2.5
[archive/platform/upstream/libvirt.git] / tools / virsh.pod
1 =head1 NAME
2
3 virsh - management user interface
4
5 =head1 SYNOPSIS
6
7 B<virsh> [I<OPTION>]... [I<COMMAND_STRING>]
8
9 B<virsh> [I<OPTION>]... I<COMMAND> [I<ARG>]...
10
11 =head1 DESCRIPTION
12
13 The B<virsh> program is the main interface for managing virsh guest
14 domains. The program can be used to create, pause, and shutdown
15 domains. It can also be used to list current domains. Libvirt is a C
16 toolkit to interact with the virtualization capabilities of recent
17 versions of Linux (and other OSes). It is free software available
18 under the GNU Lesser General Public License. Virtualization of the
19 Linux Operating System means the ability to run multiple instances of
20 Operating Systems concurrently on a single hardware system where the
21 basic resources are driven by a Linux instance. The library aims at
22 providing a long term stable C API.  It currently supports Xen, QEmu,
23 KVM, LXC, OpenVZ, VirtualBox and VMware ESX.
24
25 The basic structure of most virsh usage is:
26
27   virsh [OPTION]... <command> <domain> [ARG]...
28
29 Where I<command> is one of the commands listed below; I<domain> is the
30 numeric domain id, or the domain name, or the domain UUID; and I<ARGS>
31 are command specific options.  There are a few exceptions to this rule
32 in the cases where the command in question acts on all domains, the
33 entire machine, or directly on the xen hypervisor.  Those exceptions
34 will be clear for each of those commands.  Note: it is permissible to
35 give numeric names to domains, however, doing so will result in a
36 domain that can only be identified by domain id. In other words, if a
37 numeric value is supplied it will be interpreted as a domain id, not
38 as a name.
39
40 The B<virsh> program can be used either to run one I<COMMAND> by giving the
41 command and its arguments on the shell command line, or a I<COMMAND_STRING>
42 which is a single shell argument consisting of multiple I<COMMAND> actions
43 and their arguments joined with whitespace, and separated by semicolons
44 between commands.  Within I<COMMAND_STRING>, virsh understands the
45 same single, double, and backslash escapes as the shell, although you must
46 add another layer of shell escaping in creating the single shell argument.
47 If no command is given in the command line, B<virsh> will then start a minimal
48 interpreter waiting for your commands, and the B<quit> command will then exit
49 the program.
50
51 The B<virsh> program understands the following I<OPTIONS>.
52
53 =over 4
54
55 =item B<-c>, B<--connect> I<URI>
56
57 Connect to the specified I<URI>, as if by the B<connect> command,
58 instead of the default connection.
59
60 =item B<-d>, B<--debug> I<LEVEL>
61
62 Enable debug messages at integer I<LEVEL> and above.  I<LEVEL> can
63 range from 0 to 4 (default).  See the documentation of B<VIRSH_DEBUG>
64 environment variable below for the description of each I<LEVEL>.
65
66 =item B<-e>, B<--escape> I<string>
67
68 Set alternative escape sequence for I<console> command. By default,
69 telnet's B<^]> is used. Allowed characters when using hat notation are:
70 alphabetic character, @, [, ], \, ^, _.
71
72 =item B<-h>, B<--help>
73
74 Ignore all other arguments, and behave as if the B<help> command were
75 given instead.
76
77 =item B<-k>, B<--keepalive-interval> I<INTERVAL>
78
79 Set an I<INTERVAL> (in seconds) for sending keepalive messages to
80 check whether connection to the server is still alive.  Setting the
81 interval to 0 disables client keepalive mechanism.
82
83 =item B<-K>, B<--keepalive-count> I<COUNT>
84
85 Set a number of times keepalive message can be sent without getting an
86 answer from the server without marking the connection dead.  There is
87 no effect to this setting in case the I<INTERVAL> is set to 0.
88
89 =item B<-l>, B<--log> I<FILE>
90
91 Output logging details to I<FILE>.
92
93 =item B<-q>, B<--quiet>
94
95 Avoid extra informational messages.
96
97 =item B<-r>, B<--readonly>
98
99 Make the initial connection read-only, as if by the I<--readonly>
100 option of the B<connect> command.
101
102 =item B<-t>, B<--timing>
103
104 Output elapsed time information for each command.
105
106 =item B<-v>, B<--version[=short]>
107
108 Ignore all other arguments, and prints the version of the libvirt library
109 virsh is coming from
110
111 =item B<-V>, B<--version=long>
112
113 Ignore all other arguments, and prints the version of the libvirt library
114 virsh is coming from and which options and driver are compiled in.
115
116 =back
117
118 =head1 NOTES
119
120 Most B<virsh> operations rely upon the libvirt library being able to
121 connect to an already running libvirtd service.  This can usually be
122 done using the command B<service libvirtd start>.
123
124 Most B<virsh> commands require root privileges to run due to the
125 communications channels used to talk to the hypervisor.  Running as
126 non root will return an error.
127
128 Most B<virsh> commands act synchronously, except maybe shutdown,
129 setvcpus and setmem. In those cases the fact that the B<virsh>
130 program returned, may not mean the action is complete and you
131 must poll periodically to detect that the guest completed the
132 operation.
133
134 B<virsh> strives for backward compatibility.  Although the B<help>
135 command only lists the preferred usage of a command, if an older
136 version of B<virsh> supported an alternate spelling of a command or
137 option (such as I<--tunnelled> instead of I<--tunneled>), then
138 scripts using that older spelling will continue to work.
139
140 Several B<virsh> commands take an optionally scaled integer; if no
141 scale is provided, then the default is listed in the command (for
142 historical reasons, some commands default to bytes, while other
143 commands default to kibibytes).  The following case-insensitive
144 suffixes can be used to select a specific scale:
145   b, byte  byte      1
146   KB       kilobyte  1,000
147   k, KiB   kibibyte  1,024
148   MB       megabyte  1,000,000
149   M, MiB   mebibyte  1,048,576
150   GB       gigabyte  1,000,000,000
151   G, GiB   gibibyte  1,073,741,824
152   TB       terabyte  1,000,000,000,000
153   T, TiB   tebibyte  1,099,511,627,776
154   PB       petabyte  1,000,000,000,000,000
155   P, PiB   pebibyte  1,125,899,906,842,624
156   EB       exabyte   1,000,000,000,000,000,000
157   E, EiB   exbibyte  1,152,921,504,606,846,976
158
159 =head1 GENERIC COMMANDS
160
161 The following commands are generic i.e. not specific to a domain.
162
163 =over 4
164
165 =item B<help> [I<command-or-group>]
166
167 This lists each of the virsh commands.  When used without options, all
168 commands are listed, one per line, grouped into related categories,
169 displaying the keyword for each group.
170
171 To display only commands for a specific group, give the keyword for that
172 group as an option.  For example:
173
174  virsh # help host
175
176   Host and Hypervisor (help keyword 'host'):
177      capabilities                   capabilities
178      cpu-models                     show the CPU models for an architecture
179      connect                        (re)connect to hypervisor
180      freecell                       NUMA free memory
181      hostname                       print the hypervisor hostname
182      qemu-attach                    Attach to existing QEMU process
183      qemu-monitor-command           QEMU Monitor Command
184      qemu-agent-command             QEMU Guest Agent Command
185      sysinfo                        print the hypervisor sysinfo
186      uri                            print the hypervisor canonical URI
187
188 To display detailed information for a specific command, give its name as the
189 option instead.  For example:
190
191  virsh # help list
192    NAME
193      list - list domains
194
195    SYNOPSIS
196      list [--inactive] [--all]
197
198    DESCRIPTION
199      Returns list of domains.
200
201    OPTIONS
202      --inactive       list inactive domains
203      --all            list inactive & active domains
204
205 =item B<quit>, B<exit>
206
207 quit this interactive terminal
208
209 =item B<version>
210
211 Will print out the major version info about what this built from.
212
213 =over 4
214
215 B<Example>
216
217 B<virsh> version
218
219 Compiled against library: libvir 0.0.6
220
221 Using library: libvir 0.0.6
222
223 Using API: Xen 3.0.0
224
225 Running hypervisor: Xen 3.0.0
226
227 =back
228
229 =item B<cd> [I<directory>]
230
231 Will change current directory to I<directory>.  The default directory
232 for the B<cd> command is the home directory or, if there is no I<HOME>
233 variable in the environment, the root directory.
234
235 This command is only available in interactive mode.
236
237 =item B<pwd>
238
239 Will print the current directory.
240
241 =item B<connect> [I<URI>] [I<--readonly>]
242
243 (Re)-Connect to the hypervisor. When the shell is first started, this
244 is automatically run with the I<URI> parameter requested by the C<-c>
245 option on the command line. The I<URI> parameter specifies how to
246 connect to the hypervisor. The documentation page at
247 L<http://libvirt.org/uri.html> list the values supported, but the most
248 common are:
249
250 =over 4
251
252 =item xen:///
253
254 this is used to connect to the local Xen hypervisor
255
256 =item qemu:///system
257
258 connect locally as root to the daemon supervising QEmu and KVM domains
259
260 =item qemu:///session
261
262 connect locally as a normal user to his own set of QEmu and KVM domains
263
264 =item lxc:///
265
266 connect to a local linux container
267
268 =back
269
270 For remote access see the documentation page at
271 L<http://libvirt.org/uri.html> on how to make URIs.
272 The I<--readonly> option allows for read-only connection
273
274 =item B<uri>
275
276 Prints the hypervisor canonical URI, can be useful in shell mode.
277
278 =item B<hostname>
279
280 Print the hypervisor hostname.
281
282 =item B<sysinfo>
283
284 Print the XML representation of the hypervisor sysinfo, if available.
285
286 =item B<nodeinfo>
287
288 Returns basic information about the node, like number and type of CPU,
289 and size of the physical memory. The output corresponds to virNodeInfo
290 structure. Specifically, the "CPU socket(s)" field means number of CPU
291 sockets per NUMA cell.
292
293 =item B<nodecpumap>
294
295 Displays the node's total number of CPUs, the number of online CPUs
296 and the list of online CPUs.
297
298 =item B<nodecpustats> [I<cpu>] [I<--percent>]
299
300 Returns cpu stats of the node.
301 If I<cpu> is specified, this will prints specified cpu statistics only.
302 If I<--percent> is specified, this will prints percentage of each kind of cpu
303 statistics during 1 second.
304
305 =item B<nodememstats> [I<cell>]
306
307 Returns memory stats of the node.
308 If I<cell> is specified, this will prints specified cell statistics only.
309
310 =item B<nodesuspend> [I<target>] [I<duration>]
311
312 Puts the node (host machine) into a system-wide sleep state and schedule
313 the node's Real-Time-Clock interrupt to resume the node after the time
314 duration specified by I<duration> is out.
315 I<target> specifies the state to which the host will be suspended to, it
316 can be "mem" (suspend to RAM), "disk" (suspend to disk), or "hybrid"
317 (suspend to both RAM and disk).  I<duration> specifies the time duration
318 in seconds for which the host has to be suspended, it should be at least
319 60 seconds.
320
321 =item B<node-memory-tune> [I<shm-pages-to-scan>] [I<shm-sleep-millisecs>]
322 [I<shm-merge-across-nodes>]
323
324 Allows you to display or set the node memory parameters.
325 I<shm-pages-to-scan> can be used to set the number of pages to scan
326 before the shared memory service goes to sleep; I<shm-sleep-millisecs>
327 can be used to set the number of millisecs the shared memory service should
328 sleep before next scan; I<shm-merge-across-nodes> specifies if pages from
329 different numa nodes can be merged. When set to 0, only pages which physically
330 reside in the memory area of same NUMA node can be merged. When set to 1,
331 pages from all nodes can be merged. Default to 1.
332
333 B<Note>: Currently the "shared memory service" only means KSM (Kernel Samepage
334 Merging).
335
336 =item B<capabilities>
337
338 Print an XML document describing the capabilities of the hypervisor
339 we are currently connected to. This includes a section on the host
340 capabilities in terms of CPU and features, and a set of description
341 for each kind of guest which can be virtualized. For a more complete
342 description see:
343   L<http://libvirt.org/formatcaps.html>
344 The XML also show the NUMA topology information if available.
345
346 =item B<inject-nmi> I<domain>
347
348 Inject NMI to the guest.
349
350 =item B<list> [I<--inactive> | I<--all>]
351               [I<--managed-save>] [I<--title>]
352               { [I<--table>] | I<--name> | I<--uuid> }
353               [I<--persistent>] [I<--transient>]
354               [I<--with-managed-save>] [I<--without-managed-save>]
355               [I<--autostart>] [I<--no-autostart>]
356               [I<--with-snapshot>] [I<--without-snapshot>]
357               [I<--state-running>] [I<--state-paused>]
358               [I<--state-shutoff>] [I<--state-other>]
359
360 Prints information about existing domains.  If no options are
361 specified it prints out information about running domains.
362
363 An example format for the list is as follows:
364
365 B<virsh> list
366   Id    Name                           State
367  ----------------------------------------------------
368   0     Domain-0                       running
369   2     fedora                         paused
370
371 Name is the name of the domain.  ID the domain numeric id.
372 State is the run state (see below).
373
374 B<STATES>
375
376 The State field lists 8 states for a domain, and which ones the
377 current domain is in.
378
379 =over 4
380
381 =item B<cpu-models> I<arch>
382
383 Print the list of CPU models known for the specified architecture.
384
385 =item B<running>
386
387 The domain is currently running on a CPU
388
389 =item B<idle>
390
391 The domain is idle, and not running or runnable.  This can be caused
392 because the domain is waiting on IO (a traditional wait state) or has
393 gone to sleep because there was nothing else for it to do.
394
395 =item B<paused>
396
397 The domain has been paused, usually occurring through the administrator
398 running B<virsh suspend>.  When in a paused state the domain will still
399 consume allocated resources like memory, but will not be eligible for
400 scheduling by the hypervisor.
401
402 =item B<shutdown>
403
404 The domain is in the process of shutting down, i.e. the guest operating system
405 has been notified and should be in the process of stopping its operations
406 gracefully.
407
408 =item B<shut off>
409
410 The domain is not running.  Usually this indicates the domain has been
411 shut down completely, or has not been started.
412
413 =item B<crashed>
414
415 The domain has crashed, which is always a violent ending.  Usually
416 this state can only occur if the domain has been configured not to
417 restart on crash.
418
419 =item B<dying>
420
421 The domain is in process of dying, but hasn't completely shutdown or
422 crashed.
423
424 =item B<pmsuspended>
425
426 The domain has been suspended by guest power management, e.g. entered
427 into s3 state.
428
429 =back
430
431 Normally only active domains are listed. To list inactive domains specify
432 I<--inactive> or I<--all> to list both active and inactive domains.
433
434 To further filter the list of domains you may specify one or more of filtering
435 flags supported by the B<list> command. These flags are grouped by function.
436 Specifying one or more flags from a group enables the filter group. Note that
437 some combinations of flags may yield no results. Supported filtering flags and
438 groups:
439
440 =over 4
441
442 =item B<Persistence>
443
444 Flag I<--persistent> is used to include persistent domains in the returned
445 list. To include transient domains specify I<--transient>.
446
447 =item B<Existence of managed save image>
448
449 To list domains having a managed save image specify flag
450 I<--with-managed-save>. For domains that don't have a managed save image
451 specify I<--without-managed-save>.
452
453 =item B<Domain state>
454
455 The following filter flags select a domain by its state:
456 I<--state-running> for running domains, I<--state-paused>  for paused domains,
457 I<--state-shutoff> for turned off domains and I<--state-other> for all
458 other states as a fallback.
459
460 =item B<Autostarting domains>
461
462 To list autostarting domains use the flag I<--autostart>. To list domains with
463 this feature disabled use I<--no-autostart>.
464
465 =item B<Snapshot existence>
466
467 Domains that have snapshot images can be listed using flag I<--with-snapshot>,
468 domains without a snapshot I<--without-snapshot>.
469
470 =back
471
472 When talking to older servers, this command is forced to use a series of API
473 calls with an inherent race, where a domain might not be listed or might appear
474 more than once if it changed state between calls while the list was being
475 collected.  Newer servers do not have this problem.
476
477 If I<--managed-save> is specified, then domains that have managed save state
478 (only possible if they are in the B<shut off> state, so you need to specify
479 I<--inactive> or I<--all> to actually list them) will instead show as B<saved>
480 in the listing. This flag is usable only with the default I<--table> output.
481 Note that this flag does not filter the list of domains.
482
483 If I<--name> is specified, domain names are printed instead of the table
484 formatted one per line. If I<--uuid> is specified domain's UUID's are printed
485 instead of names. Flag I<--table> specifies that the legacy table-formatted
486 output should be used. This is the default. All of these are mutually
487 exclusive.
488
489 If I<--title> is specified, then the short domain description (title) is
490 printed in an extra column. This flag is usable only with the default
491 I<--table> output.
492
493 Example:
494
495 B<virsh> list --title
496   Id    Name                           State      Title
497  --------------------------------------------------------------------------
498   0     Domain-0                       running    Mailserver 1
499   2     fedora                         paused
500
501 =item B<freecell> [{ [I<--cellno>] B<cellno> | I<--all> }]
502
503 Prints the available amount of memory on the machine or within a NUMA
504 cell.  The freecell command can provide one of three different
505 displays of available memory on the machine depending on the options
506 specified.  With no options, it displays the total free memory on the
507 machine.  With the --all option, it displays the free memory in each
508 cell and the total free memory on the machine.  Finally, with a
509 numeric argument or with --cellno plus a cell number it will display
510 the free memory for the specified cell only.
511
512 =item B<cpu-baseline> I<FILE> [I<--features>]
513
514 Compute baseline CPU which will be supported by all host CPUs given in <file>.
515 The list of host CPUs is built by extracting all <cpu> elements from the
516 <file>. Thus, the <file> can contain either a set of <cpu> elements separated
517 by new lines or even a set of complete <capabilities> elements printed by
518 B<capabilities> command.  If I<--features> is specified then the
519 resulting XML description will explicitly include all features that make
520 up the CPU, without this option features that are part of the CPU model
521 will not be listed in the XML description.
522
523 =item B<cpu-compare> I<FILE>
524
525 Compare CPU definition from XML <file> with host CPU. The XML <file> may
526 contain either host or guest CPU definition. The host CPU definition is the
527 <cpu> element and its contents as printed by B<capabilities> command. The
528 guest CPU definition is the <cpu> element and its contents from domain XML
529 definition. For more information on guest CPU definition see:
530 L<http://libvirt.org/formatdomain.html#elementsCPU>
531
532 =item B<echo> [I<--shell>] [I<--xml>] [I<arg>...]
533
534 Echo back each I<arg>, separated by space.  If I<--shell> is
535 specified, then the output will be single-quoted where needed, so that
536 it is suitable for reuse in a shell context.  If I<--xml> is
537 specified, then the output will be escaped for use in XML.
538
539 =back
540
541 =head1 DOMAIN COMMANDS
542
543 The following commands manipulate domains directly, as stated
544 previously most commands take domain as the first parameter. The
545 I<domain> can be specified as a short integer, a name or a full UUID.
546
547 =over 4
548
549 =item B<autostart> [I<--disable>] I<domain>
550
551 Configure a domain to be automatically started at boot.
552
553 The option I<--disable> disables autostarting.
554
555 =item B<console> I<domain> [I<devname>] [I<--safe>] [I<--force>]
556
557 Connect the virtual serial console for the guest. The optional
558 I<devname> parameter refers to the device alias of an alternate
559 console, serial or parallel device configured for the guest.
560 If omitted, the primary console will be opened.
561
562 If the flag I<--safe> is specified, the connection is only attempted
563 if the driver supports safe console handling. This flag specifies that
564 the server has to ensure exclusive access to console devices. Optionally
565 the I<--force> flag may be specified, requesting to disconnect any existing
566 sessions, such as in a case of a broken connection.
567
568 =item B<create> I<FILE> [I<--console>] [I<--paused>] [I<--autodestroy>]
569 [I<--pass-fds N,M,...>]
570
571 Create a domain from an XML <file>. An easy way to create the XML
572 <file> is to use the B<dumpxml> command to obtain the definition of a
573 pre-existing guest.  The domain will be paused if the I<--paused> option
574 is used and supported by the driver; otherwise it will be running.
575 If I<--console> is requested, attach to the console after creation.
576 If I<--autodestroy> is requested, then the guest will be automatically
577 destroyed when virsh closes its connection to libvirt, or otherwise
578 exits.
579
580 If I<--pass-fds> is specified, the argument is a comma separated list
581 of open file descriptors which should be pass on into the guest. The
582 file descriptors will be re-numbered in the guest, starting from 3. This
583 is only supported with container based virtualization.
584
585 B<Example>
586
587  virsh dumpxml <domain> > domain.xml
588  vi domain.xml (or make changes with your other text editor)
589  virsh create domain.xml
590
591 =item B<define> I<FILE>
592
593 Define a domain from an XML <file>. The domain definition is registered
594 but not started.  If domain is already running, the changes will take
595 effect on the next boot.
596
597 =item B<desc> I<domain> [[I<--live>] [I<--config>] |
598               [I<--current>]] [I<--title>] [I<--edit>] [I<--new-desc>
599               New description or title message]
600
601 Show or modify description and title of a domain. These values are user
602 fields that allow to store arbitrary textual data to allow easy
603 identification of domains. Title should be short, although it's not enforced.
604
605 Flags I<--live> or I<--config> select whether this command works on live
606 or persistent definitions of the domain. If both I<--live> and I<--config>
607 are specified, the I<--config> option takes precedence on getting the current
608 description and both live configuration and config are updated while setting
609 the description. I<--current> is exclusive and implied if none of these was
610 specified.
611
612 Flag I<--edit> specifies that an editor with the contents of current
613 description or title should be opened and the contents saved back afterwards.
614
615 Flag I<--title> selects operation on the title field instead of description.
616
617 If neither of I<--edit> and I<--new-desc> are specified the note or description
618 is displayed instead of being modified.
619
620 =item B<destroy> I<domain> [I<--graceful>]
621
622 Immediately terminate the domain I<domain>.  This doesn't give the domain
623 OS any chance to react, and it's the equivalent of ripping the power
624 cord out on a physical machine.  In most cases you will want to use
625 the B<shutdown> command instead.  However, this does not delete any
626 storage volumes used by the guest, and if the domain is persistent, it
627 can be restarted later.
628
629 If I<domain> is transient, then the metadata of any snapshots will
630 be lost once the guest stops running, but the snapshot contents still
631 exist, and a new domain with the same name and UUID can restore the
632 snapshot metadata with B<snapshot-create>.
633
634 If I<--graceful> is specified, don't resort to extreme measures
635 (e.g. SIGKILL) when the guest doesn't stop after a reasonable timeout;
636 return an error instead.
637
638 =item B<domblkstat> I<domain> [I<block-device>] [I<--human>]
639
640 Get device block stats for a running domain.  A I<block-device> corresponds
641 to a unique target name (<target dev='name'/>) or source file (<source
642 file='name'/>) for one of the disk devices attached to I<domain> (see
643 also B<domblklist> for listing these names). On a lxc domain, omitting the
644 I<block-device> yields device block stats summarily for the entire domain.
645
646 Use I<--human> for a more human readable output.
647
648 Availability of these fields depends on hypervisor. Unsupported fields are
649 missing from the output. Other fields may appear if communicating with a newer
650 version of libvirtd.
651
652 B<Explanation of fields> (fields appear in the following order):
653   rd_req            - count of read operations
654   rd_bytes          - count of read bytes
655   wr_req            - count of write operations
656   wr_bytes          - count of written bytes
657   errs              - error count
658   flush_operations  - count of flush operations
659   rd_total_times    - total time read operations took (ns)
660   wr_total_times    - total time write operations took (ns)
661   flush_total_times - total time flush operations took (ns)
662     <-- other fields provided by hypervisor -->
663
664 =item B<domifstat> I<domain> I<interface-device>
665
666 Get network interface stats for a running domain.
667
668 =item B<domif-setlink> I<domain> I<interface-device> I<state> [I<--config>]
669
670 Modify link state of the domain's virtual interface. Possible values for
671 state are "up" and "down. If I<--config> is specified, only the persistent
672 configuration of the domain is modified, for compatibility purposes,
673 I<--persistent> is alias of I<--config>.
674 I<interface-device> can be the interface's target name or the MAC address.
675
676 =item B<domif-getlink> I<domain> I<interface-device> [I<--config>]
677
678 Query link state of the domain's virtual interface. If I<--config>
679 is specified, query the persistent configuration, for compatibility
680 purposes, I<--persistent> is alias of I<--config>.
681
682 I<interface-device> can be the interface's target name or the MAC address.
683
684 =item B<domiftune> I<domain> I<interface-device>
685 [[I<--config>] [I<--live>] | [I<--current>]]
686 [I<--inbound average,peak,burst>]
687 [I<--outbound average,peak,burst>]
688
689 Set or query the domain's network interface's bandwidth parameters.
690 I<interface-device> can be the interface's target name (<target dev='name'/>),
691 or the MAC address.
692
693 If no I<--inbound> or I<--outbound> is specified, this command will
694 query and show the bandwidth settings. Otherwise, it will set the
695 inbound or outbound bandwidth. I<average,peak,burst> is the same as
696 in command I<attach-interface>.  Values for I<average> and I<peak> are
697 expressed in kilobytes per second, while I<burst> is expressed in kilobytes
698 in a single burst at -I<peak> speed as described in the Network XML
699 documentation at L<http://libvirt.org/formatnetwork.html#elementQoS>.
700
701 To clear inbound or outbound settings, use I<--inbound> or I<--outbound>
702 respectfully with average value of zero.
703
704 If I<--live> is specified, affect a running guest.
705 If I<--config> is specified, affect the next boot of a persistent guest.
706 If I<--current> is specified, affect the current guest state.
707 Both I<--live> and I<--current> flags may be given, but I<--current> is
708 exclusive. If no flag is specified, behavior is different depending
709 on hypervisor.
710
711 =item B<dommemstat> I<domain> [I<--period> B<seconds>]
712 [[I<--config>] [I<--live>] | [I<--current>]]
713
714 Get memory stats for a running domain.
715
716 Depending on the hypervisor a variety of statistics can be returned
717
718 For QEMU/KVM with a memory balloon, setting the optional I<--period> to a
719 value larger than 0 in seconds will allow the balloon driver to return
720 additional statistics which will be displayed by subsequent B<dommemstat>
721 commands. Setting the I<--period> to 0 will stop the balloon driver collection,
722 but does not clear the statistics in the balloon driver. Requires at least
723 QEMU/KVM 1.5 to be running on the host.
724
725 The I<--live>, I<--config>, and I<--current> flags are only valid when using
726 the I<--period> option in order to set the collection period for the balloon
727 driver. If I<--live> is specified, only the running guest collection period
728 is affected. If I<--config> is specified, affect the next boot of a persistent
729 guest. If I<--current> is specified, affect the current guest state.
730
731 Both I<--live> and I<--config> flags may be given, but I<--current> is
732 exclusive. If no flag is specified, behavior is different depending
733 on the guest state.
734
735 =item B<domblkerror> I<domain>
736
737 Show errors on block devices.  This command usually comes handy when
738 B<domstate> command says that a domain was paused due to I/O error.
739 The B<domblkerror> command lists all block devices in error state and
740 the error seen on each of them.
741
742 =item B<domblkinfo> I<domain> I<block-device>
743
744 Get block device size info for a domain.  A I<block-device> corresponds
745 to a unique target name (<target dev='name'/>) or source file (<source
746 file='name'/>) for one of the disk devices attached to I<domain> (see
747 also B<domblklist> for listing these names).
748
749 =item B<domblklist> I<domain> [I<--inactive>] [I<--details>]
750
751 Print a table showing the brief information of all block devices
752 associated with I<domain>. If I<--inactive> is specified, query the
753 block devices that will be used on the next boot, rather than those
754 currently in use by a running domain. If I<--details> is specified,
755 disk type and device value will also be printed. Other contexts
756 that require a block device name (such as I<domblkinfo> or
757 I<snapshot-create> for disk snapshots) will accept either target
758 or unique source names printed by this command.
759
760 =item B<domiflist> I<domain> [I<--inactive>]
761
762 Print a table showing the brief information of all virtual interfaces
763 associated with I<domain>. If I<--inactive> is specified, query the
764 virtual interfaces that will be used on the next boot, rather than those
765 currently in use by a running domain. Other contexts that require a MAC
766 address of virtual interface (such as I<detach-interface> or
767 I<domif-setlink>) will accept the MAC address printed by this command.
768
769 =item B<blockcommit> I<domain> I<path> [I<bandwidth>]
770 {[I<base>] | [I<--shallow>]} [I<top>] [I<--delete>]
771 [I<--wait> [I<--verbose>] [I<--timeout> B<seconds>] [I<--async>]]
772
773 Reduce the length of a backing image chain, by committing changes at the
774 top of the chain (snapshot or delta files) into backing images.  By
775 default, this command attempts to flatten the entire chain.  If I<base>
776 and/or I<top> are specified as files within the backing chain, then the
777 operation is constrained to committing just that portion of the chain;
778 I<--shallow> can be used instead of I<base> to specify the immediate
779 backing file of the resulting top image to be committed.  The files
780 being committed are rendered invalid, possibly as soon as the operation
781 starts; using the I<--delete> flag will remove these files at the successful
782 completion of the commit operation.
783
784 By default, this command returns as soon as possible, and data for
785 the entire disk is committed in the background; the progress of the
786 operation can be checked with B<blockjob>.  However, if I<--wait> is
787 specified, then this command will block until the operation completes,
788 or cancel the operation if the optional I<timeout> in seconds elapses
789 or SIGINT is sent (usually with C<Ctrl-C>).  Using I<--verbose> along
790 with I<--wait> will produce periodic status updates.  If job cancellation
791 is triggered, I<--async> will return control to the user as fast as
792 possible, otherwise the command may continue to block a little while
793 longer until the job is done cleaning up.
794
795 I<path> specifies fully-qualified path of the disk; it corresponds
796 to a unique target name (<target dev='name'/>) or source file (<source
797 file='name'/>) for one of the disk devices attached to I<domain> (see
798 also B<domblklist> for listing these names).
799 I<bandwidth> specifies copying bandwidth limit in MiB/s, although for
800 qemu, it may be non-zero only for an online domain.
801
802 =item B<blockcopy> I<domain> I<path> I<dest> [I<bandwidth>] [I<--shallow>]
803 [I<--reuse-external>] [I<--raw>] [I<--wait> [I<--verbose>]
804 [{I<--pivot> | I<--finish>}] [I<--timeout> B<seconds>] [I<--async>]]
805
806 Copy a disk backing image chain to I<dest>. By default, this command
807 flattens the entire chain; but if I<--shallow> is specified, the copy
808 shares the backing chain.
809
810 If I<--reuse-external> is specified, then I<dest> must exist and have
811 contents identical to the resulting backing file (that is, it must
812 start with contents matching the backing file I<disk> if I<--shallow>
813 is used, otherwise it must start empty); this option is typically used
814 to set up a relative backing file name in the destination.
815
816 The format of the destination is determined by the first match in the
817 following list: if I<--raw> is specified, it will be raw; if
818 I<--reuse-external> is specified, the existing destination is probed
819 for a format; and in all other cases, the destination format will
820 match the source format.
821
822 By default, the copy job runs in the background, and consists of two
823 phases.  Initially, the job must copy all data from the source, and
824 during this phase, the job can only be canceled to revert back to the
825 source disk, with no guarantees about the destination.  After this phase
826 completes, both the source and the destination remain mirrored until a
827 call to B<blockjob> with the I<--abort> and I<--pivot> flags pivots over
828 to the copy, or a call without I<--pivot> leaves the destination as a
829 faithful copy of that point in time.  However, if I<--wait> is specified,
830 then this command will block until the mirroring phase begins, or cancel
831 the operation if the optional I<timeout> in seconds elapses or SIGINT is
832 sent (usually with C<Ctrl-C>).  Using I<--verbose> along with I<--wait>
833 will produce periodic status updates.  Using I<--pivot> or I<--finish>
834 along with I<--wait> will additionally end the job cleanly rather than
835 leaving things in the mirroring phase.  If job cancellation is triggered,
836 I<--async> will return control to the user as fast as possible, otherwise
837 the command may continue to block a little while longer until the job
838 is done cleaning up.
839
840 I<path> specifies fully-qualified path of the disk.
841 I<bandwidth> specifies copying bandwidth limit in MiB/s.
842
843 =item B<blockpull> I<domain> I<path> [I<bandwidth>] [I<base>]
844 [I<--wait> [I<--verbose>] [I<--timeout> B<seconds>] [I<--async>]]
845
846 Populate a disk from its backing image chain. By default, this command
847 flattens the entire chain; but if I<base> is specified, containing the
848 name of one of the backing files in the chain, then that file becomes
849 the new backing file and only the intermediate portion of the chain is
850 pulled.  Once all requested data from the backing image chain has been
851 pulled, the disk no longer depends on that portion of the backing chain.
852
853 By default, this command returns as soon as possible, and data for
854 the entire disk is pulled in the background; the progress of the
855 operation can be checked with B<blockjob>.  However, if I<--wait> is
856 specified, then this command will block until the operation completes,
857 or cancel the operation if the optional I<timeout> in seconds elapses
858 or SIGINT is sent (usually with C<Ctrl-C>).  Using I<--verbose> along
859 with I<--wait> will produce periodic status updates.  If job cancellation
860 is triggered, I<--async> will return control to the user as fast as
861 possible, otherwise the command may continue to block a little while
862 longer until the job is done cleaning up.
863
864 I<path> specifies fully-qualified path of the disk; it corresponds
865 to a unique target name (<target dev='name'/>) or source file (<source
866 file='name'/>) for one of the disk devices attached to I<domain> (see
867 also B<domblklist> for listing these names).
868 I<bandwidth> specifies copying bandwidth limit in MiB/s.
869
870 =item B<blkdeviotune> I<domain> I<device>
871 [[I<--config>] [I<--live>] | [I<--current>]]
872 [[I<total-bytes-sec>] | [I<read-bytes-sec>] [I<write-bytes-sec>]]
873 [[I<total-iops-sec>] | [I<read-iops-sec>] [I<write-iops-sec>]]
874
875 Set or query the block disk io parameters for a block device of I<domain>.
876 I<device> specifies a unique target name (<target dev='name'/>) or source
877 file (<source file='name'/>) for one of the disk devices attached to
878 I<domain> (see also B<domblklist> for listing these names).
879
880 If no limit is specified, it will query current I/O limits setting.
881 Otherwise, alter the limits with these flags:
882 I<--total-bytes-sec> specifies total throughput limit in bytes per second.
883 I<--read-bytes-sec> specifies read throughput limit in bytes per second.
884 I<--write-bytes-sec> specifies write throughput limit in bytes per second.
885 I<--total-iops-sec> specifies total I/O operations limit per second.
886 I<--read-iops-sec> specifies read I/O operations limit per second.
887 I<--write-iops-sec> specifies write I/O operations limit per second.
888
889 Older versions of virsh only accepted these options with underscore
890 instead of dash, as in I<--total_bytes_sec>.
891
892 Bytes and iops values are independent, but setting only one value (such
893 as --read-bytes-sec) resets the other two in that category to unlimited.
894 An explicit 0 also clears any limit.  A non-zero value for a given total
895 cannot be mixed with non-zero values for read or write.
896
897 If I<--live> is specified, affect a running guest.
898 If I<--config> is specified, affect the next boot of a persistent guest.
899 If I<--current> is specified, affect the current guest state.
900 Both I<--live> and I<--current> flags may be given, but I<--current> is
901 exclusive. If no flag is specified, behavior is different depending
902 on hypervisor.
903
904 =item B<blockjob> I<domain> I<path> { [I<--abort>] [I<--async>] [I<--pivot>] |
905 [I<--info>] | [I<bandwidth>] }
906
907 Manage active block operations.  There are three modes: I<--info>,
908 I<bandwidth>, and I<--abort>; I<--info> is default except that I<--async>
909 or I<--pivot> implies I<--abort>.
910
911 I<path> specifies fully-qualified path of the disk; it corresponds
912 to a unique target name (<target dev='name'/>) or source file (<source
913 file='name'/>) for one of the disk devices attached to I<domain> (see
914 also B<domblklist> for listing these names).
915
916 If I<--abort> is specified, the active job on the specified disk will
917 be aborted.  If I<--async> is also specified, this command will return
918 immediately, rather than waiting for the cancellation to complete.  If
919 I<--pivot> is specified, this requests that an active copy job
920 be pivoted over to the new copy.
921 If I<--info> is specified, the active job information on the specified
922 disk will be printed.
923 I<bandwidth> can be used to set bandwidth limit for the active job.
924
925 =item B<blockresize> I<domain> I<path> I<size>
926
927 Resize a block device of domain while the domain is running, I<path>
928 specifies the absolute path of the block device; it corresponds
929 to a unique target name (<target dev='name'/>) or source file (<source
930 file='name'/>) for one of the disk devices attached to I<domain> (see
931 also B<domblklist> for listing these names).
932
933 I<size> is a scaled integer (see B<NOTES> above) which defaults to KiB
934 (blocks of 1024 bytes) if there is no suffix.  You must use a suffix of
935 "B" to get bytes (note that for historical reasons, this differs from
936 B<vol-resize> which defaults to bytes without a suffix).
937
938 =item B<domdisplay> I<domain> [I<--include-password>]
939
940 Output a URI which can be used to connect to the graphical display of the
941 domain via VNC, SPICE or RDP. If I<--include-password> is specified, the
942 SPICE channel password will be included in the URI.
943
944 =item B<domfsfreeze> I<domain> [[I<--mountpoint>] B<mountpoint>...]
945
946 Freeze mounted filesystems within a running domain to prepare for consistent
947 snapshots.
948
949 The I<--mountpoint> option takes a parameter B<mountpoint>, which is a
950 mount point path of the filesystem to be frozen. This option can occur
951 multiple times. If this is not specified, every mounted filesystem is frozen.
952
953 Note: B<snapshot-create> command has a I<--quiesce> option to freeze
954 and thaw the filesystems automatically to keep snapshots consistent.
955 B<domfsfreeze> command is only needed when a user wants to utilize the
956 native snapshot features of storage devices not supported by libvirt.
957
958 =item B<domfsthaw> I<domain> [[I<--mountpoint>] B<mountpoint>...]
959
960 Thaw mounted filesystems within a running domain, which have been frozen by
961 domfsfreeze command.
962
963 The I<--mountpoint> option takes a parameter B<mountpoint>, which is a
964 mount point path of the filesystem to be thawed. This option can occur
965 multiple times. If this is not specified, every mounted filesystem is thawed.
966
967 =item B<domfstrim> I<domain> [I<--minimum> B<bytes>]
968 [I<--mountpoint mountPoint>]
969
970 Issue a fstrim command on all mounted filesystems within a running
971 domain. It discards blocks which are not in use by the filesystem.
972 If I<--minimum> B<bytes> is specified, it tells guest kernel length
973 of contiguous free range. Smaller than this may be ignored (this is
974 a hint and the guest may not respect it). By increasing this value,
975 the fstrim operation will complete more quickly for filesystems
976 with badly fragmented free space, although not all blocks will
977 be discarded.  The default value is zero, meaning "discard
978 every free block". Moreover, a if user wants to trim only one mount
979 point, it can be specified via optional I<--mountpoint> parameter.
980
981 =item B<domhostname> I<domain>
982
983 Returns the hostname of a domain, if the hypervisor makes it available.
984
985 =item B<dominfo> I<domain>
986
987 Returns basic information about the domain.
988
989 =item B<domuuid> I<domain-name-or-id>
990
991 Convert a domain name or id to domain UUID
992
993 =item B<domid> I<domain-name-or-uuid>
994
995 Convert a domain name (or UUID) to a domain id
996
997 =item B<domjobabort> I<domain>
998
999 Abort the currently running domain job.
1000
1001 =item B<domjobinfo> I<domain>
1002
1003 Returns information about jobs running on a domain.
1004
1005 =item B<domname> I<domain-id-or-uuid>
1006
1007 Convert a domain Id (or UUID) to domain name
1008
1009 =item B<domstate> I<domain> [I<--reason>]
1010
1011 Returns state about a domain.  I<--reason> tells virsh to also print
1012 reason for the state.
1013
1014 =item B<domcontrol> I<domain>
1015
1016 Returns state of an interface to VMM used to control a domain.  For
1017 states other than "ok" or "error" the command also prints number of
1018 seconds elapsed since the control interface entered its current state.
1019
1020 =item B<domtime> I<domain> { [I<--now>] [I<--pretty>] [I<--sync>]
1021 [I<--time> B<time>] }
1022
1023 Gets or sets the domain's system time. When run without any arguments
1024 (but I<domain>), the current domain's system time is printed out. The
1025 I<--pretty> modifier can be used to print the time in more human
1026 readable form.
1027
1028 When I<--time> B<time> is specified, the domain's time is
1029 not gotten but set instead. The I<--now> modifier acts like if it was
1030 an alias for I<--time> B<$now>, which means it sets the time that is
1031 currently on the host virsh is running at. In both cases (setting and
1032 getting), time is in seconds relative to Epoch of 1970-01-01 in UTC.
1033 The I<--sync> modifies the set behavior a bit: The time passed is
1034 ignored, but the time to set is read from domain's RTC instead. Please
1035 note, that some hypervisors may require a guest agent to be configured
1036 in order to get or set the guest time.
1037
1038 =item B<domxml-from-native> I<format> I<config>
1039
1040 Convert the file I<config> in the native guest configuration format
1041 named by I<format> to a domain XML format. For QEMU/KVM hypervisor,
1042 the I<format> argument must be B<qemu-argv>. For Xen hypervisor, the
1043 I<format> argument may be B<xen-xm> or B<xen-sxpr>.
1044
1045 =item B<domxml-to-native> I<format> I<xml>
1046
1047 Convert the file I<xml> in domain XML format to the native guest
1048 configuration format named by I<format>. For QEMU/KVM hypervisor,
1049 the I<format> argument must be B<qemu-argv>. For Xen hypervisor, the
1050 I<format> argument may be B<xen-xm> or B<xen-sxpr>.
1051
1052 =item B<dump> I<domain> I<corefilepath> [I<--bypass-cache>]
1053 { [I<--live>] | [I<--crash>] | [I<--reset>] } [I<--verbose>] [I<--memory-only>]
1054 [I<--format> I<string>]
1055
1056 Dumps the core of a domain to a file for analysis.
1057 If I<--live> is specified, the domain continues to run until the core
1058 dump is complete, rather than pausing up front.
1059 If I<--crash> is specified, the domain is halted with a crashed status,
1060 rather than merely left in a paused state.
1061 If I<--reset> is specified, the domain is reset after successful dump.
1062 Note, these three switches are mutually exclusive.
1063 If I<--bypass-cache> is specified, the save will avoid the file system
1064 cache, although this may slow down the operation.
1065 If I<--memory-only> is specified, the file is elf file, and will only
1066 include domain's memory and cpu common register value. It is very
1067 useful if the domain uses host devices directly.
1068 I<--format> I<string> is used to specify the format of 'memory-only'
1069 dump, and I<string> can be one of them: elf, kdump-zlib(kdump-compressed
1070 format with zlib-compressed), kdump-lzo(kdump-compressed format with
1071 lzo-compressed), kdump-snappy(kdump-compressed format with snappy-compressed).
1072
1073 The progress may be monitored using B<domjobinfo> virsh command and canceled
1074 with B<domjobabort> command (sent by another virsh instance). Another option
1075 is to send SIGINT (usually with C<Ctrl-C>) to the virsh process running
1076 B<dump> command. I<--verbose> displays the progress of dump.
1077
1078 NOTE: Some hypervisors may require the user to manually ensure proper
1079 permissions on file and path specified by argument I<corefilepath>.
1080
1081 =item B<dumpxml> I<domain> [I<--inactive>] [I<--security-info>]
1082 [I<--update-cpu>] [I<--migratable>]
1083
1084 Output the domain information as an XML dump to stdout, this format can be used
1085 by the B<create> command. Additional options affecting the XML dump may be
1086 used. I<--inactive> tells virsh to dump domain configuration that will be used
1087 on next start of the domain as opposed to the current domain configuration.
1088 Using I<--security-info> will also include security sensitive information
1089 in the XML dump. I<--update-cpu> updates domain CPU requirements according to
1090 host CPU. With I<--migratable> one can request an XML that is suitable for
1091 migrations, i.e., compatible with older libvirt releases and possibly amended
1092 with internal run-time options. This option may automatically enable other
1093 options (I<--update-cpu>, I<--security-info>, ...) as necessary.
1094
1095 =item B<edit> I<domain>
1096
1097 Edit the XML configuration file for a domain, which will affect the
1098 next boot of the guest.
1099
1100 This is equivalent to:
1101
1102  virsh dumpxml --inactive --security-info domain > domain.xml
1103  vi domain.xml (or make changes with your other text editor)
1104  virsh define domain.xml
1105
1106 except that it does some error checking.
1107
1108 The editor used can be supplied by the C<$VISUAL> or C<$EDITOR> environment
1109 variables, and defaults to C<vi>.
1110
1111 =item B<event> {[I<domain>] { I<event> | I<--all> } [I<--loop>]
1112 [I<--timeout> I<seconds>] | I<--list>}
1113
1114 Wait for a class of domain events to occur, and print appropriate details
1115 of events as they happen.  The events can optionally be filtered by
1116 I<domain>.  Using I<--list> as the only argument will provide a list
1117 of possible I<event> values known by this client, although the connection
1118 might not allow registering for all these events.  It is also possible
1119 to use I<--all> instead of I<event> to register for all possible event
1120 types at once.
1121
1122 By default, this command is one-shot, and returns success once an event
1123 occurs; you can send SIGINT (usually via C<Ctrl-C>) to quit immediately.
1124 If I<--timeout> is specified, the command gives up waiting for events
1125 after I<seconds> have elapsed.   With I<--loop>, the command prints all
1126 events until a timeout or interrupt key.
1127
1128 =item B<managedsave> I<domain> [I<--bypass-cache>]
1129 [{I<--running> | I<--paused>}] [I<--verbose>]
1130
1131 Save and destroy (stop) a running domain, so it can be restarted from the same
1132 state at a later time.  When the virsh B<start> command is next run for
1133 the domain, it will automatically be started from this saved state.
1134 If I<--bypass-cache> is specified, the save will avoid the file system
1135 cache, although this may slow down the operation.
1136
1137 The progress may be monitored using B<domjobinfo> virsh command and canceled
1138 with B<domjobabort> command (sent by another virsh instance). Another option
1139 is to send SIGINT (usually with C<Ctrl-C>) to the virsh process running
1140 B<managedsave> command. I<--verbose> displays the progress of save.
1141
1142 Normally, starting a managed save will decide between running or paused
1143 based on the state the domain was in when the save was done; passing
1144 either the I<--running> or I<--paused> flag will allow overriding which
1145 state the B<start> should use.
1146
1147 The B<dominfo> command can be used to query whether a domain currently
1148 has any managed save image.
1149
1150 =item B<managedsave-remove> I<domain>
1151
1152 Remove the B<managedsave> state file for a domain, if it exists.  This
1153 ensures the domain will do a full boot the next time it is started.
1154
1155 =item B<maxvcpus> [I<type>]
1156
1157 Provide the maximum number of virtual CPUs supported for a guest VM on
1158 this connection.  If provided, the I<type> parameter must be a valid
1159 type attribute for the <domain> element of XML.
1160
1161 =item B<cpu-stats> I<domain> [I<--total>] [I<start>] [I<count>]
1162
1163 Provide cpu statistics information of a domain. The domain should
1164 be running. Default it shows stats for all CPUs, and a total. Use
1165 I<--total> for only the total stats, I<start> for only the per-cpu
1166 stats of the CPUs from I<start>, I<count> for only I<count> CPUs'
1167 stats.
1168
1169 =item B<migrate> [I<--live>] [I<--offline>] [I<--direct>] [I<--p2p> [I<--tunnelled>]]
1170 [I<--persistent>] [I<--undefinesource>] [I<--suspend>] [I<--copy-storage-all>]
1171 [I<--copy-storage-inc>] [I<--change-protection>] [I<--unsafe>] [I<--verbose>]
1172 [I<--compressed>] [I<--abort-on-error>]
1173 I<domain> I<desturi> [I<migrateuri>] [I<graphicsuri>] [I<listen-address>]
1174 [I<dname>] [I<--timeout> B<seconds>] [I<--xml> B<file>]
1175
1176 Migrate domain to another host.  Add I<--live> for live migration; <--p2p>
1177 for peer-2-peer migration; I<--direct> for direct migration; or I<--tunnelled>
1178 for tunnelled migration.  I<--offline> migrates domain definition without
1179 starting the domain on destination and without stopping it on source host.
1180 Offline migration may be used with inactive domains and it must be used with
1181 I<--persistent> option.  I<--persistent> leaves the domain persistent on
1182 destination host, I<--undefinesource> undefines the domain on the source host,
1183 and I<--suspend> leaves the domain paused on the destination host.
1184 I<--copy-storage-all> indicates migration with non-shared storage with full
1185 disk copy, I<--copy-storage-inc> indicates migration with non-shared storage
1186 with incremental copy (same base image shared between source and destination).
1187 In both cases the disk images have to exist on destination host, the
1188 I<--copy-storage-...> options only tell libvirt to transfer data from the
1189 images on source host to the images found at the same place on the destination
1190 host. I<--change-protection> enforces that no incompatible configuration
1191 changes will be made to the domain while the migration is underway; this flag
1192 is implicitly enabled when supported by the hypervisor, but can be explicitly
1193 used to reject the migration if the hypervisor lacks change protection
1194 support.  I<--verbose> displays the progress of migration.  I<--compressed>
1195 activates compression of memory pages that have to be transferred repeatedly
1196 during live migration. I<--abort-on-error> cancels the migration if a soft
1197 error (for example I/O error) happens during the migration.
1198
1199 B<Note>: Individual hypervisors usually do not support all possible types of
1200 migration. For example, QEMU does not support direct migration.
1201
1202 In some cases libvirt may refuse to migrate the domain because doing so may
1203 lead to potential problems such as data corruption, and thus the migration is
1204 considered unsafe. For QEMU domain, this may happen if the domain uses disks
1205 without explicitly setting cache mode to "none". Migrating such domains is
1206 unsafe unless the disk images are stored on coherent clustered filesystem,
1207 such as GFS2 or GPFS. If you are sure the migration is safe or you just do not
1208 care, use I<--unsafe> to force the migration.
1209
1210 The I<desturi> is the connection URI of the destination host, and
1211 I<migrateuri> is the migration URI, which usually can be omitted (see below).
1212 I<dname> is used for renaming the domain to new name during migration, which
1213 also usually can be omitted.  Likewise, I<--xml> B<file> is usually
1214 omitted, but can be used to supply an alternative XML file for use on
1215 the destination to supply a larger set of changes to any host-specific
1216 portions of the domain XML, such as accounting for naming differences
1217 between source and destination in accessing underlying storage.
1218
1219 I<--timeout> B<seconds> forces guest to suspend when live migration exceeds
1220 that many seconds, and
1221 then the migration will complete offline. It can only be used with I<--live>.
1222
1223 Running migration can be canceled by interrupting virsh (usually using
1224 C<Ctrl-C>) or by B<domjobabort> command sent from another virsh instance.
1225
1226 B<Note>: The I<desturi> parameter for normal migration and peer2peer migration
1227 has different semantics:
1228
1229 =over 4
1230
1231 =item * normal migration: the I<desturi> is an address of the target host as
1232 seen from the client machine.
1233
1234 =item * peer2peer migration: the I<desturi> is an address of the target host as
1235 seen from the source machine.
1236
1237 =back
1238
1239 When I<migrateuri> is not specified, libvirt will automatically determine the
1240 hypervisor specific URI, by looking up the target host's configured hostname.
1241 There are a few scenarios where specifying I<migrateuri> may help:
1242
1243 =over 4
1244
1245 =item * The configured hostname is incorrect, or DNS is broken.  If a host has a
1246 hostname which will not resolve to match one of its public IP addresses, then
1247 libvirt will generate an incorrect URI.  In this case I<migrateuri> should be
1248 explicitly specified, using an IP address, or a correct hostname.
1249
1250 =item * The host has multiple network interfaces.  If a host has multiple network
1251 interfaces, it might be desirable for the migration data stream to be sent over
1252 a specific interface for either security or performance reasons.  In this case
1253 I<migrateuri> should be explicitly specified, using an IP address associated
1254 with the network to be used.
1255
1256 =item * The firewall restricts what ports are available.  When libvirt generates
1257 a migration URI, it will pick a port number using hypervisor specific rules.
1258 Some hypervisors only require a single port to be open in the firewalls, while
1259 others require a whole range of port numbers.  In the latter case I<migrateuri>
1260 might be specified to choose a specific port number outside the default range in
1261 order to comply with local firewall policies.
1262
1263 =back
1264
1265 Optional I<graphicsuri> overrides connection parameters used for automatically
1266 reconnecting a graphical clients at the end of migration. If omitted, libvirt
1267 will compute the parameters based on target host IP address. In case the
1268 client does not have a direct access to the network virtualization hosts are
1269 connected to and needs to connect through a proxy, I<graphicsuri> may be used
1270 to specify the address the client should connect to. The URI is formed as
1271 follows:
1272
1273     protocol://hostname[:port]/[?parameters]
1274
1275 where protocol is either "spice" or "vnc" and parameters is a list of protocol
1276 specific parameters separated by '&'. Currently recognized parameters are
1277 "tlsPort" and "tlsSubject". For example,
1278
1279     spice://target.host.com:1234/?tlsPort=4567
1280
1281 Optional I<listen-address> sets the listen address that hypervisor on the
1282 destination side should bind to for incoming migration. Both IPv4 and IPv6
1283 addresses are accepted as well as hostnames (the resolving is done on
1284 destination). Some hypervisors do not support this feature and will return an
1285 error if this parameter is used.
1286
1287 =item B<migrate-setmaxdowntime> I<domain> I<downtime>
1288
1289 Set maximum tolerable downtime for a domain which is being live-migrated to
1290 another host.  The I<downtime> is a number of milliseconds the guest is allowed
1291 to be down at the end of live migration.
1292
1293 =item B<migrate-compcache> I<domain> [I<--size> B<bytes>]
1294
1295 Sets and/or gets size of the cache (in bytes) used for compressing repeatedly
1296 transferred memory pages during live migration. When called without I<size>,
1297 the command just prints current size of the compression cache. When I<size>
1298 is specified, the hypervisor is asked to change compression cache to I<size>
1299 bytes and then the current size is printed (the result may differ from the
1300 requested size due to rounding done by the hypervisor). The I<size> option
1301 is supposed to be used while the domain is being live-migrated as a reaction
1302 to migration progress and increasing number of compression cache misses
1303 obtained from domjobinfo.
1304
1305 =item B<migrate-setspeed> I<domain> I<bandwidth>
1306
1307 Set the maximum migration bandwidth (in MiB/s) for a domain which is being
1308 migrated to another host.
1309
1310 =item B<migrate-getspeed> I<domain>
1311
1312 Get the maximum migration bandwidth (in MiB/s) for a domain.
1313
1314 =item B<numatune> I<domain> [I<--mode> B<mode>] [I<--nodeset> B<nodeset>]
1315 [[I<--config>] [I<--live>] | [I<--current>]]
1316
1317 Set or get a domain's numa parameters, corresponding to the <numatune>
1318 element of domain XML.  Without flags, the current settings are
1319 displayed.
1320
1321 I<mode> can be one of `strict', `interleave' and `preferred'.  For a
1322 running domain, the mode can't be changed, and the nodeset can be
1323 changed only if the domain was started with a mode of `strict'.
1324
1325 I<nodeset> is a list of numa nodes used by the host for running the domain.
1326 Its syntax is a comma separated list, with '-' for ranges and '^' for
1327 excluding a node.
1328
1329 If I<--live> is specified, set scheduler information of a running guest.
1330 If I<--config> is specified, affect the next boot of a persistent guest.
1331 If I<--current> is specified, affect the current guest state.
1332
1333 =item B<reboot> I<domain> [I<--mode MODE-LIST>]
1334
1335 Reboot a domain.  This acts just as if the domain had the B<reboot>
1336 command run from the console.  The command returns as soon as it has
1337 executed the reboot action, which may be significantly before the
1338 domain actually reboots.
1339
1340 The exact behavior of a domain when it reboots is set by the
1341 I<on_reboot> parameter in the domain's XML definition.
1342
1343 By default the hypervisor will try to pick a suitable shutdown
1344 method. To specify an alternative method, the I<--mode> parameter
1345 can specify a comma separated list which includes C<acpi>, C<agent>,
1346 C<initctl>, C<signal> and C<paravirt>. The order in which drivers will
1347 try each mode is undefined, and not related to the order specified to virsh.
1348 For strict control over ordering, use a single mode at a time and
1349 repeat the command.
1350
1351 =item B<reset> I<domain>
1352
1353 Reset a domain immediately without any guest shutdown. B<reset>
1354 emulates the power reset button on a machine, where all guest
1355 hardware sees the RST line set and reinitializes internal state.
1356
1357 B<Note>: Reset without any guest OS shutdown risks data loss.
1358
1359 =item B<restore> I<state-file> [I<--bypass-cache>] [I<--xml> B<file>]
1360 [{I<--running> | I<--paused>}]
1361
1362 Restores a domain from a B<virsh save> state file. See I<save> for more info.
1363
1364 If I<--bypass-cache> is specified, the restore will avoid the file system
1365 cache, although this may slow down the operation.
1366
1367 I<--xml> B<file> is usually omitted, but can be used to supply an
1368 alternative XML file for use on the restored guest with changes only
1369 in the host-specific portions of the domain XML.  For example, it can
1370 be used to account for file naming differences in underlying storage
1371 due to disk snapshots taken after the guest was saved.
1372
1373 Normally, restoring a saved image will use the state recorded in the
1374 save image to decide between running or paused; passing either the
1375 I<--running> or I<--paused> flag will allow overriding which state the
1376 domain should be started in.
1377
1378 B<Note>: To avoid corrupting file system contents within the domain, you
1379 should not reuse the saved state file for a second B<restore> unless you
1380 have also reverted all storage volumes back to the same contents as when
1381 the state file was created.
1382
1383 =item B<save> I<domain> I<state-file> [I<--bypass-cache>] [I<--xml> B<file>]
1384 [{I<--running> | I<--paused>}] [I<--verbose>]
1385
1386 Saves a running domain (RAM, but not disk state) to a state file so that
1387 it can be restored
1388 later.  Once saved, the domain will no longer be running on the
1389 system, thus the memory allocated for the domain will be free for
1390 other domains to use.  B<virsh restore> restores from this state file.
1391 If I<--bypass-cache> is specified, the save will avoid the file system
1392 cache, although this may slow down the operation.
1393
1394 The progress may be monitored using B<domjobinfo> virsh command and canceled
1395 with B<domjobabort> command (sent by another virsh instance). Another option
1396 is to send SIGINT (usually with C<Ctrl-C>) to the virsh process running
1397 B<save> command. I<--verbose> displays the progress of save.
1398
1399 This is roughly equivalent to doing a hibernate on a running computer,
1400 with all the same limitations.  Open network connections may be
1401 severed upon restore, as TCP timeouts may have expired.
1402
1403 I<--xml> B<file> is usually omitted, but can be used to supply an
1404 alternative XML file for use on the restored guest with changes only
1405 in the host-specific portions of the domain XML.  For example, it can
1406 be used to account for file naming differences that are planned to
1407 be made via disk snapshots of underlying storage after the guest is saved.
1408
1409 Normally, restoring a saved image will decide between running or paused
1410 based on the state the domain was in when the save was done; passing
1411 either the I<--running> or I<--paused> flag will allow overriding which
1412 state the B<restore> should use.
1413
1414 Domain saved state files assume that disk images will be unchanged
1415 between the creation and restore point.  For a more complete system
1416 restore point, where the disk state is saved alongside the memory
1417 state, see the B<snapshot> family of commands.
1418
1419 =item B<save-image-define> I<file> I<xml> [{I<--running> | I<--paused>}]
1420
1421 Update the domain XML that will be used when I<file> is later
1422 used in the B<restore> command.  The I<xml> argument must be a file
1423 name containing the alternative XML, with changes only in the
1424 host-specific portions of the domain XML.  For example, it can
1425 be used to account for file naming differences resulting from creating
1426 disk snapshots of underlying storage after the guest was saved.
1427
1428 The save image records whether the domain should be restored to a
1429 running or paused state.  Normally, this command does not alter the
1430 recorded state; passing either the I<--running> or I<--paused> flag
1431 will allow overriding which state the B<restore> should use.
1432
1433 =item B<save-image-dumpxml> I<file> [I<--security-info>]
1434
1435 Extract the domain XML that was in effect at the time the saved state
1436 file I<file> was created with the B<save> command.  Using
1437 I<--security-info> will also include security sensitive information.
1438
1439 =item B<save-image-edit> I<file> [{I<--running> | I<--paused>}]
1440
1441 Edit the XML configuration associated with a saved state file I<file>
1442 created by the B<save> command.
1443
1444 The save image records whether the domain should be restored to a
1445 running or paused state.  Normally, this command does not alter the
1446 recorded state; passing either the I<--running> or I<--paused> flag
1447 will allow overriding which state the B<restore> should use.
1448
1449 This is equivalent to:
1450
1451  virsh save-image-dumpxml state-file > state-file.xml
1452  vi state-file.xml (or make changes with your other text editor)
1453  virsh save-image-define state-file state-file-xml
1454
1455 except that it does some error checking.
1456
1457 The editor used can be supplied by the C<$VISUAL> or C<$EDITOR> environment
1458 variables, and defaults to C<vi>.
1459
1460 =item B<schedinfo> I<domain> [[I<--config>] [I<--live>] | [I<--current>]]
1461 [[I<--set>] B<parameter=value>]...
1462
1463 =item B<schedinfo> [I<--weight> B<number>] [I<--cap> B<number>]
1464 I<domain>
1465
1466 Allows you to show (and set) the domain scheduler parameters. The parameters
1467 available for each hypervisor are:
1468
1469 LXC (posix scheduler) : cpu_shares
1470
1471 QEMU/KVM (posix scheduler): cpu_shares, vcpu_period, vcpu_quota,
1472 emulator_period, emulator_quota
1473
1474 Xen (credit scheduler): weight, cap
1475
1476 ESX (allocation scheduler): reservation, limit, shares
1477
1478 If I<--live> is specified, set scheduler information of a running guest.
1479 If I<--config> is specified, affect the next boot of a persistent guest.
1480 If I<--current> is specified, affect the current guest state.
1481
1482 B<Note>: The cpu_shares parameter has a valid value range of 0-262144; Negative
1483 values are wrapped to positive, and larger values are capped at the maximum.
1484 Therefore, -1 is a useful shorthand for 262144. On the Linux kernel, the
1485 values 0 and 1 are automatically converted to a minimal value of 2.
1486
1487 B<Note>: The weight and cap parameters are defined only for the
1488 XEN_CREDIT scheduler and are now I<DEPRECATED>.
1489
1490 B<Note>: The vcpu_period/emulator_period parameters have a valid value range
1491 of 1000-1000000 or 0, and the vcpu_quota/emulator_quota parameters have a
1492 valid value range of 1000-18446744073709551 or less than 0. The value 0 for
1493 either parameter is the same as not specifying that parameter.
1494
1495 =item B<screenshot> I<domain> [I<imagefilepath>] [I<--screen> B<screenID>]
1496
1497 Takes a screenshot of a current domain console and stores it into a file.
1498 Optionally, if hypervisor supports more displays for a domain, I<screenID>
1499 allows to specify which screen will be captured. It is the sequential number
1500 of screen. In case of multiple graphics cards, heads are enumerated before
1501 devices, e.g. having two graphics cards, both with four heads, screen ID 5
1502 addresses the second head on the second card.
1503
1504 =item B<send-key> I<domain> [I<--codeset> B<codeset>]
1505 [I<--holdtime> B<holdtime>] I<keycode>...
1506
1507 Parse the I<keycode> sequence as keystrokes to send to I<domain>.
1508 Each I<keycode> can either be a numeric value or a symbolic name from
1509 the corresponding codeset.  If I<--holdtime> is given, each keystroke
1510 will be held for that many milliseconds.  The default codeset is
1511 B<linux>, but use of the I<--codeset> option allows other codesets to
1512 be chosen.
1513
1514 If multiple keycodes are specified, they are all sent simultaneously
1515 to the guest, and they may be received in random order. If you need
1516 distinct keypresses, you must use multiple send-key invocations.
1517
1518 =over 4
1519
1520 =item B<linux>
1521
1522 The numeric values are those defined by the Linux generic input
1523 event subsystem. The symbolic names match the corresponding
1524 Linux key constant macro names.
1525
1526 =item B<xt>
1527
1528 The numeric values are those defined by the original XT keyboard
1529 controller. No symbolic names are provided
1530
1531 =item B<atset1>
1532
1533 The numeric values are those defined by the AT keyboard controller,
1534 set 1 (aka XT compatible set). Extended keycoes from B<atset1>
1535 may differ from extended keycodes in the B<xt> codeset. No symbolic
1536 names are provided
1537
1538 =item B<atset2>
1539
1540 The numeric values are those defined by the AT keyboard controller,
1541 set 2. No symbolic names are provided
1542
1543 =item B<atset3>
1544
1545 The numeric values are those defined by the AT keyboard controller,
1546 set 3 (aka PS/2 compatible set). No symbolic names are provided
1547
1548 =item B<os_x>
1549
1550 The numeric values are those defined by the OS-X keyboard input
1551 subsystem. The symbolic names match the corresponding OS-X key
1552 constant macro names
1553
1554 =item B<xt_kbd>
1555
1556 The numeric values are those defined by the Linux KBD device.
1557 These are a variant on the original XT codeset, but often with
1558 different encoding for extended keycodes. No symbolic names are
1559 provided.
1560
1561 =item B<win32>
1562
1563 The numeric values are those defined by the Win32 keyboard input
1564 subsystem. The symbolic names match the corresponding Win32 key
1565 constant macro names
1566
1567 =item B<usb>
1568
1569 The numeric values are those defined by the USB HID specification
1570 for keyboard input. No symbolic names are provided
1571
1572 =item B<rfb>
1573
1574 The numeric values are those defined by the RFB extension for sending
1575 raw keycodes. These are a variant on the XT codeset, but extended
1576 keycodes have the low bit of the second byte set, instead of the high
1577 bit of the first byte. No symbolic names are provided.
1578
1579 =back
1580
1581 B<Examples>
1582   # send three strokes 'k', 'e', 'y', using xt codeset. these
1583   # are all pressed simultaneously and may be received by the guest
1584   # in random order
1585   virsh send-key dom --codeset xt 37 18 21
1586
1587   # send one stroke 'right-ctrl+C'
1588   virsh send-key dom KEY_RIGHTCTRL KEY_C
1589
1590   # send a tab, held for 1 second
1591   virsh send-key --holdtime 1000 0xf
1592
1593 =item B<send-process-signal> I<domain-id> I<pid> I<signame>
1594
1595 Send a signal I<signame> to the process identified by I<pid> running in
1596 the virtual domain I<domain-id>. The I<pid> is a process ID in the virtual
1597 domain namespace.
1598
1599 The I<signame> argument may be either an integer signal constant number,
1600 or one of the symbolic names:
1601
1602     "nop", "hup", "int", "quit", "ill",
1603     "trap", "abrt", "bus", "fpe", "kill",
1604     "usr1", "segv", "usr2", "pipe", "alrm",
1605     "term", "stkflt", "chld", "cont", "stop",
1606     "tstp", "ttin", "ttou", "urg", "xcpu",
1607     "xfsz", "vtalrm", "prof", "winch", "poll",
1608     "pwr", "sys", "rt0", "rt1", "rt2", "rt3",
1609     "rt4", "rt5", "rt6", "rt7", "rt8", "rt9",
1610     "rt10", "rt11", "rt12", "rt13", "rt14", "rt15",
1611     "rt16", "rt17", "rt18", "rt19", "rt20", "rt21",
1612     "rt22", "rt23", "rt24", "rt25", "rt26", "rt27",
1613     "rt28", "rt29", "rt30", "rt31", "rt32"
1614
1615 The symbol name may optionally be prefixed with 'sig' or 'sig_' and
1616 may be in uppercase or lowercase.
1617
1618 B<Examples>
1619   virsh send-process-signal myguest 1 15
1620   virsh send-process-signal myguest 1 term
1621   virsh send-process-signal myguest 1 sigterm
1622   virsh send-process-signal myguest 1 SIG_HUP
1623
1624 =item B<setmem> I<domain> B<size> [[I<--config>] [I<--live>] |
1625 [I<--current>]]
1626
1627 Change the memory allocation for a guest domain.
1628 If I<--live> is specified, perform a memory balloon of a running guest.
1629 If I<--config> is specified, affect the next boot of a persistent guest.
1630 If I<--current> is specified, affect the current guest state.
1631 Both I<--live> and I<--config> flags may be given, but I<--current> is
1632 exclusive. If no flag is specified, behavior is different depending
1633 on hypervisor.
1634
1635 I<size> is a scaled integer (see B<NOTES> above); it defaults to kibibytes
1636 (blocks of 1024 bytes) unless you provide a suffix (and the older option
1637 name I<--kilobytes> is available as a deprecated synonym) .  Libvirt rounds
1638 up to the nearest kibibyte.  Some hypervisors require a larger granularity
1639 than KiB, and requests that are not an even multiple will be rounded up.
1640 For example, vSphere/ESX rounds the parameter up to mebibytes (1024 kibibytes).
1641
1642 For Xen, you can only adjust the memory of a running domain if the domain is
1643 paravirtualized or running the PV balloon driver.
1644
1645 =item B<setmaxmem> I<domain> B<size> [[I<--config>] [I<--live>] |
1646 [I<--current>]]
1647
1648 Change the maximum memory allocation limit for a guest domain.
1649 If I<--live> is specified, affect a running guest.
1650 If I<--config> is specified, affect the next boot of a persistent guest.
1651 If I<--current> is specified, affect the current guest state.
1652 Both I<--live> and I<--config> flags may be given, but I<--current> is
1653 exclusive. If no flag is specified, behavior is different depending
1654 on hypervisor.
1655
1656 Some hypervisors such as QEMU/KVM don't support live changes (especially
1657 increasing) of the maximum memory limit.
1658
1659 I<size> is a scaled integer (see B<NOTES> above); it defaults to kibibytes
1660 (blocks of 1024 bytes) unless you provide a suffix (and the older option
1661 name I<--kilobytes> is available as a deprecated synonym) .  Libvirt rounds
1662 up to the nearest kibibyte.  Some hypervisors require a larger granularity
1663 than KiB, and requests that are not an even multiple will be rounded up.
1664 For example, vSphere/ESX rounds the parameter up to mebibytes (1024 kibibytes).
1665
1666 =item B<memtune> I<domain> [I<--hard-limit> B<size>]
1667 [I<--soft-limit> B<size>] [I<--swap-hard-limit> B<size>]
1668 [I<--min-guarantee> B<size>] [[I<--config>] [I<--live>] | [I<--current>]]
1669
1670 Allows you to display or set the domain memory parameters. Without
1671 flags, the current settings are displayed; with a flag, the
1672 appropriate limit is adjusted if supported by the hypervisor.  LXC and
1673 QEMU/KVM support I<--hard-limit>, I<--soft-limit>, and I<--swap-hard-limit>.
1674 I<--min-guarantee> is supported only by ESX hypervisor.  Each of these
1675 limits are scaled integers (see B<NOTES> above), with a default of
1676 kibibytes (blocks of 1024 bytes) if no suffix is present. Libvirt rounds
1677 up to the nearest kibibyte.  Some hypervisors require a larger granularity
1678 than KiB, and requests that are not an even multiple will be rounded up.
1679 For example, vSphere/ESX rounds the parameter up to mebibytes (1024 kibibytes).
1680
1681 If I<--live> is specified, affect a running guest.
1682 If I<--config> is specified, affect the next boot of a persistent guest.
1683 If I<--current> is specified, affect the current guest state.
1684 Both I<--live> and I<--config> flags may be given, but I<--current> is
1685 exclusive. If no flag is specified, behavior is different depending
1686 on hypervisor.
1687
1688 For QEMU/KVM, the parameters are applied to the QEMU process as a whole.
1689 Thus, when counting them, one needs to add up guest RAM, guest video RAM, and
1690 some memory overhead of QEMU itself.  The last piece is hard to determine so
1691 one needs guess and try.
1692
1693 =over 4
1694
1695 =item I<--hard-limit>
1696
1697 The maximum memory the guest can use.
1698
1699 =item I<--soft-limit>
1700
1701 The memory limit to enforce during memory contention.
1702
1703 =item I<--swap-hard-limit>
1704
1705 The maximum memory plus swap the guest can use.  This has to be more
1706 than hard-limit value provided.
1707
1708 =item I<--min-guarantee>
1709
1710 The guaranteed minimum memory allocation for the guest.
1711
1712 =back
1713
1714 Specifying -1 as a value for these limits is interpreted as unlimited.
1715
1716 =item B<blkiotune> I<domain> [I<--weight> B<weight>]
1717 [I<--device-weights> B<device-weights>]
1718 [I<--device-read-iops-sec> B<device-read-iops-sec>]
1719 [I<--device-write-iops-sec> B<device-write-iops-sec>]
1720 [I<--device-read-bytes-sec> B<device-read-bytes-sec>]
1721 [I<--device-write-bytes-sec> B<device-write-bytes-sec>]
1722 [[I<--config>] [I<--live>] | [I<--current>]]
1723
1724 Display or set the blkio parameters. QEMU/KVM supports I<--weight>.
1725 I<--weight> is in range [100, 1000]. After kernel 2.6.39, the value
1726 could be in the range [10, 1000].
1727
1728 B<device-weights> is a single string listing one or more device/weight
1729 pairs, in the format of /path/to/device,weight,/path/to/device,weight.
1730 Each weight is in the range [100, 1000], [10, 1000] after kernel 2.6.39,
1731 or the value 0 to remove that device from per-device listings.
1732 Only the devices listed in the string are modified;
1733 any existing per-device weights for other devices remain unchanged.
1734
1735 B<device-read-iops-sec> is a single string listing one or more device/read_iops_sec
1736 pairs, int the format of /path/to/device,read_iops_sec,/path/to/device,read_iops_sec.
1737 Each read_iops_sec is a number which type is unsigned int, value 0 to remove that
1738 device from per-decice listing.
1739 Only the devices listed in the string are modified;
1740 any existing per-device read_iops_sec for other devices remain unchanged.
1741
1742 B<device-write-iops-sec> is a single string listing one or more device/write_iops_sec
1743 pairs, int the format of /path/to/device,write_iops_sec,/path/to/device,write_iops_sec.
1744 Each write_iops_sec is a number which type is unsigned int, value 0 to remove that
1745 device from per-decice listing.
1746 Only the devices listed in the string are modified;
1747 any existing per-device write_iops_sec for other devices remain unchanged.
1748
1749 B<device-read-bytes-sec> is a single string listing one or more device/read_bytes_sec
1750 pairs, int the format of /path/to/device,read_bytes_sec,/path/to/device,read_bytes_sec.
1751 Each read_bytes_sec is a number which type is unsigned long long, value 0 to remove
1752 that device from per-decice listing.
1753 Only the devices listed in the string are modified;
1754 any existing per-device read_bytes_sec for other devices remain unchanged.
1755
1756 B<device-write-bytes-sec> is a single string listing one or more device/write_bytes_sec
1757 pairs, int the format of /path/to/device,write_bytes_sec,/path/to/device,write_bytes_sec.
1758 Each write_bytes_sec is a number which type is unsigned long long, value 0 to remove
1759 that device from per-decice listing.
1760 Only the devices listed in the string are modified;
1761 any existing per-device write_bytes_sec for other devices remain unchanged.
1762
1763 If I<--live> is specified, affect a running guest.
1764 If I<--config> is specified, affect the next boot of a persistent guest.
1765 If I<--current> is specified, affect the current guest state.
1766 Both I<--live> and I<--config> flags may be given, but I<--current> is
1767 exclusive. If no flag is specified, behavior is different depending
1768 on hypervisor.
1769
1770 =item B<setvcpus> I<domain> I<count> [I<--maximum>] [[I<--config>]
1771 [I<--live>] | [I<--current>]] [I<--guest>]
1772
1773 Change the number of virtual CPUs active in a guest domain.  By default,
1774 this command works on active guest domains.  To change the settings for an
1775 inactive guest domain, use the I<--config> flag.
1776
1777 The I<count> value may be limited by host, hypervisor, or a limit coming
1778 from the original description of the guest domain. For Xen, you can only
1779 adjust the virtual CPUs of a running domain if the domain is paravirtualized.
1780
1781 If the I<--config> flag is specified, the change is made to the stored XML
1782 configuration for the guest domain, and will only take effect when the guest
1783 domain is next started.
1784
1785 If I<--live> is specified, the guest domain must be active, and the change
1786 takes place immediately.  Both the I<--config> and I<--live> flags may be
1787 specified together if supported by the hypervisor.  If this command is run
1788 before the guest has finished booting, the guest may fail to process
1789 the change.
1790
1791 If I<--current> is specified, affect the current guest state.
1792
1793 When no flags are given, the I<--live>
1794 flag is assumed and the guest domain must be active.  In this situation it
1795 is up to the hypervisor whether the I<--config> flag is also assumed, and
1796 therefore whether the XML configuration is adjusted to make the change
1797 persistent.
1798
1799 If I<--guest> is specified, then the count of cpus is modified in the guest
1800 instead of the hypervisor. This flag is usable only for live domains
1801 and may require guest agent to be configured in the guest.
1802
1803 The I<--maximum> flag controls the maximum number of virtual cpus that can
1804 be hot-plugged the next time the domain is booted.  As such, it must only be
1805 used with the I<--config> flag, and not with the I<--live> flag.
1806
1807 =item B<shutdown> I<domain> [I<--mode MODE-LIST>]
1808
1809 Gracefully shuts down a domain.  This coordinates with the domain OS
1810 to perform graceful shutdown, so there is no guarantee that it will
1811 succeed, and may take a variable length of time depending on what
1812 services must be shutdown in the domain.
1813
1814 The exact behavior of a domain when it shuts down is set by the
1815 I<on_shutdown> parameter in the domain's XML definition.
1816
1817 If I<domain> is transient, then the metadata of any snapshots will
1818 be lost once the guest stops running, but the snapshot contents still
1819 exist, and a new domain with the same name and UUID can restore the
1820 snapshot metadata with B<snapshot-create>.
1821
1822 By default the hypervisor will try to pick a suitable shutdown
1823 method. To specify an alternative method, the I<--mode> parameter
1824 can specify a comma separated list which includes C<acpi>, C<agent>,
1825 C<initctl>, C<signal> and C<paravirt>. The order in which drivers will
1826 try each mode is undefined, and not related to the order specified to virsh.
1827 For strict control over ordering, use a single mode at a time and
1828 repeat the command.
1829
1830 =item B<start> I<domain-name-or-uuid> [I<--console>] [I<--paused>]
1831 [I<--autodestroy>] [I<--bypass-cache>] [I<--force-boot>] [I<--pass-fds N,M,...>]
1832
1833 Start a (previously defined) inactive domain, either from the last
1834 B<managedsave> state, or via a fresh boot if no managedsave state is
1835 present.  The domain will be paused if the I<--paused> option is
1836 used and supported by the driver; otherwise it will be running.
1837 If I<--console> is requested, attach to the console after creation.
1838 If I<--autodestroy> is requested, then the guest will be automatically
1839 destroyed when virsh closes its connection to libvirt, or otherwise
1840 exits.  If I<--bypass-cache> is specified, and managedsave state exists,
1841 the restore will avoid the file system cache, although this may slow
1842 down the operation.  If I<--force-boot> is specified, then any
1843 managedsave state is discarded and a fresh boot occurs.
1844
1845 If I<--pass-fds> is specified, the argument is a comma separated list
1846 of open file descriptors which should be pass on into the guest. The
1847 file descriptors will be re-numered in the guest, starting from 3. This
1848 is only supported with container based virtualization.
1849
1850 =item B<suspend> I<domain>
1851
1852 Suspend a running domain. It is kept in memory but won't be scheduled
1853 anymore.
1854
1855 =item B<resume> I<domain>
1856
1857 Moves a domain out of the suspended state.  This will allow a previously
1858 suspended domain to now be eligible for scheduling by the underlying
1859 hypervisor.
1860
1861 =item B<dompmsuspend> I<domain> I<target> [I<--duration>]
1862
1863 Suspend a running domain into one of these states (possible I<target>
1864 values):
1865     mem equivalent of S3 ACPI state
1866     disk equivalent of S4 ACPI state
1867     hybrid RAM is saved to disk but not powered off
1868
1869 The I<--duration> argument specifies number of seconds before the domain is
1870 woken up after it was suspended (see also B<dompmwakeup>). Default is 0 for
1871 unlimited suspend time. (This feature isn't currently supported by any
1872 hypervisor driver and 0 should be used.).
1873
1874 Note that this command requires a guest agent configured and running in the
1875 domain's guest OS.
1876
1877 Beware that at least for QEMU, the domain's process will be terminated when
1878 target disk is used and a new process will be launched when libvirt is asked
1879 to wake up the domain. As a result of this, any runtime changes, such as
1880 device hotplug or memory settings, are lost unless such changes were made
1881 with I<--config> flag.
1882
1883
1884 =item B<dompmwakeup> I<domain>
1885
1886 Wakeup a domain from pmsuspended state (either suspended by dompmsuspend or
1887 from the guest itself). Injects a wakeup into the guest that is in pmsuspended
1888 state, rather than waiting for the previously requested duration (if any) to
1889 elapse. This operation doesn't not necessarily fail if the domain is running.
1890
1891 =item B<ttyconsole> I<domain>
1892
1893 Output the device used for the TTY console of the domain. If the information
1894 is not available the processes will provide an exit code of 1.
1895
1896 =item B<undefine> I<domain> [I<--managed-save>] [I<--snapshots-metadata>]
1897 [ {I<--storage> B<volumes> | I<--remove-all-storage>} I<--wipe-storage>]
1898
1899 Undefine a domain. If the domain is running, this converts it to a
1900 transient domain, without stopping it. If the domain is inactive,
1901 the domain configuration is removed.
1902
1903 The I<--managed-save> flag guarantees that any managed save image (see
1904 the B<managedsave> command) is also cleaned up.  Without the flag, attempts
1905 to undefine a domain with a managed save image will fail.
1906
1907 The I<--snapshots-metadata> flag guarantees that any snapshots (see the
1908 B<snapshot-list> command) are also cleaned up when undefining an inactive
1909 domain.  Without the flag, attempts to undefine an inactive domain with
1910 snapshot metadata will fail.  If the domain is active, this flag is
1911 ignored.
1912
1913 The I<--storage> flag takes a parameter B<volumes>, which is a comma separated
1914 list of volume target names or source paths of storage volumes to be removed
1915 along with the undefined domain. Volumes can be undefined and thus removed only
1916 on inactive domains. Volume deletion is only attempted after the domain is
1917 undefined; if not all of the requested volumes could be deleted, the
1918 error message indicates what still remains behind. If a volume path is not
1919 found in the domain definition, it's treated as if the volume was successfully
1920 deleted. Only volumes managed by libvirt in storage pools can be removed this
1921 way.
1922 (See B<domblklist> for list of target names associated to a domain).
1923 Example: --storage vda,/path/to/storage.img
1924
1925 The I<--remove-all-storage> flag specifies that all of the domain's storage
1926 volumes should be deleted.
1927
1928 The flag I<--wipe-storage> specifies that the storage volumes should be
1929 wiped before removal.
1930
1931 NOTE: For an inactive domain, the domain name or UUID must be used as the
1932 I<domain>.
1933
1934 =item B<vcpucount> I<domain>  [{I<--maximum> | I<--active>}
1935 {I<--config> | I<--live> | I<--current>}] [I<--guest>]
1936
1937 Print information about the virtual cpu counts of the given
1938 I<domain>.  If no flags are specified, all possible counts are
1939 listed in a table; otherwise, the output is limited to just the
1940 numeric value requested.  For historical reasons, the table
1941 lists the label "current" on the rows that can be queried in isolation
1942 via the I<--active> flag, rather than relating to the I<--current> flag.
1943
1944 I<--maximum> requests information on the maximum cap of vcpus that a
1945 domain can add via B<setvcpus>, while I<--active> shows the current
1946 usage; these two flags cannot both be specified.  I<--config>
1947 requires a persistent domain and requests information regarding the next
1948 time the domain will be booted, I<--live> requires a running domain and
1949 lists current values, and I<--current> queries according to the current
1950 state of the domain (corresponding to I<--live> if running, or
1951 I<--config> if inactive); these three flags are mutually exclusive.
1952
1953 If I<--guest> is specified, then the count of cpus is reported from
1954 the perspective of the guest. This flag is usable only for live domains
1955 and may require guest agent to be configured in the guest.
1956
1957 =item B<vcpuinfo> I<domain>
1958
1959 Returns basic information about the domain virtual CPUs, like the number of
1960 vCPUs, the running time, the affinity to physical processors.
1961
1962 =item B<vcpupin> I<domain> [I<vcpu>] [I<cpulist>] [[I<--live>]
1963 [I<--config>] | [I<--current>]]
1964
1965 Query or change the pinning of domain VCPUs to host physical CPUs.  To
1966 pin a single I<vcpu>, specify I<cpulist>; otherwise, you can query one
1967 I<vcpu> or omit I<vcpu> to list all at once.
1968
1969 I<cpulist> is a list of physical CPU numbers. Its syntax is a comma
1970 separated list and a special markup using '-' and '^' (ex. '0-4', '0-3,^2') can
1971 also be allowed. The '-' denotes the range and the '^' denotes exclusive.
1972 If you want to reset vcpupin setting, that is, to pin vcpu all physical cpus,
1973 simply specify 'r' as a cpulist.
1974 If I<--live> is specified, affect a running guest.
1975 If I<--config> is specified, affect the next boot of a persistent guest.
1976 If I<--current> is specified, affect the current guest state.
1977 Both I<--live> and I<--config> flags may be given if I<cpulist> is present,
1978 but I<--current> is exclusive.
1979 If no flag is specified, behavior is different depending on hypervisor.
1980
1981 B<Note>: The expression is sequentially evaluated, so "0-15,^8" is
1982 identical to "9-14,0-7,15" but not identical to "^8,0-15".
1983
1984 =item B<emulatorpin> I<domain> [I<cpulist>] [[I<--live>] [I<--config>]
1985  | [I<--current>]]
1986
1987 Query or change the pinning of domain's emulator threads to host physical
1988 CPUs.
1989
1990 See B<vcpupin> for I<cpulist>.
1991
1992 If I<--live> is specified, affect a running guest.
1993 If I<--config> is specified, affect the next boot of a persistent guest.
1994 If I<--current> is specified, affect the current guest state.
1995 Both I<--live> and I<--config> flags may be given if I<cpulist> is present,
1996 but I<--current> is exclusive.
1997 If no flag is specified, behavior is different depending on hypervisor.
1998
1999
2000 =item B<vncdisplay> I<domain>
2001
2002 Output the IP address and port number for the VNC display. If the information
2003 is not available the processes will provide an exit code of 1.
2004
2005 =back
2006
2007 =head1 DEVICE COMMANDS
2008
2009 The following commands manipulate devices associated to domains.
2010 The I<domain> can be specified as a short integer, a name or a full UUID.
2011 To better understand the values allowed as options for the command
2012 reading the documentation at L<http://libvirt.org/formatdomain.html> on the
2013 format of the device sections to get the most accurate set of accepted values.
2014
2015 =over 4
2016
2017 =item B<attach-device> I<domain> I<FILE>
2018 [[[I<--live>] [I<--config>] | [I<--current>]] | [I<--persistent>]]
2019
2020 Attach a device to the domain, using a device definition in an XML
2021 file using a device definition element such as <disk> or <interface>
2022 as the top-level element.  See the documentation at
2023 L<http://libvirt.org/formatdomain.html#elementsDevices> to learn about
2024 libvirt XML format for a device.  If I<--config> is specified the
2025 command alters the persistent domain configuration with the device
2026 attach taking effect the next time libvirt starts the domain.
2027 For cdrom and floppy devices, this command only replaces the media
2028 within an existing device; consider using B<update-device> for this
2029 usage.  For passthrough host devices, see also B<nodedev-detach>,
2030 needed if the device does not use managed mode.
2031
2032 If I<--live> is specified, affect a running domain.
2033 If I<--config> is specified, affect the next startup of a persistent domain.
2034 If I<--current> is specified, affect the current domain state.
2035 Both I<--live> and I<--config> flags may be given, but I<--current> is
2036 exclusive. When no flag is specified legacy API is used whose behavior depends
2037 on the hypervisor driver.
2038
2039 For compatibility purposes, I<--persistent> behaves like I<--config> for
2040 an offline domain, and like I<--live> I<--config> for a running domain.
2041
2042 B<Note>: using of partial device definition XML files may lead to unexpected
2043 results as some fields may be autogenerated and thus match devices other than
2044 expected.
2045
2046 =item B<attach-disk> I<domain> I<source> I<target>
2047 [[[I<--live>] [I<--config>] | [I<--current>]] | [I<--persistent>]]
2048 [I<--driver driver>] [I<--subdriver subdriver>] [I<--cache cache>]
2049 [I<--type type>] [I<--mode mode>] [I<--sourcetype sourcetype>]
2050 [I<--serial serial>] [I<--wwn wwn>] [I<--rawio>]
2051 [I<--address address>] [I<--multifunction>] [I<--print-xml>]
2052
2053 Attach a new disk device to the domain.
2054 I<source> is path for the files and devices. I<target> controls the bus or
2055 device under which the disk is exposed to the guest OS. It indicates the
2056 "logical" device name.  I<driver> can be I<file>, I<tap> or I<phy> for the Xen
2057 hypervisor depending on the kind of access; or I<qemu> for the QEMU emulator.
2058 Further details to the driver can be passed using I<subdriver>. For Xen
2059 I<subdriver> can be I<aio>, while for QEMU subdriver should match the format
2060 of the disk source, such as I<raw> or I<qcow2>.  Hypervisor default will be
2061 used if I<subdriver> is not specified.  However, the default may not be
2062 correct, esp. for QEMU as for security reasons it is configured not to detect
2063 disk formats.  I<type> can indicate I<lun>, I<cdrom> or I<floppy> as
2064 alternative to the disk default, although this use only replaces the media
2065 within the existing virtual cdrom or floppy device; consider using
2066 B<update-device> for this usage instead.
2067 I<mode> can specify the two specific mode I<readonly> or I<shareable>.
2068 I<sourcetype> can indicate the type of source (block|file)
2069 I<cache> can be one of "default", "none", "writethrough", "writeback",
2070 "directsync" or "unsafe".
2071 I<serial> is the serial of disk device. I<wwn> is the wwn of disk device.
2072 I<rawio> indicates the disk needs rawio capability.
2073 I<address> is the address of disk device in the form of pci:domain.bus.slot.function,
2074 scsi:controller.bus.unit or ide:controller.bus.unit.
2075 I<multifunction> indicates specified pci address is a multifunction pci device
2076 address.
2077
2078 If I<--print-xml> is specified, then the XML of the disk that would be attached
2079 is printed instead.
2080
2081 If I<--live> is specified, affect a running domain.
2082 If I<--config> is specified, affect the next startup of a persistent domain.
2083 If I<--current> is specified, affect the current domain state.
2084 Both I<--live> and I<--config> flags may be given, but I<--current> is
2085 exclusive. When no flag is specified legacy API is used whose behavior depends
2086 on the hypervisor driver.
2087
2088 For compatibility purposes, I<--persistent> behaves like I<--config> for
2089 an offline domain, and like I<--live> I<--config> for a running domain.
2090 Likewise, I<--shareable> is an alias for I<--mode shareable>.
2091
2092 =item B<attach-interface> I<domain> I<type> I<source>
2093 [[[I<--live>] [I<--config>] | [I<--current>]] | [I<--persistent>]]
2094 [I<--target target>] [I<--mac mac>] [I<--script script>] [I<--model model>]
2095 [I<--config>] [I<--inbound average,peak,burst>] [I<--outbound average,peak,burst>]
2096
2097 Attach a new network interface to the domain.  I<type> can be either I<network>
2098 to indicate a physical network device or I<bridge> to indicate a bridge to a
2099 device.  I<source> indicates the source device.  I<target> allows to indicate
2100 the target device in the guest. Names starting with 'vnet' are considered as
2101 auto-generated an hence blanked out.  I<mac> allows to specify the MAC address
2102 of the network interface.  I<script> allows to specify a path to a script
2103 handling a bridge instead of the default one.  I<model> allows to specify the
2104 model type.  I<inbound> and I<outbound> control the bandwidth of the interface.
2105 I<peak> and I<burst> are optional, so "average,peak", "average,,burst" and
2106 "average" are also legal. Values for I<average> and I<peak> are
2107 expressed in kilobytes per second, while I<burst> is expressed in kilobytes
2108 in a single burst at -I<peak> speed as described in the Network XML
2109 documentation at L<http://libvirt.org/formatnetwork.html#elementQoS>.
2110
2111 If I<--live> is specified, affect a running domain.
2112 If I<--config> is specified, affect the next startup of a persistent domain.
2113 If I<--current> is specified, affect the current domain state.
2114 Both I<--live> and I<--config> flags may be given, but I<--current> is
2115 exclusive. When no flag is specified legacy API is used whose behavior depends
2116 on the hypervisor driver.
2117
2118 For compatibility purposes, I<--persistent> behaves like I<--config> for
2119 an offline domain, and like I<--live> I<--config> for a running domain.
2120
2121 B<Note>: the optional target value is the name of a device to be created
2122 as the back-end on the node. If not provided a device named "vnetN" or "vifN"
2123 will be created automatically.
2124
2125 =item B<detach-device> I<domain> I<FILE>
2126 [[[I<--live>] [I<--config>] | [I<--current>]] | [I<--persistent>]]
2127
2128 Detach a device from the domain, takes the same kind of XML descriptions
2129 as command B<attach-device>.
2130 For passthrough host devices, see also B<nodedev-reattach>, needed if
2131 the device does not use managed mode.
2132
2133 B<Note>: using of partial device definition XML files may lead to unexpected
2134 results as some fields may be autogenerated and thus match devices other than
2135 expected.
2136
2137 If I<--live> is specified, affect a running domain.
2138 If I<--config> is specified, affect the next startup of a persistent domain.
2139 If I<--current> is specified, affect the current domain state.
2140 Both I<--live> and I<--config> flags may be given, but I<--current> is
2141 exclusive. When no flag is specified legacy API is used whose behavior depends
2142 on the hypervisor driver.
2143
2144 For compatibility purposes, I<--persistent> behaves like I<--config> for
2145 an offline domain, and like I<--live> I<--config> for a running domain.
2146
2147 Note that older versions of virsh used I<--config> as an alias for
2148 I<--persistent>.
2149
2150 =item B<detach-disk> I<domain> I<target>
2151 [[[I<--live>] [I<--config>] | [I<--current>]] | [I<--persistent>]]
2152
2153 Detach a disk device from a domain. The I<target> is the device as seen
2154 from the domain.
2155
2156 If I<--live> is specified, affect a running domain.
2157 If I<--config> is specified, affect the next startup of a persistent domain.
2158 If I<--current> is specified, affect the current domain state.
2159 Both I<--live> and I<--config> flags may be given, but I<--current> is
2160 exclusive. When no flag is specified legacy API is used whose behavior depends
2161 on the hypervisor driver.
2162
2163 For compatibility purposes, I<--persistent> behaves like I<--config> for
2164 an offline domain, and like I<--live> I<--config> for a running domain.
2165
2166 Note that older versions of virsh used I<--config> as an alias for
2167 I<--persistent>.
2168
2169 =item B<detach-interface> I<domain> I<type> [I<--mac mac>]
2170 [[[I<--live>] [I<--config>] | [I<--current>]] | [I<--persistent>]]
2171
2172 Detach a network interface from a domain.
2173 I<type> can be either I<network> to indicate a physical network device or
2174 I<bridge> to indicate a bridge to a device. It is recommended to use the
2175 I<mac> option to distinguish between the interfaces if more than one are
2176 present on the domain.
2177
2178 If I<--live> is specified, affect a running domain.
2179 If I<--config> is specified, affect the next startup of a persistent domain.
2180 If I<--current> is specified, affect the current domain state.
2181 Both I<--live> and I<--config> flags may be given, but I<--current> is
2182 exclusive. When no flag is specified legacy API is used whose behavior depends
2183 on the hypervisor driver.
2184
2185 For compatibility purposes, I<--persistent> behaves like I<--config> for
2186 an offline domain, and like I<--live> I<--config> for a running domain.
2187
2188 Note that older versions of virsh used I<--config> as an alias for
2189 I<--persistent>.
2190
2191 =item B<update-device> I<domain> I<file> [I<--force>]
2192 [[[I<--live>] [I<--config>] | [I<--current>]] | [I<--persistent>]]
2193
2194 Update the characteristics of a device associated with I<domain>,
2195 based on the device definition in an XML I<file>.  The I<--force> option
2196 can be used to force device update, e.g., to eject a CD-ROM even if it is
2197 locked/mounted in the domain. See the documentation at
2198 L<http://libvirt.org/formatdomain.html#elementsDevices> to learn about
2199 libvirt XML format for a device.
2200
2201 If I<--live> is specified, affect a running domain.
2202 If I<--config> is specified, affect the next startup of a persistent domain.
2203 If I<--current> is specified, affect the current domain state.
2204 Both I<--live> and I<--config> flags may be given, but I<--current> is
2205 exclusive. Not specifying any flag is the same as specifying I<--current>.
2206
2207 For compatibility purposes, I<--persistent> behaves like I<--config> for
2208 an offline domain, and like I<--live> I<--config> for a running domain.
2209
2210 Note that older versions of virsh used I<--config> as an alias for
2211 I<--persistent>.
2212
2213 B<Note>: using of partial device definition XML files may lead to unexpected
2214 results as some fields may be autogenerated and thus match devices other than
2215 expected.
2216
2217 =item B<change-media> I<domain> I<path> [I<--eject>] [I<--insert>]
2218 [I<--update>] [I<source>] [I<--force>] [[I<--live>] [I<--config>] | [I<--current>]]
2219
2220 Change media of CDROM or floppy drive. I<path> can be the fully-qualified path
2221 or the unique target name (<target dev='hdc'>) of the disk device. I<source>
2222 specifies the path of the media to be inserted or updated.
2223
2224 I<--eject> indicates the media will be ejected.
2225 I<--insert> indicates the media will be inserted. I<source> must be specified.
2226 If the device has source (e.g. <source file='media'>), and I<source> is not
2227 specified, I<--update> is equal to I<--eject>. If the device has no source,
2228 and I<source> is specified, I<--update> is equal to I<--insert>. If the device
2229 has source, and I<source> is specified, I<--update> behaves like combination
2230 of I<--eject> and I<--insert>.
2231 If none of I<--eject>, I<--insert>, and I<--update> is specified, I<--update>
2232 is used by default.
2233 The I<--force> option can be used to force media changing.
2234 If I<--live> is specified, alter live configuration of running guest.
2235 If I<--config> is specified, alter persistent configuration, effect observed
2236 on next boot.
2237 I<--current> can be either or both of I<live> and I<config>, depends on
2238 the hypervisor's implementation.
2239 Both I<--live> and I<--config> flags may be given, but I<--current> is
2240 exclusive. If no flag is specified, behavior is different depending
2241 on hypervisor.
2242
2243 =back
2244
2245 =head1 NODEDEV COMMANDS
2246
2247 The following commands manipulate host devices that are intended to be
2248 passed through to guest domains via <hostdev> elements in a domain's
2249 <devices> section.  A node device key is generally specified by the bus
2250 name followed by its address, using underscores between all components,
2251 such as pci_0000_00_02_1, usb_1_5_3, or net_eth1_00_27_13_6a_fe_00.
2252 The B<nodedev-list> gives the full list of host devices that are known
2253 to libvirt, although this includes devices that cannot be assigned to
2254 a guest (for example, attempting to detach the PCI device that controls
2255 the host's hard disk controller where the guest's disk images live could
2256 cause the host system to lock up or reboot).
2257
2258 For more information on node device definition see:
2259 L<http://libvirt.org/formatnode.html>.
2260
2261 Passthrough devices cannot be simultaneously used by the host and its
2262 guest domains, nor by multiple active guests at once.  If the
2263 <hostdev> description includes the attribute B<managed='yes'>, and the
2264 hypervisor driver supports it, then the device is in managed mode, and
2265 attempts to use that passthrough device in an active guest will
2266 automatically behave as if B<nodedev-detach> (guest start, device
2267 hot-plug) and B<nodedev-reattach> (guest stop, device hot-unplug) were
2268 called at the right points (currently, qemu does this for PCI devices,
2269 but not USB).  If a device is not marked as managed, then it must
2270 manually be detached before guests can use it, and manually reattached
2271 to be returned to the host.  Also, if a device is manually detached,
2272 then the host does not regain control of the device without a matching
2273 reattach, even if the guests use the device in managed mode.
2274
2275 =over 4
2276
2277 =item B<nodedev-create> I<FILE>
2278
2279 Create a device on the host node that can then be assigned to virtual
2280 machines. Normally, libvirt is able to automatically determine which
2281 host nodes are available for use, but this allows registration of
2282 host hardware that libvirt did not automatically detect.  I<file>
2283 contains xml for a top-level <device> description of a node device.
2284
2285 =item B<nodedev-destroy> I<device>
2286
2287 Destroy (stop) a device on the host. I<device> can be either device
2288 name or wwn pair in "wwnn,wwpn" format (only works for vHBA currently).
2289 Note that this makes libvirt quit managing a host device, and may even
2290 make that device unusable by the rest of the physical host until a reboot.
2291
2292 =item B<nodedev-detach> I<nodedev> [I<--driver backend_driver>]
2293
2294 Detach I<nodedev> from the host, so that it can safely be used by
2295 guests via <hostdev> passthrough.  This is reversed with
2296 B<nodedev-reattach>, and is done automatically for managed devices.
2297 For compatibility purposes, this command can also be spelled
2298 B<nodedev-dettach>.
2299
2300 Different backend drivers expect the device to be bound to different
2301 dummy devices. For example, QEMU's "kvm" backend driver (the default)
2302 expects the device to be bound to pci-stub, but its "vfio" backend
2303 driver expects the device to be bound to vfio-pci. The I<--driver>
2304 parameter can be used to specify the desired backend driver.
2305
2306 =item B<nodedev-dumpxml> I<device>
2307
2308 Dump a <device> XML representation for the given node device, including
2309 such information as the device name, which bus owns the device, the
2310 vendor and product id, and any capabilities of the device usable by
2311 libvirt (such as whether device reset is supported). I<device> can
2312 be either device name or wwn pair in "wwnn,wwpn" format (only works
2313 for HBA).
2314
2315 =item B<nodedev-list> I<cap> I<--tree>
2316
2317 List all of the devices available on the node that are known by libvirt.
2318 I<cap> is used to filter the list by capability types, the types must be
2319 separated by comma, e.g. --cap pci,scsi, valid capability types include
2320 'system', 'pci', 'usb_device', 'usb', 'net', 'scsi_host', 'scsi_target',
2321 'scsi', 'storage', 'fc_host', 'vports', 'scsi_generic'. If I<--tree> is
2322 used, the output is formatted in a tree representing parents of each node.
2323 I<cap> and I<--tree> are mutually exclusive.
2324
2325 =item B<nodedev-reattach> I<nodedev>
2326
2327 Declare that I<nodedev> is no longer in use by any guests, and that
2328 the host can resume normal use of the device.  This is done
2329 automatically for devices in managed mode, but must be done explicitly
2330 to match any explicit B<nodedev-detach>.
2331
2332 =item B<nodedev-reset> I<nodedev>
2333
2334 Trigger a device reset for I<nodedev>, useful prior to transferring
2335 a node device between guest passthrough or the host.  Libvirt will
2336 often do this action implicitly when required, but this command
2337 allows an explicit reset when needed.
2338
2339 =back
2340
2341 =head1 VIRTUAL NETWORK COMMANDS
2342
2343 The following commands manipulate networks. Libvirt has the capability to
2344 define virtual networks which can then be used by domains and linked to
2345 actual network devices. For more detailed information about this feature
2346 see the documentation at L<http://libvirt.org/formatnetwork.html> . Many
2347 of the commands for virtual networks are similar to the ones used for domains,
2348 but the way to name a virtual network is either by its name or UUID.
2349
2350 =over 4
2351
2352 =item B<net-autostart> I<network> [I<--disable>]
2353
2354 Configure a virtual network to be automatically started at boot.
2355 The I<--disable> option disable autostarting.
2356
2357 =item B<net-create> I<file>
2358
2359 Create a transient (temporary) virtual network from an
2360 XML I<file> and instantiate (start) the network.
2361 See the documentation at L<http://libvirt.org/formatnetwork.html>
2362 to get a description of the XML network format used by libvirt.
2363
2364 =item B<net-define> I<file>
2365
2366 Define a persistent virtual network from an XML I<file>, the network is just
2367 defined but not instantiated (started).
2368
2369 =item B<net-destroy> I<network>
2370
2371 Destroy (stop) a given transient or persistent virtual network
2372 specified by its name or UUID. This takes effect immediately.
2373
2374 =item B<net-dumpxml> I<network> [I<--inactive>]
2375
2376 Output the virtual network information as an XML dump to stdout.
2377 If I<--inactive> is specified, then physical functions are not
2378 expanded into their associated virtual functions.
2379
2380 =item B<net-edit> I<network>
2381
2382 Edit the XML configuration file for a network.
2383
2384 This is equivalent to:
2385
2386  virsh net-dumpxml --inactive network > network.xml
2387  vi network.xml (or make changes with your other text editor)
2388  virsh net-define network.xml
2389
2390 except that it does some error checking.
2391
2392 The editor used can be supplied by the C<$VISUAL> or C<$EDITOR> environment
2393 variables, and defaults to C<vi>.
2394
2395 =item B<net-event> {[I<network>] I<event> [I<--loop>] [I<--timeout>
2396 I<seconds>] | I<--list>}
2397
2398 Wait for a class of network events to occur, and print appropriate details
2399 of events as they happen.  The events can optionally be filtered by
2400 I<network>.  Using I<--list> as the only argument will provide a list
2401 of possible I<event> values known by this client, although the connection
2402 might not allow registering for all these events.
2403
2404 By default, this command is one-shot, and returns success once an event
2405 occurs; you can send SIGINT (usually via C<Ctrl-C>) to quit immediately.
2406 If I<--timeout> is specified, the command gives up waiting for events
2407 after I<seconds> have elapsed.   With I<--loop>, the command prints all
2408 events until a timeout or interrupt key.
2409
2410 =item B<net-info> I<network>
2411
2412 Returns basic information about the I<network> object.
2413
2414 =item B<net-list> [I<--inactive> | I<--all>]
2415                   [I<--persistent>] [<--transient>]
2416                   [I<--autostart>] [<--no-autostart>]
2417
2418 Returns the list of active networks, if I<--all> is specified this will also
2419 include defined but inactive networks, if I<--inactive> is specified only the
2420 inactive ones will be listed. You may also want to filter the returned networks
2421 by I<--persistent> to list the persistent ones, I<--transient> to list the
2422 transient ones, I<--autostart> to list the ones with autostart enabled, and
2423 I<--no-autostart> to list the ones with autostart disabled.
2424
2425 NOTE: When talking to older servers, this command is forced to use a series of
2426 API calls with an inherent race, where a pool might not be listed or might appear
2427 more than once if it changed state between calls while the list was being
2428 collected.  Newer servers do not have this problem.
2429
2430 =item B<net-name> I<network-UUID>
2431
2432 Convert a network UUID to network name.
2433
2434 =item B<net-start> I<network>
2435
2436 Start a (previously defined) inactive network.
2437
2438 =item B<net-undefine> I<network>
2439
2440 Undefine the configuration for an inactive network.
2441
2442 =item B<net-uuid> I<network-name>
2443
2444 Convert a network name to network UUID.
2445
2446 =item B<net-update> I<network> I<command> I<section> I<xml>
2447  [I<--parent-index> I<index>] [[I<--live>] [I<--config>] | [I<--current>]]
2448
2449 Update the given section of an existing network definition, with the
2450 changes optionally taking effect immediately, without needing to
2451 destroy and re-start the network.
2452
2453 I<command> is one of "add-first", "add-last", "add" (a synonym for
2454 add-last), "delete", or "modify".
2455
2456 I<section> is one of "bridge", "domain", "ip", "ip-dhcp-host",
2457 "ip-dhcp-range", "forward", "forward-interface", "forward-pf",
2458 "portgroup", "dns-host", "dns-txt", or "dns-srv", each section being
2459 named by a concatenation of the xml element hierarchy leading to the
2460 element being changed. For example, "ip-dhcp-host" will change a
2461 <host> element that is contained inside a <dhcp> element inside an
2462 <ip> element of the network.
2463
2464 I<xml> is either the text of a complete xml element of the type being
2465 changed (e.g. "<host mac="00:11:22:33:44:55' ip='1.2.3.4'/>", or the
2466 name of a file that contains a complete xml element. Disambiguation is
2467 done by looking at the first character of the provided text - if the
2468 first character is "<", it is xml text, if the first character is not
2469 "<", it is the name of a file that contains the xml text to be used.
2470
2471 The I<--parent-index> option is used to specify which of several
2472 parent elements the requested element is in (0-based). For example, a
2473 dhcp <host> element could be in any one of multiple <ip> elements in
2474 the network; if a parent-index isn't provided, the "most appropriate"
2475 <ip> element will be selected (usually the only one that already has a
2476 <dhcp> element), but if I<--parent-index> is given, that particular
2477 instance of <ip> will get the modification.
2478
2479 If I<--live> is specified, affect a running network.
2480 If I<--config> is specified, affect the next startup of a persistent network.
2481 If I<--current> is specified, affect the current network state.
2482 Both I<--live> and I<--config> flags may be given, but I<--current> is
2483 exclusive. Not specifying any flag is the same as specifying I<--current>.
2484
2485 =back
2486
2487 =head1 INTERFACE COMMANDS
2488
2489 The following commands manipulate host interfaces.  Often, these host
2490 interfaces can then be used by name within domain <interface> elements
2491 (such as a system-created bridge interface), but there is no
2492 requirement that host interfaces be tied to any particular guest
2493 configuration XML at all.
2494
2495 Many of the commands for host interfaces are similar to the ones used
2496 for domains, and the way to name an interface is either by its name or
2497 its MAC address.  However, using a MAC address for an I<iface>
2498 argument only works when that address is unique (if an interface and a
2499 bridge share the same MAC address, which is often the case, then using
2500 that MAC address results in an error due to ambiguity, and you must
2501 resort to a name instead).
2502
2503 =over 4
2504
2505 =item B<iface-bridge> I<interface> I<bridge> [I<--no-stp>] [I<delay>]
2506 [I<--no-start>]
2507
2508 Create a bridge device named I<bridge>, and attach the existing
2509 network device I<interface> to the new bridge.  The new bridge
2510 defaults to starting immediately, with STP enabled and a delay of 0;
2511 these settings can be altered with I<--no-stp>, I<--no-start>, and an
2512 integer number of seconds for I<delay>. All IP address configuration
2513 of I<interface> will be moved to the new bridge device.
2514
2515 See also B<iface-unbridge> for undoing this operation.
2516
2517 =item B<iface-define> I<file>
2518
2519 Define a host interface from an XML I<file>, the interface is just defined but
2520 not started.
2521
2522 =item B<iface-destroy> I<interface>
2523
2524 Destroy (stop) a given host interface, such as by running "if-down" to
2525 disable that interface from active use. This takes effect immediately.
2526
2527 =item B<iface-dumpxml> I<interface> [I<--inactive>]
2528
2529 Output the host interface information as an XML dump to stdout.  If
2530 I<--inactive> is specified, then the output reflects the persistent
2531 state of the interface that will be used the next time it is started.
2532
2533 =item B<iface-edit> I<interface>
2534
2535 Edit the XML configuration file for a host interface.
2536
2537 This is equivalent to:
2538
2539  virsh iface-dumpxml iface > iface.xml
2540  vi iface.xml (or make changes with your other text editor)
2541  virsh iface-define iface.xml
2542
2543 except that it does some error checking.
2544
2545 The editor used can be supplied by the C<$VISUAL> or C<$EDITOR> environment
2546 variables, and defaults to C<vi>.
2547
2548 =item B<iface-list> [I<--inactive> | I<--all>]
2549
2550 Returns the list of active host interfaces.  If I<--all> is specified
2551 this will also include defined but inactive interfaces.  If
2552 I<--inactive> is specified only the inactive ones will be listed.
2553
2554 =item B<iface-name> I<interface>
2555
2556 Convert a host interface MAC to interface name, if the MAC address is unique
2557 among the host's interfaces.
2558
2559 I<interface> specifies the interface MAC address.
2560
2561 =item B<iface-mac> I<interface>
2562
2563 Convert a host interface name to MAC address.
2564
2565 I<interface> specifies the interface name.
2566
2567 =item B<iface-start> I<interface>
2568
2569 Start a (previously defined) host interface, such as by running "if-up".
2570
2571 =item B<iface-unbridge> I<bridge> [I<--no-start>]
2572
2573 Tear down a bridge device named I<bridge>, releasing its underlying
2574 interface back to normal usage, and moving all IP address
2575 configuration from the bridge device to the underlying device.  The
2576 underlying interface is restarted unless I<--no-start> is present;
2577 this flag is present for symmetry, but generally not recommended.
2578
2579 See also B<iface-bridge> for creating a bridge.
2580
2581 =item B<iface-undefine> I<interface>
2582
2583 Undefine the configuration for an inactive host interface.
2584
2585 =item B<iface-begin>
2586
2587 Create a snapshot of current host interface settings, which can later
2588 be committed (I<iface-commit>) or restored (I<iface-rollback>).  If a
2589 snapshot already exists, then this command will fail until the
2590 previous snapshot has been committed or restored.  Undefined behavior
2591 results if any external changes are made to host interfaces outside of
2592 the libvirt API between the beginning of a snapshot and its eventual
2593 commit or rollback.
2594
2595 =item B<iface-commit>
2596
2597 Declare all changes since the last I<iface-begin> as working, and
2598 delete the rollback point.  If no interface snapshot has already been
2599 started, then this command will fail.
2600
2601 =item B<iface-rollback>
2602
2603 Revert all host interface settings back to the state recorded in the
2604 last I<iface-begin>.  If no interface snapshot has already been
2605 started, then this command will fail.  Rebooting the host also serves
2606 as an implicit rollback point.
2607
2608 =back
2609
2610 =head1 STORAGE POOL COMMANDS
2611
2612 The following commands manipulate storage pools. Libvirt has the
2613 capability to manage various storage solutions, including files, raw
2614 partitions, and domain-specific formats, used to provide the storage
2615 volumes visible as devices within virtual machines. For more detailed
2616 information about this feature, see the documentation at
2617 L<http://libvirt.org/formatstorage.html> . Many of the commands for
2618 pools are similar to the ones used for domains.
2619
2620 =over 4
2621
2622 =item B<find-storage-pool-sources> I<type> [I<srcSpec>]
2623
2624 Returns XML describing all storage pools of a given I<type> that could
2625 be found.  If I<srcSpec> is provided, it is a file that contains XML
2626 to further restrict the query for pools.
2627
2628 =item B<find-storage-pool-sources-as> I<type> [I<host>] [I<port>]
2629 [I<initiator>]
2630
2631 Returns XML describing all storage pools of a given I<type> that could
2632 be found.  If I<host>, I<port>, or I<initiator> are provided, they control
2633 where the query is performed.
2634
2635 =item B<pool-autostart> I<pool-or-uuid> [I<--disable>]
2636
2637 Configure whether I<pool> should automatically start at boot.
2638
2639 =item B<pool-build> I<pool-or-uuid> [I<--overwrite>] [I<--no-overwrite>]
2640
2641 Build a given pool.
2642
2643 Options I<--overwrite> and I<--no-overwrite> can only be used for
2644 B<pool-build> a filesystem pool. If neither of them is specified,
2645 B<pool-build> on a filesystem pool only makes the directory; If
2646 I<--no-overwrite> is specified, it probes to determine if a
2647 filesystem already exists on the target device, returning an error
2648 if exists, or using mkfs to format the target device if not; If
2649 I<--overwrite> is specified, mkfs is always executed, any existed
2650 data on the target device is overwritten unconditionally.
2651
2652 =item B<pool-create> I<file>
2653
2654 Create and start a pool object from the XML I<file>.
2655
2656 =item B<pool-create-as> I<name> I<--print-xml> I<type> [I<source-host>]
2657 [I<source-path>] [I<source-dev>] [I<source-name>] [<target>]
2658 [I<--source-format format>]
2659
2660 Create and start a pool object I<name> from the raw parameters.  If
2661 I<--print-xml> is specified, then print the XML of the pool object
2662 without creating the pool.  Otherwise, the pool has the specified
2663 I<type>.
2664
2665 =item B<pool-define> I<file>
2666
2667 Create, but do not start, a pool object from the XML I<file>.
2668
2669 =item B<pool-define-as> I<name> I<--print-xml> I<type> [I<source-host>]
2670 [I<source-path>] [I<source-dev>] [I<source-name>] [<target>]
2671 [I<--source-format format>]
2672
2673 Create, but do not start, a pool object I<name> from the raw parameters.  If
2674 I<--print-xml> is specified, then print the XML of the pool object
2675 without defining the pool.  Otherwise, the pool has the specified
2676 I<type>.
2677
2678 =item B<pool-destroy> I<pool-or-uuid>
2679
2680 Destroy (stop) a given I<pool> object. Libvirt will no longer manage the
2681 storage described by the pool object, but the raw data contained in
2682 the pool is not changed, and can be later recovered with
2683 B<pool-create>.
2684
2685 =item B<pool-delete> I<pool-or-uuid>
2686
2687 Destroy the resources used by a given I<pool> object. This operation
2688 is non-recoverable.  The I<pool> object will still exist after this
2689 command, ready for the creation of new storage volumes.
2690
2691 =item B<pool-dumpxml> [I<--inactive>] I<pool-or-uuid>
2692
2693 Returns the XML information about the I<pool> object.
2694 I<--inactive> tells virsh to dump pool configuration that will be used
2695 on next start of the pool as opposed to the current pool configuration.
2696
2697 =item B<pool-edit> I<pool-or-uuid>
2698
2699 Edit the XML configuration file for a storage pool.
2700
2701 This is equivalent to:
2702
2703  virsh pool-dumpxml pool > pool.xml
2704  vi pool.xml (or make changes with your other text editor)
2705  virsh pool-define pool.xml
2706
2707 except that it does some error checking.
2708
2709 The editor used can be supplied by the C<$VISUAL> or C<$EDITOR> environment
2710 variables, and defaults to C<vi>.
2711
2712 =item B<pool-info> I<pool-or-uuid>
2713
2714 Returns basic information about the I<pool> object.
2715
2716 =item B<pool-list> [I<--inactive>] [I<--all>]
2717                    [I<--persistent>] [I<--transient>]
2718                    [I<--autostart>] [I<--no-autostart>]
2719                    [[I<--details>] [<type>]
2720
2721 List pool objects known to libvirt.  By default, only active pools
2722 are listed; I<--inactive> lists just the inactive pools, and I<--all>
2723 lists all pools.
2724
2725 In addition, there are several sets of filtering flags. I<--persistent> is to
2726 list the persistent pools, I<--transient> is to list the transient pools.
2727 I<--autostart> lists the autostarting pools, I<--no-autostart> lists the pools
2728 with autostarting disabled.
2729
2730 You may also want to list pools with specified types using I<type>, the
2731 pool types must be separated by comma, e.g. --type dir,disk. The valid pool
2732 types include 'dir', 'fs', 'netfs', 'logical', 'disk', 'iscsi', 'scsi',
2733 'mpath', 'rbd', 'sheepdog' and 'gluster'.
2734
2735 The I<--details> option instructs virsh to additionally
2736 display pool persistence and capacity related information where available.
2737
2738 NOTE: When talking to older servers, this command is forced to use a series of
2739 API calls with an inherent race, where a pool might not be listed or might appear
2740 more than once if it changed state between calls while the list was being
2741 collected.  Newer servers do not have this problem.
2742
2743 =item B<pool-name> I<uuid>
2744
2745 Convert the I<uuid> to a pool name.
2746
2747 =item B<pool-refresh> I<pool-or-uuid>
2748
2749 Refresh the list of volumes contained in I<pool>.
2750
2751 =item B<pool-start> I<pool-or-uuid>
2752
2753 Start the storage I<pool>, which is previously defined but inactive.
2754
2755 B<Note>: A storage pool that relies on remote resources such as an
2756 "iscsi" or a (v)HBA backed "scsi" pool may need to be refreshed multiple
2757 times in order to have all the volumes detected (see B<pool-refresh>).
2758 This is because the corresponding volume devices may not be present in
2759 the host's filesystem during the initial pool startup or the current
2760 refresh attempt. The number of refresh retries is dependant upon the
2761 network connection and the time the host takes to export the
2762 corresponding devices.
2763
2764 =item B<pool-undefine> I<pool-or-uuid>
2765
2766 Undefine the configuration for an inactive I<pool>.
2767
2768 =item B<pool-uuid> I<pool>
2769
2770 Returns the UUID of the named I<pool>.
2771
2772 =back
2773
2774 =head1 VOLUME COMMANDS
2775
2776 =over 4
2777
2778 =item B<vol-create> I<pool-or-uuid> I<FILE> [I<--prealloc-metadata>]
2779
2780 Create a volume from an XML <file>.
2781 I<pool-or-uuid> is the name or UUID of the storage pool to create the volume in.
2782 I<FILE> is the XML <file> with the volume definition. An easy way to create the
2783 XML <file> is to use the B<vol-dumpxml> command to obtain the definition of a
2784 pre-existing volume.
2785 [I<--prealloc-metadata>] preallocate metadata (for qcow2 images which don't
2786 support full allocation). This option creates a sparse image file with metadata,
2787 resulting in higher performance compared to images with no preallocation and
2788 only slightly higher initial disk space usage.
2789
2790 B<Example>
2791
2792  virsh vol-dumpxml --pool storagepool1 appvolume1 > newvolume.xml
2793  vi newvolume.xml (or make changes with your other text editor)
2794  virsh vol-create differentstoragepool newvolume.xml
2795
2796 =item B<vol-create-from> I<pool-or-uuid> I<FILE> [I<--inputpool>
2797 I<pool-or-uuid>] I<vol-name-or-key-or-path> [I<--prealloc-metadata>]
2798
2799 Create a volume, using another volume as input.
2800 I<pool-or-uuid> is the name or UUID of the storage pool to create the volume in.
2801 I<FILE> is the XML <file> with the volume definition.
2802 I<--inputpool> I<pool-or-uuid> is the name or uuid of the storage pool the
2803 source volume is in.
2804 I<vol-name-or-key-or-path> is the name or key or path of the source volume.
2805 [I<--prealloc-metadata>] preallocate metadata (for qcow2 images which don't
2806 support full allocation). This option creates a sparse image file with metadata,
2807 resulting in higher performance compared to images with no preallocation and
2808 only slightly higher initial disk space usage.
2809
2810 =item B<vol-create-as> I<pool-or-uuid> I<name> I<capacity>
2811 [I<--allocation> I<size>] [I<--format> I<string>] [I<--backing-vol>
2812 I<vol-name-or-key-or-path>] [I<--backing-vol-format> I<string>]
2813 [I<--prealloc-metadata>]
2814
2815 Create a volume from a set of arguments.
2816 I<pool-or-uuid> is the name or UUID of the storage pool to create the volume
2817 in.
2818 I<name> is the name of the new volume.
2819 I<capacity> is the size of the volume to be created, as a scaled integer
2820 (see B<NOTES> above), defaulting to bytes if there is no suffix.
2821 I<--allocation> I<size> is the initial size to be allocated in the volume,
2822 also as a scaled integer defaulting to bytes.
2823 I<--format> I<string> is used in file based storage pools to specify the volume
2824 file format to use; raw, bochs, qcow, qcow2, vmdk, qed.
2825 I<--backing-vol> I<vol-name-or-key-or-path> is the source backing
2826 volume to be used if taking a snapshot of an existing volume.
2827 I<--backing-vol-format> I<string> is the format of the snapshot backing volume;
2828 raw, bochs, qcow, qcow2, qed, vmdk, host_device. These are, however, meant for
2829 file based storage pools.
2830 [I<--prealloc-metadata>] preallocate metadata (for qcow2 images which don't
2831 support full allocation). This option creates a sparse image file with metadata,
2832 resulting in higher performance compared to images with no preallocation and
2833 only slightly higher initial disk space usage.
2834
2835 =item B<vol-clone> [I<--pool> I<pool-or-uuid>] I<vol-name-or-key-or-path>
2836 I<name> [I<--prealloc-metadata>]
2837
2838 Clone an existing volume.  Less powerful, but easier to type, version of
2839 B<vol-create-from>.
2840 I<--pool> I<pool-or-uuid> is the name or UUID of the storage pool to create
2841 the volume in.
2842 I<vol-name-or-key-or-path> is the name or key or path of the source volume.
2843 I<name> is the name of the new volume.
2844 [I<--prealloc-metadata>] preallocate metadata (for qcow2 images which don't
2845 support full allocation). This option creates a sparse image file with metadata,
2846 resulting in higher performance compared to images with no preallocation and
2847 only slightly higher initial disk space usage.
2848
2849 =item B<vol-delete> [I<--pool> I<pool-or-uuid>] I<vol-name-or-key-or-path>
2850
2851 Delete a given volume.
2852 I<--pool> I<pool-or-uuid> is the name or UUID of the storage pool the volume
2853 is in.
2854 I<vol-name-or-key-or-path> is the name or key or path of the volume to delete.
2855
2856 =item B<vol-upload> [I<--pool> I<pool-or-uuid>] [I<--offset> I<bytes>]
2857 [I<--length> I<bytes>] I<vol-name-or-key-or-path> I<local-file>
2858
2859 Upload the contents of I<local-file> to a storage volume.
2860 I<--pool> I<pool-or-uuid> is the name or UUID of the storage pool the volume
2861 is in.
2862 I<vol-name-or-key-or-path> is the name or key or path of the volume where the
2863 file will be uploaded.
2864 I<--offset> is the position in the storage volume at which to start writing
2865 the data. I<--length> is an upper bound of the amount of data to be uploaded.
2866 An error will occur if the I<local-file> is greater than the specified length.
2867
2868 =item B<vol-download> [I<--pool> I<pool-or-uuid>] [I<--offset> I<bytes>]
2869 [I<--length> I<bytes>] I<vol-name-or-key-or-path> I<local-file>
2870
2871 Download the contents of a storage volume to I<local-file>.
2872 I<--pool> I<pool-or-uuid> is the name or UUID of the storage pool the volume
2873 is in.
2874 I<vol-name-or-key-or-path> is the name or key or path of the volume to download.
2875 I<--offset> is the position in the storage volume at which to start reading
2876 the data. I<--length> is an upper bound of the amount of data to be downloaded.
2877
2878 =item B<vol-wipe> [I<--pool> I<pool-or-uuid>] [I<--algorithm> I<algorithm>]
2879 I<vol-name-or-key-or-path>
2880
2881 Wipe a volume, ensure data previously on the volume is not accessible to
2882 future reads. I<--pool> I<pool-or-uuid> is the name or UUID of the storage
2883 pool the volume is in.
2884 I<vol-name-or-key-or-path> is the name or key or path of the volume to wipe.
2885 It is possible to choose different wiping algorithms instead of re-writing
2886 volume with zeroes. This can be done via I<--algorithm> switch.
2887
2888 B<Supported algorithms>
2889   zero       - 1-pass all zeroes
2890   nnsa       - 4-pass NNSA Policy Letter NAP-14.1-C (XVI-8) for
2891                sanitizing removable and non-removable hard disks:
2892                random x2, 0x00, verify.
2893   dod        - 4-pass DoD 5220.22-M section 8-306 procedure for
2894                sanitizing removable and non-removable rigid
2895                disks: random, 0x00, 0xff, verify.
2896   bsi        - 9-pass method recommended by the German Center of
2897                Security in Information Technologies
2898                (http://www.bsi.bund.de): 0xff, 0xfe, 0xfd, 0xfb,
2899                0xf7, 0xef, 0xdf, 0xbf, 0x7f.
2900   gutmann    - The canonical 35-pass sequence described in
2901                Gutmann's paper.
2902   schneier   - 7-pass method described by Bruce Schneier in
2903                "Applied Cryptography" (1996): 0x00, 0xff,
2904                random x5.
2905   pfitzner7  - Roy Pfitzner's 7-random-pass method: random x7.
2906   pfitzner33 - Roy Pfitzner's 33-random-pass method: random x33.
2907   random     - 1-pass pattern: random.
2908
2909 B<Note>: The availability of algorithms may be limited by the version
2910 of the C<scrub> binary installed on the host.
2911
2912 =item B<vol-dumpxml> [I<--pool> I<pool-or-uuid>] I<vol-name-or-key-or-path>
2913
2914 Output the volume information as an XML dump to stdout.
2915 I<--pool> I<pool-or-uuid> is the name or UUID of the storage pool the volume
2916 is in. I<vol-name-or-key-or-path> is the name or key or path of the volume
2917 to output the XML of.
2918
2919 =item B<vol-info> [I<--pool> I<pool-or-uuid>] I<vol-name-or-key-or-path>
2920
2921 Returns basic information about the given storage volume.
2922 I<--pool> I<pool-or-uuid> is the name or UUID of the storage pool the volume
2923 is in. I<vol-name-or-key-or-path> is the name or key or path of the volume
2924 to return information for.
2925
2926 =item B<vol-list> [I<--pool> I<pool-or-uuid>] [I<--details>]
2927
2928 Return the list of volumes in the given storage pool.
2929 I<--pool> I<pool-or-uuid> is the name or UUID of the storage pool.
2930 The I<--details> option instructs virsh to additionally display volume
2931 type and capacity related information where available.
2932
2933 =item B<vol-pool> [I<--uuid>] I<vol-key-or-path>
2934
2935 Return the pool name or UUID for a given volume. By default, the pool name is
2936 returned. If the I<--uuid> option is given, the pool UUID is returned instead.
2937 I<vol-key-or-path> is the key or path of the volume to return the pool
2938 information for.
2939
2940 =item B<vol-path> [I<--pool> I<pool-or-uuid>] I<vol-name-or-key>
2941
2942 Return the path for a given volume.
2943 I<--pool> I<pool-or-uuid> is the name or UUID of the storage pool the volume
2944 is in.
2945 I<vol-name-or-key> is the name or key of the volume to return the path for.
2946
2947 =item B<vol-name> I<vol-key-or-path>
2948
2949 Return the name for a given volume.
2950 I<vol-key-or-path> is the key or path of the volume to return the name for.
2951
2952 =item B<vol-key> [I<--pool> I<pool-or-uuid>] I<vol-name-or-path>
2953
2954 Return the volume key for a given volume.
2955 I<--pool> I<pool-or-uuid> is the name or UUID of the storage pool the volume
2956 is in. I<vol-name-or-path> is the name or path of the volume to return the
2957 volume key for.
2958
2959 =item B<vol-resize> [I<--pool> I<pool-or-uuid>] I<vol-name-or-path>
2960 I<pool-or-uuid> I<capacity> [I<--allocate>] [I<--delta>] [I<--shrink>]
2961
2962 Resize the capacity of the given volume, in bytes.
2963 I<--pool> I<pool-or-uuid> is the name or UUID of the storage pool the volume
2964 is in. I<vol-name-or-key-or-path> is the name or key or path of the volume
2965 to resize.  The new capacity might be sparse unless I<--allocate> is
2966 specified.  Normally, I<capacity> is the new size, but if I<--delta>
2967 is present, then it is added to the existing size.  Attempts to shrink
2968 the volume will fail unless I<--shrink> is present; I<capacity> cannot
2969 be negative unless I<--shrink> is provided, but a negative sign is not
2970 necessary. I<capacity> is a scaled integer (see B<NOTES> above), which
2971 defaults to bytes if there is no suffix.  This command is only safe
2972 for storage volumes not in use by an active guest; see also
2973 B<blockresize> for live resizing.
2974
2975 =back
2976
2977 =head1 SECRET COMMANDS
2978
2979 The following commands manipulate "secrets" (e.g. passwords, passphrases and
2980 encryption keys).  Libvirt can store secrets independently from their use, and
2981 other objects (e.g. volumes or domains) can refer to the secrets for encryption
2982 or possibly other uses.  Secrets are identified using a UUID.  See
2983 L<http://libvirt.org/formatsecret.html> for documentation of the XML format
2984 used to represent properties of secrets.
2985
2986 =over 4
2987
2988 =item B<secret-define> I<file>
2989
2990 Create a secret with the properties specified in I<file>, with no associated
2991 secret value.  If I<file> does not specify a UUID, choose one automatically.
2992 If I<file> specifies a UUID of an existing secret, replace its properties by
2993 properties defined in I<file>, without affecting the secret value.
2994
2995 =item B<secret-dumpxml> I<secret>
2996
2997 Output properties of I<secret> (specified by its UUID) as an XML dump to stdout.
2998
2999 =item B<secret-set-value> I<secret> I<base64>
3000
3001 Set the value associated with I<secret> (specified by its UUID) to the value
3002 Base64-encoded value I<base64>.
3003
3004 =item B<secret-get-value> I<secret>
3005
3006 Output the value associated with I<secret> (specified by its UUID) to stdout,
3007 encoded using Base64.
3008
3009 =item B<secret-undefine> I<secret>
3010
3011 Delete a I<secret> (specified by its UUID), including the associated value, if
3012 any.
3013
3014 =item B<secret-list> [I<--ephemeral>] [I<--no-ephemeral>]
3015                      [I<--private>] [I<--no-private>]
3016
3017 Returns the list of secrets. You may also want to filter the returned secrets
3018 by I<--ephemeral> to list the ephemeral ones, I<--no-ephemeral> to list the
3019 non-ephemeral ones, I<--private> to list the private ones, and
3020 I<--no-private> to list the non-private ones.
3021
3022 =back
3023
3024 =head1 SNAPSHOT COMMANDS
3025
3026 The following commands manipulate domain snapshots.  Snapshots take the
3027 disk, memory, and device state of a domain at a point-of-time, and save it
3028 for future use.  They have many uses, from saving a "clean" copy of an OS
3029 image to saving a domain's state before a potentially destructive operation.
3030 Snapshots are identified with a unique name.  See
3031 L<http://libvirt.org/formatsnapshot.html> for documentation of the XML format
3032 used to represent properties of snapshots.
3033
3034 =over 4
3035
3036 =item B<snapshot-create> I<domain> [I<xmlfile>] {[I<--redefine> [I<--current>]]
3037 | [I<--no-metadata>] [I<--halt>] [I<--disk-only>] [I<--reuse-external>]
3038 [I<--quiesce>] [I<--atomic>] [I<--live>]}
3039
3040 Create a snapshot for domain I<domain> with the properties specified in
3041 I<xmlfile>.  Normally, the only properties settable for a domain snapshot
3042 are the <name> and <description> elements, as well as <disks> if
3043 I<--disk-only> is given; the rest of the fields are
3044 ignored, and automatically filled in by libvirt.  If I<xmlfile> is
3045 completely omitted, then libvirt will choose a value for all fields.
3046 The new snapshot will become current, as listed by B<snapshot-current>.
3047
3048 If I<--halt> is specified, the domain will be left in an inactive state
3049 after the snapshot is created.
3050
3051 If I<--disk-only> is specified, the snapshot will only include disk
3052 state rather than the usual system checkpoint with vm state.  Disk
3053 snapshots are faster than full system checkpoints, but reverting to a
3054 disk snapshot may require fsck or journal replays, since it is like
3055 the disk state at the point when the power cord is abruptly pulled;
3056 and mixing I<--halt> and I<--disk-only> loses any data that was not
3057 flushed to disk at the time.
3058
3059 If I<--redefine> is specified, then all XML elements produced by
3060 B<snapshot-dumpxml> are valid; this can be used to migrate snapshot
3061 hierarchy from one machine to another, to recreate hierarchy for the
3062 case of a transient domain that goes away and is later recreated with
3063 the same name and UUID, or to make slight alterations in the snapshot
3064 metadata (such as host-specific aspects of the domain XML embedded in
3065 the snapshot).  When this flag is supplied, the I<xmlfile> argument
3066 is mandatory, and the domain's current snapshot will not be altered
3067 unless the I<--current> flag is also given.
3068
3069 If I<--no-metadata> is specified, then the snapshot data is created,
3070 but any metadata is immediately discarded (that is, libvirt does not
3071 treat the snapshot as current, and cannot revert to the snapshot
3072 unless I<--redefine> is later used to teach libvirt about the
3073 metadata again).
3074
3075 If I<--reuse-external> is specified, and the snapshot XML requests an
3076 external snapshot with a destination of an existing file, then the
3077 destination must exist, and is reused; otherwise, a snapshot is refused
3078 to avoid losing contents of the existing files.
3079
3080 If I<--quiesce> is specified, libvirt will try to use guest agent
3081 to freeze and unfreeze domain's mounted file systems. However,
3082 if domain has no guest agent, snapshot creation will fail.
3083 Currently, this requires I<--disk-only> to be passed as well.
3084
3085 If I<--atomic> is specified, libvirt will guarantee that the snapshot
3086 either succeeds, or fails with no changes; not all hypervisors support
3087 this.  If this flag is not specified, then some hypervisors may fail
3088 after partially performing the action, and B<dumpxml> must be used to
3089 see whether any partial changes occurred.
3090
3091 If I<--live> is specified, libvirt takes the snapshot while the guest is
3092 running. This increases the size of the memory image of the external
3093 checkpoint. This is currently supported only for external checkpoints.
3094
3095 Existence of snapshot metadata will prevent attempts to B<undefine>
3096 a persistent domain.  However, for transient domains, snapshot
3097 metadata is silently lost when the domain quits running (whether
3098 by command such as B<destroy> or by internal guest action).
3099
3100 =item B<snapshot-create-as> I<domain> {[I<--print-xml>]
3101 | [I<--no-metadata>] [I<--halt>] [I<--reuse-external>]} [I<name>]
3102 [I<description>] [I<--disk-only> [I<--quiesce>]] [I<--atomic>]
3103 [[I<--live>] [I<--memspec> B<memspec>]] [I<--diskspec>] B<diskspec>]...
3104
3105 Create a snapshot for domain I<domain> with the given <name> and
3106 <description>; if either value is omitted, libvirt will choose a
3107 value.  If I<--print-xml> is specified, then XML appropriate for
3108 I<snapshot-create> is output, rather than actually creating a snapshot.
3109 Otherwise, if I<--halt> is specified, the domain will be left in an
3110 inactive state after the snapshot is created, and if I<--disk-only>
3111 is specified, the snapshot will not include vm state.
3112
3113 The I<--memspec> option can be used to control whether a checkpoint
3114 is internal or external.  The I<--memspec> flag is mandatory, followed
3115 by a B<memspec> of the form B<[file=]name[,snapshot=type]>, where
3116 type can be B<no>, B<internal>, or B<external>.  To include a literal
3117 comma in B<file=name>, escape it with a second comma. I<--memspec> cannot
3118 be used together with I<--disk-only>.
3119
3120 The I<--diskspec> option can be used to control how I<--disk-only> and
3121 external checkpoints create external files.  This option can occur
3122 multiple times, according to the number of <disk> elements in the domain
3123 xml.  Each <diskspec> is in the
3124 form B<disk[,snapshot=type][,driver=type][,file=name]>.  To include a
3125 literal comma in B<disk> or in B<file=name>, escape it with a second
3126 comma.  A literal I<--diskspec> must precede each B<diskspec> unless
3127 all three of I<domain>, I<name>, and I<description> are also present.
3128 For example, a diskspec of "vda,snapshot=external,file=/path/to,,new"
3129 results in the following XML:
3130   <disk name='vda' snapshot='external'>
3131     <source file='/path/to,new'/>
3132   </disk>
3133
3134 If I<--reuse-external> is specified, and the domain XML or I<diskspec>
3135 option requests an external snapshot with a destination of an existing
3136 file, then the destination must exist, and is reused; otherwise, a
3137 snapshot is refused to avoid losing contents of the existing files.
3138
3139 If I<--quiesce> is specified, libvirt will try to use guest agent
3140 to freeze and unfreeze domain's mounted file systems. However,
3141 if domain has no guest agent, snapshot creation will fail.
3142 Currently, this requires I<--disk-only> to be passed as well.
3143
3144 If I<--no-metadata> is specified, then the snapshot data is created,
3145 but any metadata is immediately discarded (that is, libvirt does not
3146 treat the snapshot as current, and cannot revert to the snapshot
3147 unless B<snapshot-create> is later used to teach libvirt about the
3148 metadata again).  This flag is incompatible with I<--print-xml>.
3149
3150 If I<--atomic> is specified, libvirt will guarantee that the snapshot
3151 either succeeds, or fails with no changes; not all hypervisors support
3152 this.  If this flag is not specified, then some hypervisors may fail
3153 after partially performing the action, and B<dumpxml> must be used to
3154 see whether any partial changes occurred.
3155
3156 If I<--live> is specified, libvirt takes the snapshot while the guest is
3157 running. This increases the size of the memory image of the external
3158 checkpoint. This is currently supported only for external checkpoints.
3159
3160 =item B<snapshot-current> I<domain> {[I<--name>] | [I<--security-info>]
3161 | [I<snapshotname>]}
3162
3163 Without I<snapshotname>, this will output the snapshot XML for the domain's
3164 current snapshot (if any).  If I<--name> is specified, just the
3165 current snapshot name instead of the full xml.  Otherwise, using
3166 I<--security-info> will also include security sensitive information in
3167 the XML.
3168
3169 With I<snapshotname>, this is a request to make the existing named
3170 snapshot become the current snapshot, without reverting the domain.
3171
3172 =item B<snapshot-edit> I<domain> [I<snapshotname>] [I<--current>]
3173 {[I<--rename>] | [I<--clone>]}
3174
3175 Edit the XML configuration file for I<snapshotname> of a domain.  If
3176 both I<snapshotname> and I<--current> are specified, also force the
3177 edited snapshot to become the current snapshot.  If I<snapshotname>
3178 is omitted, then I<--current> must be supplied, to edit the current
3179 snapshot.
3180
3181 This is equivalent to:
3182
3183  virsh snapshot-dumpxml dom name > snapshot.xml
3184  vi snapshot.xml (or make changes with your other text editor)
3185  virsh snapshot-create dom snapshot.xml --redefine [--current]
3186
3187 except that it does some error checking.
3188
3189 The editor used can be supplied by the C<$VISUAL> or C<$EDITOR> environment
3190 variables, and defaults to C<vi>.
3191
3192 If I<--rename> is specified, then the edits can change the snapshot
3193 name.  If I<--clone> is specified, then changing the snapshot name
3194 will create a clone of the snapshot metadata.  If neither is specified,
3195 then the edits must not change the snapshot name.  Note that changing
3196 a snapshot name must be done with care, since the contents of some
3197 snapshots, such as internal snapshots within a single qcow2 file, are
3198 accessible only from the original name.
3199
3200 =item B<snapshot-info> I<domain> {I<snapshot> | I<--current>}
3201
3202 Output basic information about a named <snapshot>, or the current snapshot
3203 with I<--current>.
3204
3205 =item B<snapshot-list> I<domain> [I<--metadata>] [I<--no-metadata>]
3206 [{I<--parent> | I<--roots> | [{I<--tree> | I<--name>}]}]
3207 [{[I<--from>] B<snapshot> | I<--current>} [I<--descendants>]]
3208 [I<--leaves>] [I<--no-leaves>] [I<--inactive>] [I<--active>]
3209 [I<--disk-only>] [I<--internal>] [I<--external>]
3210
3211 List all of the available snapshots for the given domain, defaulting
3212 to show columns for the snapshot name, creation time, and domain state.
3213
3214 If I<--parent> is specified, add a column to the output table giving
3215 the name of the parent of each snapshot.  If I<--roots> is specified,
3216 the list will be filtered to just snapshots that have no parents.
3217 If I<--tree> is specified, the output will be in a tree format, listing
3218 just snapshot names.  These three options are mutually exclusive. If
3219 I<--name> is specified only the snapshot name is printed. This option is
3220 mutually exclusive with I<--tree>.
3221
3222 If I<--from> is provided, filter the list to snapshots which are
3223 children of the given B<snapshot>; or if I<--current> is provided,
3224 start at the current snapshot.  When used in isolation or with
3225 I<--parent>, the list is limited to direct children unless
3226 I<--descendants> is also present.  When used with I<--tree>, the
3227 use of I<--descendants> is implied.  This option is not compatible
3228 with I<--roots>.  Note that the starting point of I<--from> or
3229 I<--current> is not included in the list unless the I<--tree>
3230 option is also present.
3231
3232 If I<--leaves> is specified, the list will be filtered to just
3233 snapshots that have no children.  Likewise, if I<--no-leaves> is
3234 specified, the list will be filtered to just snapshots with
3235 children.  (Note that omitting both options does no filtering,
3236 while providing both options will either produce the same list
3237 or error out depending on whether the server recognizes the flags).
3238 Filtering options are not compatible with I<--tree>.
3239
3240 If I<--metadata> is specified, the list will be filtered to just
3241 snapshots that involve libvirt metadata, and thus would prevent
3242 B<undefine> of a persistent domain, or be lost on B<destroy> of
3243 a transient domain.  Likewise, if I<--no-metadata> is specified,
3244 the list will be filtered to just snapshots that exist without
3245 the need for libvirt metadata.
3246
3247 If I<--inactive> is specified, the list will be filtered to snapshots
3248 that were taken when the domain was shut off.  If I<--active> is
3249 specified, the list will be filtered to snapshots that were taken
3250 when the domain was running, and where the snapshot includes the
3251 memory state to revert to that running state.  If I<--disk-only> is
3252 specified, the list will be filtered to snapshots that were taken
3253 when the domain was running, but where the snapshot includes only
3254 disk state.
3255
3256 If I<--internal> is specified, the list will be filtered to snapshots
3257 that use internal storage of existing disk images.  If I<--external>
3258 is specified, the list will be filtered to snapshots that use external
3259 files for disk images or memory state.
3260
3261 =item B<snapshot-dumpxml> I<domain> I<snapshot> [I<--security-info>]
3262
3263 Output the snapshot XML for the domain's snapshot named I<snapshot>.
3264 Using I<--security-info> will also include security sensitive information.
3265 Use B<snapshot-current> to easily access the XML of the current snapshot.
3266
3267 =item B<snapshot-parent> I<domain> {I<snapshot> | I<--current>}
3268
3269 Output the name of the parent snapshot, if any, for the given
3270 I<snapshot>, or for the current snapshot with I<--current>.
3271
3272 =item B<snapshot-revert> I<domain> {I<snapshot> | I<--current>}
3273 [{I<--running> | I<--paused>}] [I<--force>]
3274
3275 Revert the given domain to the snapshot specified by I<snapshot>, or to
3276 the current snapshot with I<--current>.  Be aware
3277 that this is a destructive action; any changes in the domain since the last
3278 snapshot was taken will be lost.  Also note that the state of the domain after
3279 snapshot-revert is complete will be the state of the domain at the time
3280 the original snapshot was taken.
3281
3282 Normally, reverting to a snapshot leaves the domain in the state it was
3283 at the time the snapshot was created, except that a disk snapshot with
3284 no vm state leaves the domain in an inactive state.  Passing either the
3285 I<--running> or I<--paused> flag will perform additional state changes
3286 (such as booting an inactive domain, or pausing a running domain).  Since
3287 transient domains cannot be inactive, it is required to use one of these
3288 flags when reverting to a disk snapshot of a transient domain.
3289
3290 There are two cases where a snapshot revert involves extra risk, which
3291 requires the use of I<--force> to proceed.  One is the case of a
3292 snapshot that lacks full domain information for reverting
3293 configuration (such as snapshots created prior to libvirt 0.9.5);
3294 since libvirt cannot prove that the current configuration matches what
3295 was in use at the time of the snapshot, supplying I<--force> assures
3296 libvirt that the snapshot is compatible with the current configuration
3297 (and if it is not, the domain will likely fail to run).  The other is
3298 the case of reverting from a running domain to an active state where a
3299 new hypervisor has to be created rather than reusing the existing
3300 hypervisor, because it implies drawbacks such as breaking any existing
3301 VNC or Spice connections; this condition happens with an active
3302 snapshot that uses a provably incompatible configuration, as well as
3303 with an inactive snapshot that is combined with the I<--start> or
3304 I<--pause> flag.
3305
3306 =item B<snapshot-delete> I<domain> {I<snapshot> | I<--current>} [I<--metadata>]
3307 [{I<--children> | I<--children-only>}]
3308
3309 Delete the snapshot for the domain named I<snapshot>, or the current
3310 snapshot with I<--current>.  If this snapshot
3311 has child snapshots, changes from this snapshot will be merged into the
3312 children.  If I<--children> is passed, then delete this snapshot and any
3313 children of this snapshot.  If I<--children-only> is passed, then delete
3314 any children of this snapshot, but leave this snapshot intact.  These
3315 two flags are mutually exclusive.
3316
3317 If I<--metadata> is specified, then only delete the snapshot metadata
3318 maintained by libvirt, while leaving the snapshot contents intact for
3319 access by external tools; otherwise deleting a snapshot also removes
3320 the data contents from that point in time.
3321
3322 =back
3323
3324 =head1 NWFILTER COMMANDS
3325
3326 The following commands manipulate network filters. Network filters allow
3327 filtering of the network traffic coming from and going to virtual machines.
3328 Individual network traffic filters are written in XML and may contain
3329 references to other network filters, describe traffic filtering rules,
3330 or contain both. Network filters are referenced by virtual machines
3331 from within their interface description. A network filter may be referenced
3332 by multiple virtual machines' interfaces.
3333
3334 =over 4
3335
3336 =item B<nwfilter-define> I<xmlfile>
3337
3338 Make a new network filter known to libvirt. If a network filter with
3339 the same name already exists, it will be replaced with the new XML.
3340 Any running virtual machine referencing this network filter will have
3341 its network traffic rules adapted. If for any reason the network traffic
3342 filtering rules cannot be instantiated by any of the running virtual
3343 machines, then the new XML will be rejected.
3344
3345 =item B<nwfilter-undefine> I<nwfilter-name>
3346
3347 Delete a network filter. The deletion will fail if any running virtual
3348 machine is currently using this network filter.
3349
3350 =item B<nwfilter-list>
3351
3352 List all of the available network filters.
3353
3354 =item B<nwfilter-dumpxml> I<nwfilter-name>
3355
3356 Output the network filter XML.
3357
3358 =item B<nwfilter-edit> I<nwfilter-name>
3359
3360 Edit the XML of a network filter.
3361
3362 This is equivalent to:
3363
3364  virsh nwfilter-dumpxml myfilter > myfilter.xml
3365  vi myfilter.xml (or make changes with your other text editor)
3366  virsh nwfilter-define myfilter.xml
3367
3368 except that it does some error checking.
3369 The new network filter may be rejected due to the same reason as
3370 mentioned in I<nwfilter-define>.
3371
3372 The editor used can be supplied by the C<$VISUAL> or C<$EDITOR> environment
3373 variables, and defaults to C<vi>.
3374
3375 =back
3376
3377 =head1 HYPERVISOR-SPECIFIC COMMANDS
3378
3379 NOTE: Use of the following commands is B<strongly> discouraged.  They
3380 can cause libvirt to become confused and do the wrong thing on subsequent
3381 operations.  Once you have used these commands, please do not report
3382 problems to the libvirt developers; the reports will be ignored.  If
3383 you find that these commands are the only way to accomplish something,
3384 then it is better to request that the feature be added as a first-class
3385 citizen in the regular libvirt library.
3386
3387 =over 4
3388
3389 =item B<qemu-attach> I<pid>
3390
3391 Attach an externally launched QEMU process to the libvirt QEMU driver.
3392 The QEMU process must have been created with a monitor connection
3393 using the UNIX driver. Ideally the process will also have had the
3394 '-name' argument specified.
3395
3396 =over 4
3397
3398      $ qemu-kvm -cdrom ~/demo.iso \
3399          -monitor unix:/tmp/demo,server,nowait \
3400          -name foo \
3401          -uuid cece4f9f-dff0-575d-0e8e-01fe380f12ea  &
3402      $ QEMUPID=$!
3403      $ virsh qemu-attach $QEMUPID
3404
3405 =back
3406
3407 Not all functions of libvirt are expected to work reliably after
3408 attaching to an externally launched QEMU process. There may be
3409 issues with the guest ABI changing upon migration, and hotunplug
3410 may not work.
3411
3412 =item B<qemu-monitor-command> I<domain> { [I<--hmp>] | [I<--pretty>] }
3413 I<command>...
3414
3415 Send an arbitrary monitor command I<command> to domain I<domain> through the
3416 qemu monitor.  The results of the command will be printed on stdout.  If
3417 I<--hmp> is passed, the command is considered to be a human monitor command
3418 and libvirt will automatically convert it into QMP if needed.  In that case
3419 the result will also be converted back from QMP.  If I<--pretty> is given,
3420 and the monitor uses QMP, then the output will be pretty-printed.  If more
3421 than one argument is provided for I<command>, they are concatenated with a
3422 space in between before passing the single command to the monitor.
3423
3424 =item B<qemu-agent-command> I<domain> [I<--timeout> I<seconds> | I<--async> |
3425 I<--block>] I<command>...
3426
3427 Send an arbitrary guest agent command I<command> to domain I<domain> through
3428 qemu agent.
3429 I<--timeout>, I<--async> and I<--block> options are exclusive.
3430 I<--timeout> requires timeout seconds I<seconds> and it must be positive.
3431 When I<--aysnc> is given, the command waits for timeout whether success or
3432 failed. And when I<--block> is given, the command waits forever with blocking
3433 timeout.
3434
3435 =item B<qemu-monitor-event> [I<domain>] [I<--event> I<event-name>] [I<--loop>]
3436 [I<--timeout> I<seconds>] [I<--pretty>] [I<--regex>] [I<--no-case>]
3437
3438 Wait for arbitrary QEMU monitor events to occur, and print out the
3439 details of events as they happen.  The events can optionally be filtered
3440 by I<domain> or I<event-name>.  The 'query-events' QMP command can be
3441 used via I<qemu-monitor-command> to learn what events are supported.
3442 If I<--regex> is used, I<event-name> is a basic regular expression
3443 instead of a literal string.  If I<--no-case> is used, I<event-name>
3444 will match case-insensitively.
3445
3446 By default, this command is one-shot, and returns success once an event
3447 occurs; you can send SIGINT (usually via C<Ctrl-C>) to quit immediately.
3448 If I<--timeout> is specified, the command gives up waiting for events
3449 after I<seconds> have elapsed.  With I<--loop>, the command prints all
3450 events until a timeout or interrupt key.  If I<--pretty> is specified,
3451 any JSON event details are pretty-printed for better legibility.
3452
3453 =item B<lxc-enter-namespace> I<domain> -- /path/to/binary [arg1, [arg2, ...]]
3454
3455 Enter the namespace of I<domain> and execute the command C</path/to/binary>
3456 passing the requested args. The binary path is relative to the container
3457 root filesystem, not the host root filesystem. The binary will inherit the
3458 environment variables / console visible to virsh. This command only works
3459 when connected to the LXC hypervisor driver.  This command succeeds only
3460 if C</path/to/binary> has 0 exit status.
3461
3462 =back
3463
3464 =head1 ENVIRONMENT
3465
3466 The following environment variables can be set to alter the behaviour
3467 of C<virsh>
3468
3469 =over 4
3470
3471 =item VIRSH_DEBUG=<0 to 4>
3472
3473 Turn on verbose debugging of virsh commands. Valid levels are
3474
3475 =over 4
3476
3477 =item * VIRSH_DEBUG=0
3478
3479 DEBUG - Messages at ALL levels get logged
3480
3481 =item * VIRSH_DEBUG=1
3482
3483 INFO - Logs messages at levels INFO, NOTICE, WARNING and ERROR
3484
3485 =item * VIRSH_DEBUG=2
3486
3487 NOTICE - Logs messages at levels NOTICE, WARNING and ERROR
3488
3489 =item * VIRSH_DEBUG=3
3490
3491 WARNING - Logs messages at levels WARNING and ERROR
3492
3493 =item * VIRSH_DEBUG=4
3494
3495 ERROR - Messages at only ERROR level gets logged.
3496
3497 =back
3498
3499 =item VIRSH_LOG_FILE=C<LOGFILE>
3500
3501 The file to log virsh debug messages.
3502
3503 =item VIRSH_DEFAULT_CONNECT_URI
3504
3505 The hypervisor to connect to by default. Set this to a URI, in the same
3506 format as accepted by the B<connect> option. This environment variable
3507 is deprecated in favour of the global B<LIBVIRT_DEFAULT_URI> variable
3508 which serves the same purpose.
3509
3510 =item LIBVIRT_DEFAULT_URI
3511
3512 The hypervisor to connect to by default. Set this to a URI, in the
3513 same format as accepted by the B<connect> option. This overrides
3514 the default URI set in any client config file and prevents libvirt
3515 from probing for drivers.
3516
3517 =item VISUAL
3518
3519 The editor to use by the B<edit> and related options.
3520
3521 =item EDITOR
3522
3523 The editor to use by the B<edit> and related options, if C<VISUAL>
3524 is not set.
3525
3526 =item VIRSH_HISTSIZE
3527
3528 The number of commands to remember in the command  history.  The
3529 default value is 500.
3530
3531 =item LIBVIRT_DEBUG=LEVEL
3532
3533 Turn on verbose debugging of all libvirt API calls. Valid levels are
3534
3535 =over 4
3536
3537 =item * LIBVIRT_DEBUG=1
3538
3539 Messages at level DEBUG or above
3540
3541 =item * LIBVIRT_DEBUG=2
3542
3543 Messages at level INFO or above
3544
3545 =item * LIBVIRT_DEBUG=3
3546
3547 Messages at level WARNING or above
3548
3549 =item * LIBVIRT_DEBUG=4
3550
3551 Messages at level ERROR or above
3552
3553 =back
3554
3555 For further information about debugging options consult C<http://libvirt.org/logging.html>
3556
3557 =back
3558
3559 =head1 BUGS
3560
3561 Report any bugs discovered to the libvirt community via the mailing
3562 list C<http://libvirt.org/contact.html> or bug tracker C<http://libvirt.org/bugs.html>.
3563 Alternatively report bugs to your software distributor / vendor.
3564
3565 =head1 AUTHORS
3566
3567   Please refer to the AUTHORS file distributed with libvirt.
3568
3569   Based on the xm man page by:
3570   Sean Dague <sean at dague dot net>
3571   Daniel Stekloff <dsteklof at us dot ibm dot com>
3572
3573 =head1 COPYRIGHT
3574
3575 Copyright (C) 2005, 2007-2014 Red Hat, Inc., and the authors listed in the
3576 libvirt AUTHORS file.
3577
3578 =head1 LICENSE
3579
3580 virsh is distributed under the terms of the GNU LGPL v2+.
3581 This is free software; see the source for copying conditions. There
3582 is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
3583 PURPOSE
3584
3585 =head1 SEE ALSO
3586
3587 L<virt-install(1)>, L<virt-xml-validate(1)>, L<virt-top(1)>, L<virt-df(1)>,
3588 L<http://www.libvirt.org/>
3589
3590 =cut