daemon: Move TLS initialization to virInitialize
[libvirt/zwu.git] / tools / virsh.pod
blobe17f30994da5a346019ee526900a2a17288d5f8f
1 =head1 NAME
3 virsh - management user interface
5 =head1 SYNOPSIS
7 B<virsh> [I<OPTION>]... [I<COMMAND_STRING>]
9 B<virsh> [I<OPTION>]... I<COMMAND> [I<ARG>]...
11 =head1 DESCRIPTION
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.
25 The basic structure of most virsh usage is:
27   virsh [OPTION]... <command> <domain-id> [ARG]...
29 Where I<command> is one of the commands listed below, I<domain-id>
30 is the numeric domain id, or the domain name (which will be internally
31 translated to domain id), and I<ARGS> are command specific
32 options.  There are a few exceptions to this rule in the cases where
33 the command in question acts on all domains, the entire machine,
34 or directly on the xen hypervisor.  Those exceptions will be clear for
35 each of those commands.
37 The B<virsh> program can be used either to run one I<COMMAND> by giving the
38 command and its arguments on the shell command line, or a I<COMMAND_STRING>
39 which is a single shell argument consisting of multiple I<COMMAND> actions
40 and their arguments joined with whitespace, and separated by semicolons
41 between commands.  Within I<COMMAND_STRING>, virsh understands the
42 same single, double, and backslash escapes as the shell, although you must
43 add another layer of shell escaping in creating the single shell argument.
44 If no command is given in the command line, B<virsh> will then start a minimal
45 interpreter waiting for your commands, and the B<quit> command will then exit
46 the program.
48 The B<virsh> program understands the following I<OPTIONS>.
50 =over 4
52 =item B<-h>, B<--help>
54 Ignore all other arguments, and behave as if the B<help> command were
55 given instead.
57 =item B<-v>, B<--version[=short]>
59 Ignore all other arguments, and prints the version of the libvirt library
60 virsh is coming from
62 =item B<-V>, B<--version=long>
64 Ignore all other arguments, and prints the version of the libvirt library
65 virsh is coming from and which options and driver are compiled in.
67 =item B<-c>, B<--connect> I<URI>
69 Connect to the specified I<URI>, as if by the B<connect> command,
70 instead of the default connection.
72 =item B<-d>, B<--debug> I<LEVEL>
74 Enable debug messages at integer I<LEVEL> and above.  I<LEVEL> can
75 range from 0 (default) to 4.
77 =item B<-l>, B<--log> I<FILE>
79 Output logging details to I<FILE>.
81 =item B<-q>, B<--quiet>
83 Avoid extra informational messages.
85 =item B<-r>, B<--readonly>
87 Make the initial connection read-only, as if by the I<--readonly>
88 option of the B<connect> command.
90 =item B<-t>, B<--timing>
92 Output elapsed time information for each command.
94 =back
96 =head1 NOTES
98 Most B<virsh> operations rely upon the libvirt library being able to
99 connect to an already running libvirtd service.  This can usually be
100 done using the command B<service libvirtd start>.
102 Most B<virsh> commands require root privileges to run due to the
103 communications channels used to talk to the hypervisor.  Running as
104 non root will return an error.
106 Most B<virsh> commands act synchronously, except maybe shutdown,
107 setvcpus and setmem. In those cases the fact that the B<virsh>
108 program returned, may not mean the action is complete and you
109 must poll periodically to detect that the guest completed the
110 operation.
112 =head1 GENERIC COMMANDS
114 The following commands are generic i.e. not specific to a domain.
116 =over 4
118 =item B<help> [I<command-or-group>]
120 This lists each of the virsh commands.  When used without options, all
121 commands are listed, one per line, grouped into related categories,
122 displaying the keyword for each group.
124 To display only commands for a specific group, give the keyword for that
125 group as an option.  For example:
127  virsh # help host
129   Host and Hypervisor (help keyword 'host'):
130      capabilities                   capabilities
131      connect                        (re)connect to hypervisor
132      freecell                       NUMA free memory
133      hostname                       print the hypervisor hostname
134      qemu-attach                    Attach to existing QEMU process
135      qemu-monitor-command           QEMU Monitor Command
136      sysinfo                        print the hypervisor sysinfo
137      uri                            print the hypervisor canonical URI
139 To display detailed information for a specific command, give its name as the
140 option instead.  For example:
142  virsh # help list
143    NAME
144      list - list domains
146    SYNOPSIS
147      list [--inactive] [--all]
149    DESCRIPTION
150      Returns list of domains.
152    OPTIONS
153      --inactive       list inactive domains
154      --all            list inactive & active domains
156 =item B<quit>, B<exit>
158 quit this interactive terminal
160 =item B<version>
162 Will print out the major version info about what this built from.
164 =over 4
166 B<Example>
168 B<virsh> version
170 Compiled against library: libvir 0.0.6
172 Using library: libvir 0.0.6
174 Using API: Xen 3.0.0
176 Running hypervisor: Xen 3.0.0
178 =back
180 =item B<cd> [I<directory>]
182 Will change current directory to I<directory>.  The default directory
183 for the B<cd> command is the home directory or, if there is no I<HOME>
184 variable in the environment, the root directory.
186 This command is only available in interactive mode.
188 =item B<pwd>
190 Will print the current directory.
192 =item B<connect> I<URI> [I<--readonly>]
194 (Re)-Connect to the hypervisor. When the shell is first started, this
195 is automatically run with the I<URI> parameter requested by the C<-c>
196 option on the command line. The I<URI> parameter specifies how to
197 connect to the hypervisor. The documentation page at
198 L<http://libvirt.org/uri.html> list the values supported, but the most
199 common are:
201 =over 4
203 =item xen:///
205 this is used to connect to the local Xen hypervisor, this is the default
207 =item qemu:///system
209 connect locally as root to the daemon supervising QEmu and KVM domains
211 =item qemu:///session
213 connect locally as a normal user to his own set of QEmu and KVM domains
215 =item lxc:///
217 connect to a local linux container
219 =back
221 For remote access see the documentation page on how to make URIs.
222 The I<--readonly> option allows for read-only connection
224 =item B<uri>
226 Prints the hypervisor canonical URI, can be useful in shell mode.
228 =item B<hostname>
230 Print the hypervisor hostname.
232 =item B<sysinfo>
234 Print the XML representation of the hypervisor sysinfo, if available.
236 =item B<nodeinfo>
238 Returns basic information about the node, like number and type of CPU,
239 and size of the physical memory. The output corresponds to virNodeInfo
240 structure. Specifically, the "CPU socket(s)" field means number of CPU
241 sockets per NUMA cell.
243 =item B<nodecpustats> [I<cpu>] [I<--percent>]
245 Returns cpu stats of the node.
246 If I<cpu> is specified, this will prints specified cpu statistics only.
247 If I<--percent> is specified, this will prints percentage of each kind of cpu
248 statistics during 1 second.
250 =item B<nodememstats> [I<cell>]
252 Returns memory stats of the node.
253 If I<cell> is specified, this will prints specified cell statistics only.
255 =item B<capabilities>
257 Print an XML document describing the capabilities of the hypervisor
258 we are currently connected to. This includes a section on the host
259 capabilities in terms of CPU and features, and a set of description
260 for each kind of guest which can be virtualized. For a more complete
261 description see:
262   L<http://libvirt.org/formatcaps.html>
263 The XML also show the NUMA topology information if available.
265 =item B<inject-nmi> I<domain-id>
267 Inject NMI to the guest.
269 =item B<list> [I<--inactive> | I<--all>] [I<--managed-save>]
271 Prints information about existing domains.  If no options are
272 specified it prints out information about running domains.
274 An example format for the list is as follows:
276 B<virsh> list
277  Id Name                 State
279 ----------------------------------
281   0 Domain-0             running
282   2 fedora               paused
285 Name is the name of the domain.  ID the domain numeric id.
286 State is the run state (see below).
288 B<STATES>
290 The State field lists 7 states for a domain, and which ones the
291 current domain is in.
293 =over 4
295 =item B<running>
297 The domain is currently running on a CPU
299 =item B<idle>
301 The domain is idle, and not running or runnable.  This can be caused
302 because the domain is waiting on IO (a traditional wait state) or has
303 gone to sleep because there was nothing else for it to do.
305 =item B<paused>
307 The domain has been paused, usually occurring through the administrator
308 running B<virsh suspend>.  When in a paused state the domain will still
309 consume allocated resources like memory, but will not be eligible for
310 scheduling by the hypervisor.
312 =item B<send-key> I<domain-id> optional I<--codeset> B<codeset> optional I<--holdtime> B<holdtime> B<keycode>...
314 Send keys to the guest
316 =item B<shutdown>
318 The domain is in the process of shutting down, i.e. the guest operating system
319 has been notified and should be in the process of stopping its operations
320 gracefully.
322 =item B<shut off>
324 The domain is not running.  Usually this indicates the domain has been
325 shut down completely, or has not been started.
327 =item B<crashed>
329 The domain has crashed, which is always a violent ending.  Usually
330 this state can only occur if the domain has been configured not to
331 restart on crash.
333 =item B<dying>
335 The domain is in process of dying, but hasn't completely shutdown or
336 crashed.
338 =back
340 If I<--managed-save> is specified, then domains that have managed save
341 state (only possible if they are in the B<shut off> state) will
342 instead show as B<saved> in the listing.
344 =item B<freecell> [B<cellno> | I<--all>]
346 Prints the available amount of memory on the machine or within a
347 NUMA cell if I<cellno> is provided.  If I<--all> is provided instead
348 of I<--cellno>, then show the information on all NUMA cells.
350 =item B<cpu-baseline> I<FILE>
352 Compute baseline CPU which will be supported by all host CPUs given in <file>.
353 The list of host CPUs is built by extracting all <cpu> elements from the
354 <file>. Thus, the <file> can contain either a set of <cpu> elements separated
355 by new lines or even a set of complete <capabilities> elements printed by
356 B<capabilities> command.
358 =item B<cpu-compare> I<FILE>
360 Compare CPU definition from XML <file> with host CPU. The XML <file> may
361 contain either host or guest CPU definition. The host CPU definition is the
362 <cpu> element and its contents as printed by B<capabilities> command. The
363 guest CPU definition is the <cpu> element and its contents from domain XML
364 definition. For more information on guest CPU definition see:
365 L<http://libvirt.org/formatdomain.html#elementsCPU>
367 =back
369 =head1 DOMAIN COMMANDS
371 The following commands manipulate domains directly, as stated
372 previously most commands take domain-id as the first parameter. The
373 I<domain-id> can be specified as a short integer, a name or a full UUID.
375 =over 4
377 =item B<autostart> [I<--disable>] I<domain-id>
379 Configure a domain to be automatically started at boot.
381 The option I<--disable> disables autostarting.
383 =item B<console> I<domain-id> [I<devname>]
385 Connect the virtual serial console for the guest. The optional
386 I<devname> parameter refers to the device alias of an alternate
387 console, serial or parallel device configured for the guest.
388 If omitted, the primary console will be opened.
390 =item B<create> I<FILE> [I<--console>] [I<--paused>] [I<--autodestroy>]
392 Create a domain from an XML <file>. An easy way to create the XML
393 <file> is to use the B<dumpxml> command to obtain the definition of a
394 pre-existing guest.  The domain will be paused if the I<--paused> option
395 is used and supported by the driver; otherwise it will be running.
396 If I<--console> is requested, attach to the console after creation.
397 If I<--autodestroy> is requested, then the guest will be automatically
398 destroyed when virsh closes its connection to libvirt, or otherwise
399 exits.
401 B<Example>
403  virsh dumpxml <domain-id> > domain.xml
404  vi domain.xml (or make changes with your other text editor)
405  virsh create < domain.xml
407 =item B<define> I<FILE>
409 Define a domain from an XML <file>. The domain definition is registered
410 but not started.
412 =item B<destroy> I<domain-id>
414 Immediately terminate the domain domain-id.  This doesn't give the domain
415 OS any chance to react, and it's the equivalent of ripping the power
416 cord out on a physical machine.  In most cases you will want to use
417 the B<shutdown> command instead.  However, this does not delete any
418 storage volumes used by the guest, and if the domain is persistent, it
419 can be restarted later.
421 =item B<domblkstat> I<domain> I<block-device>
423 Get device block stats for a running domain.
425 =item B<domifstat> I<domain> I<interface-device>
427 Get network interface stats for a running domain.
429 =item B<dommemstat> I<domain>
431 Get memory stats for a running domain.
433 =item B<domblkinfo> I<domain> I<block-device>
435 Get block device size info for a domain.
437 =item B<blockpull> I<domain> I<path> [I<bandwidth>]
439 Populate a disk from its backing image. Once all data from its backing
440 image has been pulled, the disk no longer depends on the backing image.
441 It pulls data for the entire disk in the background, the process of the
442 operation can be checked with B<blockjob>.
444 I<path> specifies fully-qualified path of the disk.
445 I<bandwidth> specifies copying bandwidth limit in Mbps.
447 =item B<blockjob> I<domain> I<path> [I<--abort>] [I<--info>] [I<bandwidth>]
449 Manage active block operations.
451 I<path> specifies fully-qualified path of the disk.
452 If I<--abort> is specified, the active job on the specified disk will
453 be aborted.
454 If I<--info> is specified, the active job information on the specified
455 disk will be printed.
456 I<bandwidth> can be used to set bandwidth limit for the active job.
458 =item B<dominfo> I<domain-id>
460 Returns basic information about the domain.
462 =item B<domuuid> I<domain-name-or-id>
464 Convert a domain name or id to domain UUID
466 =item B<domid> I<domain-name-or-uuid>
468 Convert a domain name (or UUID) to a domain id
470 =item B<domjobabort> I<domain-id-or-uuid>
472 Abort the currently running domain job.
474 =item B<domjobinfo> I<domain-id-or-uuid>
476 Returns information about jobs running on a domain.
478 =item B<domname> I<domain-id-or-uuid>
480 Convert a domain Id (or UUID) to domain name
482 =item B<domstate> I<domain-id> [I<--reason>]
484 Returns state about a domain.  I<--reason> tells virsh to also print
485 reason for the state.
487 =item B<domcontrol> I<domain-id>
489 Returns state of an interface to VMM used to control a domain.  For
490 states other than "ok" or "error" the command also prints number of
491 seconds elapsed since the control interface entered its current state.
493 =item B<domxml-from-native> I<format> I<config>
495 Convert the file I<config> in the native guest configuration format
496 named by I<format> to a domain XML format.
498 =item B<domxml-to-native> I<format> I<xml>
500 Convert the file I<xml> in domain XML format to the native guest
501 configuration format named by I<format>.
503 =item B<dump> I<domain-id> I<corefilepath> [I<--live>] [I<--crash>]
504 [I<--bypass-cache>]
506 Dumps the core of a domain to a file for analysis.
507 If I<--live> is specified, the domain continues to run until the core
508 dump is complete, rather than pausing up front.
509 If I<--crash> is specified, the domain is halted with a crashed status,
510 rather than merely left in a paused state.
511 If I<--bypass-cache> is specified, the save will avoid the file system
512 cache, although this may slow down the operation.
514 =item B<dumpxml> I<domain-id> [I<--inactive>] [I<--security-info>]
515 [I<--update-cpu>]
517 Output the domain information as an XML dump to stdout, this format can be used
518 by the B<create> command. Additional options affecting the XML dump may be
519 used. I<--inactive> tells virsh to dump domain configuration that will be used
520 on next start of the domain as opposed to the current domain configuration.
521 Using I<--security-info> security sensitive information will also be included
522 in the XML dump. I<--update-cpu> updates domain CPU requirements according to
523 host CPU.
525 =item B<echo> [I<--shell>] [I<--xml>] [I<arg>...]
527 Echo back each I<arg>, separated by space.  If I<--shell> is
528 specified, then the output will be single-quoted where needed, so that
529 it is suitable for reuse in a shell context.  If I<--xml> is
530 specified, then the output will be escaped for use in XML.
532 =item B<edit> I<domain-id>
534 Edit the XML configuration file for a domain.
536 This is equivalent to:
538  virsh dumpxml domain > domain.xml
539  vi domain.xml (or make changes with your other text editor)
540  virsh define domain.xml
542 except that it does some error checking.
544 The editor used can be supplied by the C<$VISUAL> or C<$EDITOR> environment
545 variables, and defaults to C<vi>.
547 =item B<managedsave> I<domain-id> [I<--bypass-cache>]
549 Save and destroy (stop) a running domain, so it can be restarted from the same
550 state at a later time.  When the virsh B<start> command is next run for
551 the domain, it will automatically be started from this saved state.
552 If I<--bypass-cache> is specified, the save will avoid the file system
553 cache, although this may slow down the operation.
555 The B<dominfo> command can be used to query whether a domain currently
556 has any managed save image.
558 =item B<managedsave-remove> I<domain-id>
560 Remove the B<managedsave> state file for a domain, if it exists.  This
561 ensures the domain will do a full boot the next time it is started.
563 =item B<maxvcpus> [I<type>]
565 Provide the maximum number of virtual CPUs supported for a guest VM on
566 this connection.  If provided, the I<type> parameter must be a valid
567 type attribute for the <domain> element of XML.
569 =item B<migrate> [I<--live>] [I<--direct>] [I<--p2p> [I<--tunnelled>]]
570 [I<--persistent>] [I<--undefinesource>] [I<--suspend>] [I<--copy-storage-all>]
571 [I<--copy-storage-inc>] [I<--change-protection>] [I<--verbose>]
572 I<domain-id> I<desturi> [I<migrateuri>] [I<dname>]
573 [I<--timeout> B<seconds>] [I<--xml> B<file>]
575 Migrate domain to another host.  Add I<--live> for live migration; I<--p2p>
576 for peer-2-peer migration; I<--direct> for direct migration; or I<--tunnelled>
577 for tunnelled migration.  I<--persistent> leaves the domain persistent on
578 destination host, I<--undefinesource> undefines the domain on the source host,
579 and I<--suspend> leaves the domain paused on the destination host.
580 I<--copy-storage-all> indicates migration with non-shared storage with full
581 disk copy, I<--copy-storage-inc> indicates migration with non-shared storage
582 with incremental copy (same base image shared between source and destination).
583 I<--change-protection> enforces that no incompatible configuration changes
584 will be made to the domain while the migration is underway; this flag is
585 implicitly enabled when supported by the hypervisor, but can be explicitly
586 used to reject the migration if the hypervisor lacks change protection
587 support.  I<--verbose> displays the progress of migration.
589 The I<desturi> is the connection URI of the destination host, and
590 I<migrateuri> is the migration URI, which usually can be omitted.
591 I<dname> is used for renaming the domain to new name during migration, which
592 also usually can be omitted.  Likewise, I<--xml> B<file> is usually
593 omitted, but can be used to supply an alternative XML file for use on
594 the destination to supply a larger set of changes to any host-specific
595 portions of the domain XML, such as accounting for naming differences
596 between source and destination in accessing underlying storage.
598 I<--timeout> B<seconds> forces guest to suspend when live migration exceeds
599 that many seconds, and
600 then the migration will complete offline. It can only be used with I<--live>.
602 B<Note>: The I<desturi> parameter for normal migration and peer2peer migration
603 has different semantics:
605 =over 4
607 =item * normal migration: the I<desturi> is an address of the target host as
608 seen from the client machine.
610 =item * peer2peer migration: the I<desturi> is an address of the target host as
611 seen from the source machine.
613 =back
615 =item B<migrate-setmaxdowntime> I<domain-id> I<downtime>
617 Set maximum tolerable downtime for a domain which is being live-migrated to
618 another host.  The I<downtime> is a number of milliseconds the guest is allowed
619 to be down at the end of live migration.
621 =item B<migrate-setspeed> I<domain-id> I<bandwidth>
623 Set the maximum migration bandwidth (in Mbps) for a domain which is being
624 migrated to another host.
626 =item B<reboot> I<domain-id>
628 Reboot a domain.  This acts just as if the domain had the B<reboot>
629 command run from the console.  The command returns as soon as it has
630 executed the reboot action, which may be significantly before the
631 domain actually reboots.
633 The exact behavior of a domain when it reboots is set by the
634 I<on_reboot> parameter in the domain's XML definition.
636 =item B<restore> I<state-file> [I<--bypass-cache>] [I<--xml> B<file>]
638 Restores a domain from a B<virsh save> state file. See I<save> for more info.
640 If I<--bypass-cache> is specified, the restore will avoid the file system
641 cache, although this may slow down the operation.
643 I<--xml> B<file> is usually omitted, but can be used to supply an
644 alternative XML file for use on the restored guest with changes only
645 in the host-specific portions of the domain XML.  For example, it can
646 be used to account for file naming differences in underlying storage
647 due to disk snapshots taken after the guest was saved.
649 B<Note>: To avoid corrupting file system contents within the domain, you
650 should not reuse the saved state file for a second B<restore> unless you
651 have also reverted all storage volumes back to the same contents as when
652 the state file was created.
654 =item B<save> I<domain-id> I<state-file> [I<--bypass-cache>] [I<--xml> B<file>]
656 Saves a running domain (RAM, but not disk state) to a state file so that
657 it can be restored
658 later.  Once saved, the domain will no longer be running on the
659 system, thus the memory allocated for the domain will be free for
660 other domains to use.  B<virsh restore> restores from this state file.
661 If I<--bypass-cache> is specified, the save will avoid the file system
662 cache, although this may slow down the operation.
664 This is roughly equivalent to doing a hibernate on a running computer,
665 with all the same limitations.  Open network connections may be
666 severed upon restore, as TCP timeouts may have expired.
668 I<--xml> B<file> is usually omitted, but can be used to supply an
669 alternative XML file for use on the restored guest with changes only
670 in the host-specific portions of the domain XML.  For example, it can
671 be used to account for file naming differences that are planned to
672 be made via disk snapshots of underlying storage after the guest is saved.
674 Domain saved state files assume that disk images will be unchanged
675 between the creation and restore point.  For a more complete system
676 restore point, where the disk state is saved alongside the memory
677 state, see the B<snapshot> family of commands.
679 =item B<save-image-define> I<file> I<xml>
681 Update the domain XML that will be used when I<file> is later
682 used in the B<restore> command.  The I<xml> argument must be a file
683 name containing the alternative XML, with changes only in the
684 host-specific portions of the domain XML.  For example, it can
685 be used to account for file naming differences resulting from creating
686 disk snapshots of underlying storage after the guest was saved.
688 =item B<save-image-dumpxml> I<file> [I<--security-info>]
690 Extract the domain XML that was in effect at the time the saved state
691 file I<file> was created with the B<save> command.  Using
692 I<--security-info> will also include security sensitive information.
694 =item B<save-image-edit> I<file>
696 Edit the XML configuration associated with a saved state file I<file>
697 created by the B<save> command.
699 This is equivalent to:
701  virsh save-image-dumpxml state-file > state-file.xml
702  vi state-file.xml (or make changes with your other text editor)
703  virsh save-image-define state-file state-file-xml
705 except that it does some error checking.
707 The editor used can be supplied by the C<$VISUAL> or C<$EDITOR> environment
708 variables, and defaults to C<vi>.
710 =item B<schedinfo> [I<--set> B<parameter=value>] I<domain-id> [[I<--config>]
711 [I<--live>] | [I<--current>]]
713 =item B<schedinfo> [I<--weight> B<number>] [I<--cap> B<number>]
714 I<domain-id>
716 Allows you to show (and set) the domain scheduler parameters. The parameters
717 available for each hypervisor are:
719 LXC (posix scheduler) : cpu_shares
721 QEMU/KVM (posix scheduler): cpu_shares, vcpu_period, vcpu_quota
723 Xen (credit scheduler): weight, cap
725 ESX (allocation scheduler): reservation, limit, shares
727 If I<--live> is specified, set scheduler information of a running guest.
728 If I<--config> is specified, affect the next boot of a persistent guest.
729 If I<--current> is specified, affect the current guest state.
731 B<Note>: The cpu_shares parameter has a valid value range of 0-262144; Negative
732 values are wrapped to positive, and larger values are capped at the maximum.
733 Therefore, -1 is a useful shorthand for 262144.
735 B<Note>: The weight and cap parameters are defined only for the
736 XEN_CREDIT scheduler and are now I<DEPRECATED>.
738 B<Note>: The vcpu_period parameter has a valid value range of 1000-1000000 or
739 0, and the vcpu_quota parameter has a valid value range of 1000-1844674407370955
740 or less than 0.
742 =item B<screenshot> I<domain-id> [I<imagefilepath>] [I<--screen> B<screenID>]
744 Takes a screenshot of a current domain console and stores it into a file.
745 Optionally, if hypervisor supports more displays for a domain, I<screenID>
746 allows to specify which screen will be captured. It is the sequential number
747 of screen. In case of multiple graphics cards, heads are enumerated before
748 devices, e.g. having two graphics cards, both with four heads, screen ID 5
749 addresses the second head on the second card.
751 =item B<setmem> I<domain-id> B<kilobytes> [[I<--config>] [I<--live>] |
752 [I<--current>]]
754 Change the memory allocation for a guest domain.
755 If I<--live> is specified, perform a memory balloon of a running guest.
756 If I<--config> is specified, affect the next boot of a persistent guest.
757 If I<--current> is specified, affect the current guest state.
758 Both I<--live> and I<--config> flags may be given, but I<--current> is
759 exclusive. If no flag is specified, behavior is different depending
760 on hypervisor.
762 Some hypervisors require a larger granularity than kilobytes, and requests
763 that are not an even multiple will be rounded up.  For example, vSphere/ESX
764 rounds the parameter up unless the kB argument is evenly divisible by 1024
765 (that is, the kB argument happens to represent megabytes).
767 For Xen, you can only adjust the memory of a running domain if the domain is
768 paravirtualized or running the PV balloon driver.
770 =item B<setmaxmem> I<domain-id> B<kilobytes> [[I<--config>] [I<--live>] |
771 [I<--current>]]
773 Change the maximum memory allocation limit for a guest domain.
774 If I<--live> is specified, affect a running guest.
775 If I<--config> is specified, affect the next boot of a persistent guest.
776 If I<--current> is specified, affect the current guest state.
777 Both I<--live> and I<--current> flags may be given, but I<--current> is
778 exclusive. If no flag is specified, behavior is different depending
779 on hypervisor.
781 This command works for at least the Xen, QEMU/KVM and vSphere/ESX hypervisors.
783 Some hypervisors require a larger granularity than kilobytes, rounding up
784 requests that are not an even multiple of the desired amount.  vSphere/ESX
785 is one of these, requiring the parameter to be evenly divisible by 4MB.  For
786 vSphere/ESX, 263168 (257MB) would be rounded up because it's not a multiple
787 of 4MB, while 266240 (260MB) is valid without rounding.
790 =item B<memtune> I<domain-id> [I<--hard-limit> B<kilobytes>]
791 [I<--soft-limit> B<kilobytes>] [I<--swap-hard-limit> B<kilobytes>]
792 [I<--min-guarantee> B<kilobytes>] [[I<--config>] [I<--live>] | [I<--current>]]
794 Allows you to display or set the domain memory parameters. Without
795 flags, the current settings are displayed; with a flag, the
796 appropriate limit is adjusted if supported by the hypervisor.  LXC and
797 QEMU/KVM support I<--hard-limit>, I<--soft-limit>, and I<--swap-hard-limit>.
799 If I<--live> is specified, affect a running guest.
800 If I<--config> is specified, affect the next boot of a persistent guest.
801 If I<--current> is specified, affect the current guest state.
802 Both I<--live> and I<--current> flags may be given, but I<--current> is
803 exclusive. If no flag is specified, behavior is different depending
804 on hypervisor.
806 For QEMU/KVM, the parameters are applied to the QEMU process as a whole.
807 Thus, when counting them, one needs to add up guest RAM, guest video RAM, and
808 some memory overhead of QEMU itself.  The last piece is hard to determine so
809 one needs guess and try.
811 =over 4
813 =item I<--hard-limit>
815 The maximum memory the guest can use.  The units for this value are kilobytes
816 (i.e. blocks of 1024 bytes).
818 =item I<--soft-limit>
820 The memory limit to enforce during memory contention.  The units for this
821 value are kilobytes (i.e. blocks of 1024 bytes).
823 =item I<--swap-hard-limit>
825 The maximum memory plus swap the guest can use.  The units for this value are
826 kilobytes (i.e. blocks of 1024 bytes).  This has to be more than hard-limit
827 value provided.
829 =item I<--min-guarantee>
831 The guaranteed minimum memory allocation for the guest.  The units for this
832 value are kilobytes (i.e. blocks of 1024 bytes).
834 =back
836 =item B<blkiotune> I<domain-id> [I<--weight> B<weight>] [[I<--config>]
837 [I<--live>] | [I<--current>]]
839 Display or set the blkio parameters. QEMU/KVM supports I<--weight>.
840 I<--weight> is in range [100, 1000].
842 If I<--live> is specified, affect a running guest.
843 If I<--config> is specified, affect the next boot of a persistent guest.
844 If I<--current> is specified, affect the current guest state.
845 Both I<--live> and I<--current> flags may be given, but I<--current> is
846 exclusive. If no flag is specified, behavior is different depending
847 on hypervisor.
849 =item B<setvcpus> I<domain-id> I<count> [I<--maximum>] [[I<--config>]
850 [I<--live>] | [I<--current>]]
852 Change the number of virtual CPUs active in a guest domain.  By default,
853 this command works on active guest domains.  To change the settings for an
854 inactive guest domain, use the I<--config> flag.
856 The I<count> value may be limited by host, hypervisor, or a limit coming
857 from the original description of the guest domain. For Xen, you can only
858 adjust the virtual CPUs of a running domain if the domain is paravirtualized.
860 If the I<--config> flag is specified, the change is made to the stored XML
861 configuration for the guest domain, and will only take effect when the guest
862 domain is next started.
864 If I<--live> is specified, the guest domain must be active, and the change
865 takes place immediately.  Both the I<--config> and I<--live> flags may be
866 specified together if supported by the hypervisor.
868 If I<--current> is specified, affect the current guest state.
870 When no flags are given, the I<--live>
871 flag is assumed and the guest domain must be active.  In this situation it
872 is up to the hypervisor whether the I<--config> flag is also assumed, and
873 therefore whether the XML configuration is adjusted to make the change
874 persistent.
876 The I<--maximum> flag controls the maximum number of virtual cpus that can
877 be hot-plugged the next time the domain is booted.  As such, it must only be
878 used with the I<--config> flag, and not with the I<--live> flag.
880 =item B<shutdown> I<domain-id>
882 Gracefully shuts down a domain.  This coordinates with the domain OS
883 to perform graceful shutdown, so there is no guarantee that it will
884 succeed, and may take a variable length of time depending on what
885 services must be shutdown in the domain.
887 The exact behavior of a domain when it shuts down is set by the
888 I<on_shutdown> parameter in the domain's XML definition.
890 =item B<start> I<domain-name> [I<--console>] [I<--paused>] [I<--autodestroy>]
891 [I<--bypass-cache>]
893 Start a (previously defined) inactive domain, either from the last
894 B<managedsave> state, or via a fresh boot if no managedsave state is
895 present.  The domain will be paused if the I<--paused> option is
896 used and supported by the driver; otherwise it will be running.
897 If I<--console> is requested, attach to the console after creation.
898 If I<--autodestroy> is requested, then the guest will be automatically
899 destroyed when virsh closes its connection to libvirt, or otherwise
900 exits.  If I<--bypass-cache> is specified, and managedsave state exists,
901 the restore will avoid the file system cache, although this may slow
902 down the operation.
904 =item B<suspend> I<domain-id>
906 Suspend a running domain. It is kept in memory but won't be scheduled
907 anymore.
909 =item B<resume> I<domain-id>
911 Moves a domain out of the suspended state.  This will allow a previously
912 suspended domain to now be eligible for scheduling by the underlying
913 hypervisor.
915 =item B<ttyconsole> I<domain-id>
917 Output the device used for the TTY console of the domain. If the information
918 is not available the processes will provide an exit code of 1.
920 =item B<undefine> I<domain-id> [I<--managed-save>]
922 Undefine a domain. If the domain is running, this converts it to a
923 transient domain, without stopping it. If the domain is inactive,
924 the domain configuration is removed.
926 The I<--managed-save> flag guarantees that any managed save image(see
927 the B<managedsave> command) is also cleaned up.  Without the flag, attempts
928 to undefine a domain with a managed save image will fail.
930 NOTE: For an inactive domain, the domain name or UUID must be used as the
931 I<domain-id>.
933 =item B<vcpucount> I<domain-id>  [{I<--maximum> | I<--active>}
934 {I<--config> | I<--live> | I<--current>}]
936 Print information about the virtual cpu counts of the given
937 I<domain-id>.  If no flags are specified, all possible counts are
938 listed in a table; otherwise, the output is limited to just the
939 numeric value requested.  For historical reasons, the table
940 lists the label "current" on the rows that can be queried in isolation
941 via the I<--active> flag, rather than relating to the I<--current> flag.
943 I<--maximum> requests information on the maximum cap of vcpus that a
944 domain can add via B<setvcpus>, while I<--active> shows the current
945 usage; these two flags cannot both be specified.  I<--config>
946 requires a persistent domain and requests information regarding the next
947 time the domain will be booted, I<--live> requires a running domain and
948 lists current values, and I<--current> queries according to the current
949 state of the domain (corresponding to I<--live> if running, or
950 I<--config> if inactive); these three flags are mutually exclusive.
951 Thus, this command always takes exactly zero or two flags.
953 =item B<vcpuinfo> I<domain-id>
955 Returns basic information about the domain virtual CPUs, like the number of
956 vCPUs, the running time, the affinity to physical processors.
958 =item B<vcpupin> I<domain-id> [I<vcpu>] [I<cpulist>] [[I<--live>]
959 [I<--config>] | [I<--current>]]
961 Query or change the pinning of domain VCPUs to host physical CPUs.  To
962 pin a single I<vcpu>, specify I<cpulist>; otherwise, you can query one
963 I<vcpu> or omit I<vcpu> to list all at once.
965 I<cpulist> is a list of physical CPU numbers. Its syntax is a comma
966 separated list and a special markup using '-' and '^' (ex. '0-4', '0-3,^2') can
967 also be allowed. The '-' denotes the range and the '^' denotes exclusive.
968 If you want to reset vcpupin setting, that is, to pin vcpu all physical cpus,
969 simply specify 'r' as a cpulist.
970 If I<--live> is specified, affect a running guest.
971 If I<--config> is specified, affect the next boot of a persistent guest.
972 If I<--current> is specified, affect the current guest state.
973 Both I<--live> and I<--config> flags may be given if I<cpulist> is present,
974 but I<--current> is exclusive.
975 If no flag is specified, behavior is different depending on hypervisor.
977 B<Note>: The expression is sequentially evaluated, so "0-15,^8" is
978 identical to "9-14,0-7,15" but not identical to "^8,0-15".
980 =item B<vncdisplay> I<domain-id>
982 Output the IP address and port number for the VNC display. If the information
983 is not available the processes will provide an exit code of 1.
985 =back
987 =head1 DEVICE COMMANDS
989 The following commands manipulate devices associated to domains.
990 The domain-id can be specified as a short integer, a name or a full UUID.
991 To better understand the values allowed as options for the command
992 reading the documentation at L<http://libvirt.org/formatdomain.html> on the
993 format of the device sections to get the most accurate set of accepted values.
995 =over 4
997 =item B<attach-device> I<domain-id> I<FILE>
999 Attach a device to the domain, using a device definition in an XML file.
1000 See the documentation to learn about libvirt XML format for a device.
1001 For cdrom and floppy devices, this command only replaces the media within
1002 the single existing device; consider using B<update-device> for this usage.
1004 =item B<attach-disk> I<domain-id> I<source> I<target>
1005 [I<--driver driver>] [I<--subdriver subdriver>] [I<--cache cache>]
1006 [I<--type type>] [I<--mode mode>] [I<--persistent>] [I<--sourcetype soucetype>]
1007 [I<--serial serial>] [I<--shareable>] [I<--address address>]
1009 Attach a new disk device to the domain.
1010 I<source> and I<target> are paths for the files and devices.
1011 I<driver> can be I<file>, I<tap> or I<phy> depending on the kind of access.
1012 I<type> can indicate I<cdrom> or I<floppy> as alternative to the disk default,
1013 although this use only replaces the media within the existing virtual cdrom or
1014 floppy device; consider using B<update-device> for this usage instead.
1015 I<mode> can specify the two specific mode I<readonly> or I<shareable>.
1016 I<persistent> indicates the changes will affect the next boot of the domain.
1017 I<sourcetype> can indicate the type of source (block|file)
1018 I<cache> can be one of "default", "none", "writethrough" or "writeback".
1019 I<serial> is the serial of disk device. I<shareable> indicates the disk device
1020 is shareable between domains.
1021 I<address> is the address of disk device in the form of pci:domain.bus.slot.function,
1022 scsi:controller.bus.unit or ide:controller.bus.unit.
1024 =item B<attach-interface> I<domain-id> I<type> I<source>
1025 [I<--target target>] [I<--mac mac>] [I<--script script>] [I<--model model>]
1026 [I<--persistent>]
1028 Attach a new network interface to the domain.
1029 I<type> can be either I<network> to indicate a physical network device or I<bridge> to indicate a bridge to a device.
1030 I<source> indicates the source device.
1031 I<target> allows to indicate the target device in the guest.
1032 I<mac> allows to specify the MAC address of the network interface.
1033 I<script> allows to specify a path to a script handling a bridge instead of
1034 the default one.
1035 I<model> allows to specify the model type.
1036 I<persistent> indicates the changes will affect the next boot of the domain.
1038 =item B<detach-device> I<domain-id> I<FILE>
1040 Detach a device from the domain, takes the same kind of XML descriptions
1041 as command B<attach-device>.
1043 =item B<detach-disk> I<domain-id> I<target>
1045 Detach a disk device from a domain. The I<target> is the device as seen
1046 from the domain.
1048 =item B<detach-interface> I<domain-id> I<type> [I<--mac mac>]
1050 Detach a network interface from a domain.
1051 I<type> can be either I<network> to indicate a physical network device or I<bridge> to indicate a bridge to a device.
1052 It is recommended to use the I<mac> option to distinguish between the interfaces
1053 if more than one are present on the domain.
1055 =item B<update-device> I<domain-id> I<file> [I<--persistent>] [I<--force>]
1057 Update the characteristics of a device associated with I<domain-id>, based on
1058 the device definition in an XML I<file>.  If the I<--persistent> option is
1059 used, the changes will affect the next boot of the domain. The I<--force>
1060 option can be used to force device update, e.g., to eject a CD-ROM even if it
1061 is locked/mounted in the domain. See the documentation to learn about libvirt
1062 XML format for a device.
1064 =back
1066 =head1 VIRTUAL NETWORK COMMANDS
1068 The following commands manipulate networks. Libvirt has the capability to
1069 define virtual networks which can then be used by domains and linked to
1070 actual network devices. For more detailed information about this feature
1071 see the documentation at L<http://libvirt.org/formatnetwork.html> . Many
1072 of the commands for virtual networks are similar to the ones used for domains,
1073 but the way to name a virtual network is either by its name or UUID.
1075 =over 4
1077 =item B<net-autostart> I<network> [I<--disable>]
1079 Configure a virtual network to be automatically started at boot.
1080 The I<--disable> option disable autostarting.
1082 =item B<net-create> I<file>
1084 Create a virtual network from an XML I<file>, see the documentation to get
1085 a description of the XML network format used by libvirt.
1087 =item B<net-define> I<file>
1089 Define a virtual network from an XML I<file>, the network is just defined but
1090 not instantiated.
1092 =item B<net-destroy> I<network>
1094 Destroy (stop) a given virtual network specified by its name or UUID. This
1095 takes effect immediately.
1097 =item B<net-dumpxml> I<network>
1099 Output the virtual network information as an XML dump to stdout.
1101 =item B<net-edit> I<network>
1103 Edit the XML configuration file for a network.
1105 This is equivalent to:
1107  virsh net-dumpxml network > network.xml
1108  vi network.xml (or make changes with your other text editor)
1109  virsh net-define network.xml
1111 except that it does some error checking.
1113 The editor used can be supplied by the C<$VISUAL> or C<$EDITOR> environment
1114 variables, and defaults to C<vi>.
1116 =item B<net-info> I<network>
1118 Returns basic information about the I<network> object.
1120 =item B<net-list> [I<--inactive> | I<--all>]
1122 Returns the list of active networks, if I<--all> is specified this will also
1123 include defined but inactive networks, if I<--inactive> is specified only the
1124 inactive ones will be listed.
1126 =item B<net-name> I<network-UUID>
1128 Convert a network UUID to network name.
1130 =item B<net-start> I<network>
1132 Start a (previously defined) inactive network.
1134 =item B<net-undefine> I<network>
1136 Undefine the configuration for an inactive network.
1138 =item B<net-uuid> I<network-name>
1140 Convert a network name to network UUID.
1142 =back
1144 =head1 INTERFACE COMMANDS
1146 The following commands manipulate host interfaces.  Often, these host
1147 interfaces can then be used by name within domain <interface> elements
1148 (such as a system-created bridge interface), but there is no
1149 requirement that host interfaces be tied to any particular guest
1150 configuration XML at all.
1152 Many of the commands for host interfaces are similar to the ones used
1153 for domains, and the way to name an interface is either by its name or
1154 its MAC address.  However, using a MAC address for an I<iface>
1155 argument only works when that address is unique (if an interface and a
1156 bridge share the same MAC address, which is often the case, then using
1157 that MAC address results in an error due to ambiguity, and you must
1158 resort to a name instead).
1160 =over 4
1162 =item B<iface-define> I<file>
1164 Define a host interface from an XML I<file>, the interface is just defined but
1165 not started.
1167 =item B<iface-destroy> I<interface>
1169 Destroy (stop) a given host interface, such as by running "if-down" to
1170 disable that interface from active use. This takes effect immediately.
1172 =item B<iface-dumpxml> I<interface> [I<--inactive>]
1174 Output the host interface information as an XML dump to stdout.  If
1175 I<--inactive> is specified, then the output reflects the persistent
1176 state of the interface that will be used the next time it is started.
1178 =item B<iface-edit> I<interface>
1180 Edit the XML configuration file for a host interface.
1182 This is equivalent to:
1184  virsh iface-dumpxml iface > iface.xml
1185  vi iface.xml (or make changes with your other text editor)
1186  virsh iface-define iface.xml
1188 except that it does some error checking.
1190 The editor used can be supplied by the C<$VISUAL> or C<$EDITOR> environment
1191 variables, and defaults to C<vi>.
1193 =item B<iface-list> [I<--inactive> | I<--all>]
1195 Returns the list of active host interfaces.  If I<--all> is specified
1196 this will also include defined but inactive interfaces.  If
1197 I<--inactive> is specified only the inactive ones will be listed.
1199 =item B<iface-name> I<interface>
1201 Convert a host interface MAC to interface name, if the MAC address is unique
1202 among the host's interfaces.
1204 I<interface> specifies the interface MAC address.
1206 =item B<iface-mac> I<interface>
1208 Convert a host interface name to MAC address.
1210 I<interface> specifies the interface name.
1212 =item B<iface-start> I<interface>
1214 Start a (previously defined) host interface, such as by running "if-up".
1216 =item B<iface-undefine> I<interface>
1218 Undefine the configuration for an inactive host interface.
1220 =item B<iface-begin>
1222 Create a snapshot of current host interface settings, which can later
1223 be committed (I<iface-commit>) or restored (I<iface-rollback>).  If a
1224 snapshot already exists, then this command will fail until the
1225 previous snapshot has been committed or restored.  Undefined behavior
1226 results if any external changes are made to host interfaces outside of
1227 the libvirt API between the beginning of a snapshot and its eventual
1228 commit or rollback.
1230 =item B<iface-commit>
1232 Declare all changes since the last I<iface-begin> as working, and
1233 delete the rollback point.  If no interface snapshot has already been
1234 started, then this command will fail.
1236 =item B<iface-rollback>
1238 Revert all host interface settings back to the state recorded in the
1239 last I<iface-begin>.  If no interface snapshot has already been
1240 started, then this command will fail.  Rebooting the host also serves
1241 as an implicit rollback point.
1243 =back
1245 =head1 STORAGE POOL COMMANDS
1247 The following commands manipulate storage pools. Libvirt has the
1248 capability to manage various storage solutions, including files, raw
1249 partitions, and domain-specific formats, used to provide the storage
1250 volumes visible as devices within virtual machines. For more detailed
1251 information about this feature, see the documentation at
1252 L<http://libvirt.org/formatstorage.html> . Many of the commands for
1253 pools are similar to the ones used for domains.
1255 =over 4
1257 =item B<find-storage-pool-sources> I<type> [I<srcSpec>]
1259 Returns XML describing all storage pools of a given I<type> that could
1260 be found.  If I<srcSpec> is provided, it is a file that contains XML
1261 to further restrict the query for pools.
1263 =item B<find-storage-pool-sources-as> I<type> [I<host>] [I<port>]
1264 [I<initiator>]
1266 Returns XML describing all storage pools of a given I<type> that could
1267 be found.  If I<host>, I<port>, or I<initiator> are provided, they control
1268 where the query is performed.
1270 =item B<pool-autostart> I<pool-or-uuid> [I<--disable>]
1272 Configure whether I<pool> should automatically start at boot.
1274 =item B<pool-build> I<pool-or-uuid>
1276 Build a given pool.
1278 =item B<pool-create> I<file>
1280 Create and start a pool object from the XML I<file>.
1282 =item B<pool-create-as> I<name> I<--print-xml> I<type> [I<source-host>]
1283 [I<source-path>] [I<source-dev>] [I<source-name>] [<target>]
1284 [I<--source-format format>]
1286 Create and start a pool object I<name> from the raw parameters.  If
1287 I<--print-xml> is specified, then print the XML of the pool object
1288 without creating the pool.  Otherwise, the pool has the specified
1289 I<type>.
1291 =item B<pool-define> I<file>
1293 Create, but do not start, a pool object from the XML I<file>.
1295 =item B<pool-define-as> I<name> I<--print-xml> I<type> [I<source-host>]
1296 [I<source-path>] [I<source-dev>] [I<source-name>] [<target>]
1297 [I<--source-format format>]
1299 Create, but do not start, a pool object I<name> from the raw parameters.  If
1300 I<--print-xml> is specified, then print the XML of the pool object
1301 without defining the pool.  Otherwise, the pool has the specified
1302 I<type>.
1304 =item B<pool-destroy> I<pool-or-uuid>
1306 Destroy (stop) a given I<pool> object. Libvirt will no longer manage the
1307 storage described by the pool object, but the raw data contained in
1308 the pool is not changed, and can be later recovered with
1309 B<pool-create>.
1311 =item B<pool-delete> I<pool-or-uuid>
1313 Destroy the resources used by a given I<pool> object. This operation
1314 is non-recoverable.  The I<pool> object will still exist after this
1315 command, ready for the creation of new storage volumes.
1317 =item B<pool-dumpxml> I<pool-or-uuid>
1319 Returns the XML information about the I<pool> object.
1321 =item B<pool-edit> I<pool-or-uuid>
1323 Edit the XML configuration file for a storage pool.
1325 This is equivalent to:
1327  virsh pool-dumpxml pool > pool.xml
1328  vi pool.xml (or make changes with your other text editor)
1329  virsh pool-define pool.xml
1331 except that it does some error checking.
1333 The editor used can be supplied by the C<$VISUAL> or C<$EDITOR> environment
1334 variables, and defaults to C<vi>.
1336 =item B<pool-info> I<pool-or-uuid>
1338 Returns basic information about the I<pool> object.
1340 =item B<pool-list> [I<--inactive> | I<--all>] [I<--details>]
1342 List pool objects known to libvirt.  By default, only pools in use by
1343 active domains are listed; I<--inactive> lists just the inactive
1344 pools, and I<--all> lists all pools. The I<--details> option instructs
1345 virsh to additionally display pool persistence and capacity related
1346 information where available.
1348 =item B<pool-name> I<uuid>
1350 Convert the I<uuid> to a pool name.
1352 =item B<pool-refresh> I<pool-or-uuid>
1354 Refresh the list of volumes contained in I<pool>.
1356 =item B<pool-start> I<pool-or-uuid>
1358 Start the storage I<pool>, which is previously defined but inactive.
1360 =item B<pool-undefine> I<pool-or-uuid>
1362 Undefine the configuration for an inactive I<pool>.
1364 =item B<pool-uuid> I<pool>
1366 Returns the UUID of the named I<pool>.
1368 =back
1370 =head1 VOLUME COMMANDS
1372 =over 4
1374 =item B<vol-create> I<pool-or-uuid> I<FILE>
1376 Create a volume from an XML <file>.
1377 I<pool-or-uuid> is the name or UUID of the storage pool to create the volume in.
1378 I<FILE> is the XML <file> with the volume definition. An easy way to create the
1379 XML <file> is to use the B<vol-dumpxml> command to obtain the definition of a
1380 pre-existing volume.
1382 B<Example>
1384  virsh vol-dumpxml --pool storagepool1 appvolume1 > newvolume.xml
1385  vi newvolume.xml (or make changes with your other text editor)
1386  virsh vol-create differentstoragepool newvolume.xml
1388 =item B<vol-create-from> I<pool-or-uuid> I<FILE> [I<--inputpool>
1389 I<pool-or-uuid>] I<vol-name-or-key-or-path>
1391 Create a volume, using another volume as input.
1392 I<pool-or-uuid> is the name or UUID of the storage pool to create the volume in.
1393 I<FILE> is the XML <file> with the volume definition.
1394 I<--inputpool> I<pool-or-uuid> is the name or uuid of the storage pool the
1395 source volume is in.
1396 I<vol-name-or-key-or-path> is the name or key or path of the source volume.
1398 =item B<vol-create-as> I<pool-or-uuid> I<name> I<capacity>
1399 [I<--allocation> I<size>] [I<--format> I<string>] [I<--backing-vol>
1400 I<vol-name-or-key-or-path>] [I<--backing-vol-format> I<string>]
1402 Create a volume from a set of arguments.
1403 I<pool-or-uuid> is the name or UUID of the storage pool to create the volume
1405 I<name> is the name of the new volume.
1406 I<capacity> is the size of the volume to be created, with optional k, M, G, or
1407 T suffix.
1408 I<--allocation> I<size> is the initial size to be allocated in the volume, with
1409 optional k, M, G, or T suffix.
1410 I<--format> I<string> is used in file based storage pools to specify the volume
1411 file format to use; raw, bochs, qcow, qcow2, vmdk.
1412 I<--backing-vol> I<vol-name-or-key-or-path> is the source backing
1413 volume to be used if taking a snapshot of an existing volume.
1414 I<--backing-vol-format> I<string> is the format of the snapshot backing volume;
1415 raw, bochs, qcow, qcow2, vmdk, host_device.
1417 =item B<vol-clone> [I<--pool> I<pool-or-uuid>] I<vol-name-or-key-or-path>
1418 I<name>
1420 Clone an existing volume.  Less powerful, but easier to type, version of
1421 B<vol-create-from>.
1422 I<--pool> I<pool-or-uuid> is the name or UUID of the storage pool to create
1423 the volume in.
1424 I<vol-name-or-key-or-path> is the name or key or path of the source volume.
1425 I<name> is the name of the new volume.
1427 =item B<vol-delete> [I<--pool> I<pool-or-uuid>] I<vol-name-or-key-or-path>
1429 Delete a given volume.
1430 I<--pool> I<pool-or-uuid> is the name or UUID of the storage pool the volume
1431 is in.
1432 I<vol-name-or-key-or-path> is the name or key or path of the volume to delete.
1434 =item B<vol-upload> [I<--pool> I<pool-or-uuid>] [I<--offset> I<bytes>]
1435 [I<--length> I<bytes>] I<vol-name-or-key-or-path> I<local-file>
1437 Upload the contents of I<local-file> to a storage volume.
1438 I<--pool> I<pool-or-uuid> is the name or UUID of the storage pool the volume
1439 is in.
1440 I<vol-name-or-key-or-path> is the name or key or path of the volume to wipe.
1441 I<--offset> is the position in the storage volume at which to start writing
1442 the data. I<--length> is an upper bound of the amount of data to be uploaded.
1443 An error will occurr if the I<local-file> is greater than the specified length.
1445 =item B<vol-download> [I<--pool> I<pool-or-uuid>] [I<--offset> I<bytes>]
1446 [I<--length> I<bytes>] I<vol-name-or-key-or-path> I<local-file>
1448 Download the contents of I<local-file> from a storage volume.
1449 I<--pool> I<pool-or-uuid> is the name or UUID of the storage pool the volume
1450 is in.
1451 I<vol-name-or-key-or-path> is the name or key or path of the volume to wipe.
1452 I<--offset> is the position in the storage volume at which to start reading
1453 the data. I<--length> is an upper bound of the amount of data to be downloaded.
1455 =item B<vol-wipe> [I<--pool> I<pool-or-uuid>] I<vol-name-or-key-or-path>
1457 Wipe a volume, ensure data previously on the volume is not accessible to
1458 future reads. I<--pool> I<pool-or-uuid> is the name or UUID of the storage
1459 pool the volume is in.
1460 I<vol-name-or-key-or-path> is the name or key or path of the volume to wipe.
1462 =item B<vol-dumpxml> [I<--pool> I<pool-or-uuid>] I<vol-name-or-key-or-path>
1464 Output the volume information as an XML dump to stdout.
1465 I<--pool> I<pool-or-uuid> is the name or UUID of the storage pool the volume
1466 is in. I<vol-name-or-key-or-path> is the name or key or path of the volume
1467 to output the XML of.
1469 =item B<vol-info> [I<--pool> I<pool-or-uuid>] I<vol-name-or-key-or-path>
1471 Returns basic information about the given storage volume.
1472 I<--pool> I<pool-or-uuid> is the name or UUID of the storage pool the volume
1473 is in. I<vol-name-or-key-or-path> is the name or key or path of the volume
1474 to return information for.
1476 =item B<vol-list> [I<--pool> I<pool-or-uuid>] [I<--details>]
1478 Return the list of volumes in the given storage pool.
1479 I<--pool> I<pool-or-uuid> is the name or UUID of the storage pool.
1480 The I<--details> option instructs virsh to additionally display volume
1481 type and capacity related information where available.
1483 =item B<vol-pool> [I<--uuid>] I<vol-key-or-path>
1485 Return the pool name or UUID for a given volume. By default, the pool name is
1486 returned. If the I<--uuid> option is given, the pool UUID is returned instead.
1487 I<vol-key-or-path> is the key or path of the volume to return the pool
1488 information for.
1490 =item B<vol-path> [I<--pool> I<pool-or-uuid>] I<vol-name-or-key>
1492 Return the path for a given volume.
1493 I<--pool> I<pool-or-uuid> is the name or UUID of the storage pool the volume
1494 is in.
1495 I<vol-name-or-key> is the name or key of the volume to return the path for.
1497 =item B<vol-name> I<vol-key-or-path>
1499 Return the name for a given volume.
1500 I<vol-key-or-path> is the key or path of the volume to return the name for.
1502 =item B<vol-key> [I<--pool> I<pool-or-uuid>] I<vol-name-or-path>
1504 Return the volume key for a given volume.
1505 I<--pool> I<pool-or-uuid> is the name or UUID of the storage pool the volume
1506 is in. I<vol-name-or-path> is the name or path of the volume to return the
1507 volume key for.
1509 =back
1511 =head1 SECRET COMMMANDS
1513 The following commands manipulate "secrets" (e.g. passwords, passphrases and
1514 encryption keys).  Libvirt can store secrets independently from their use, and
1515 other objects (e.g. volumes or domains) can refer to the secrets for encryption
1516 or possibly other uses.  Secrets are identified using an UUID.  See
1517 L<http://libvirt.org/formatsecret.html> for documentation of the XML format
1518 used to represent properties of secrets.
1520 =over 4
1522 =item B<secret-define> I<file>
1524 Create a secret with the properties specified in I<file>, with no associated
1525 secret value.  If I<file> does not specify a UUID, choose one automatically.
1526 If I<file> specifies an UUID of an existing secret, replace its properties by
1527 properties defined in I<file>, without affecting the secret value.
1529 =item B<secret-dumpxml> I<secret>
1531 Output properties of I<secret> (specified by its UUID) as an XML dump to stdout.
1533 =item B<secret-set-value> I<secret> I<base64>
1535 Set the value associated with I<secret> (specified by its UUID) to the value
1536 Base64-encoded value I<base64>.
1538 =item B<secret-get-value> I<secret>
1540 Output the value associated with I<secret> (specified by its UUID) to stdout,
1541 encoded using Base64.
1543 =item B<secret-undefine> I<secret>
1545 Delete a I<secret> (specified by its UUID), including the associated value, if
1546 any.
1548 =item B<secret-list>
1550 Output a list of UUIDs of known secrets to stdout.
1552 =back
1554 =head1 SNAPSHOT COMMMANDS
1556 The following commands manipulate domain snapshots.  Snapshots take the
1557 disk, memory, and device state of a domain at a point-of-time, and save it
1558 for future use.  They have many uses, from saving a "clean" copy of an OS
1559 image to saving a domain's state before a potentially destructive operation.
1560 Snapshots are identified with a unique name.  See
1561 L<http://libvirt.org/formatsnapshot.html> for documentation of the XML format
1562 used to represent properties of snapshots.
1564 =over 4
1566 =item B<snapshot-create> I<domain> [I<xmlfile>]
1568 Create a snapshot for domain I<domain> with the properties specified in
1569 I<xmlfile>.  The only properties settable for a domain snapshot are the
1570 <name> and <description>; the rest of the fields are ignored, and
1571 automatically filled in by libvirt.  If I<xmlfile> is completely omitted,
1572 then libvirt will choose a value for all fields.
1574 =item B<snapshot-create-as> I<domain> [I<--print-xml>]
1575 [I<name>] [I<description>]
1577 Create a snapshot for domain I<domain> with the given <name> and
1578 <description>; if either value is omitted, libvirt will choose a
1579 value.  If I<--print-xml> is specified, then XML appropriate for
1580 I<snapshot-create> is output, rather than actually creating a snapshot.
1582 =item B<snapshot-current> I<domain> [I<--name>]
1584 Output the snapshot XML for the domain's current snapshot (if any).
1585 If I<--name> is specified, just list the snapshot name instead of the
1586 full xml.
1588 =item B<snapshot-list> I<domain>
1590 List all of the available snapshots for the given domain.
1592 =item B<snapshot-dumpxml> I<domain> I<snapshot>
1594 Output the snapshot XML for the domain's snapshot named I<snapshot>.
1596 =item B<snapshot-parent> I<domain> I<snapshot>
1598 Output the name of the parent snapshot for the given I<snapshot>, if any.
1600 =item B<snapshot-revert> I<domain> I<snapshot>
1602 Revert the given domain to the snapshot specified by I<snapshot>.  Be aware
1603 that this is a destructive action; any changes in the domain since the
1604 snapshot was taken will be lost.  Also note that the state of the domain after
1605 snapshot-revert is complete will be the state of the domain at the time
1606 the original snapshot was taken.
1608 =item B<snapshot-delete> I<domain> I<snapshot> I<--children>
1610 Delete the snapshot for the domain named I<snapshot>.  If this snapshot
1611 has child snapshots, changes from this snapshot will be merged into the
1612 children.  If I<--children> is passed, then delete this snapshot and any
1613 children of this snapshot.
1615 =back
1617 =head1 NWFILTER COMMMANDS
1619 The following commands manipulate network filters. Network filters allow
1620 filtering of the network traffic coming from and going to virtual machines.
1621 Individual network traffic filters are written in XML and may contain
1622 references to other network filters, describe traffic filtering rules,
1623 or contain both. Network filters are referenced by virtual machines
1624 from within their interface description. A network filter may be referenced
1625 by multiple virtual machines' interfaces.
1627 =over 4
1629 =item B<nwfilter-define> I<xmlfile>
1631 Make a new network filter known to libvirt. If a network filter with
1632 the same name already exists, it will be replaced with the new XML.
1633 Any running virtual machine referencing this network filter will have
1634 its network traffic rules adapted. If for any reason the network traffic
1635 filtering rules cannot be instantiated by any of the running virtual
1636 machines, then the new XML will be rejected.
1638 =item B<nwfilter-undefine> I<nwfilter-name>
1640 Delete a network filter. The deletion will fail if any running virtual
1641 machine is currently using this network filter.
1643 =item B<nwfilter-list>
1645 List all of the available network filters.
1647 =item B<nwfilter-dumpxml> I<nwfilter-name>
1649 Output the network filter XML.
1651 =item B<nwfilter-edit> I<nwfilter-name>
1653 Edit the XML of a network filter.
1655 This is equivalent to:
1657  virsh nwfilter-dumpxml myfilter > myfilter.xml
1658  vi myfilter.xml (or make changes with your other text editor)
1659  virsh nwfilter-define myfilter.xml
1661 except that it does some error checking.
1662 The new network filter may be rejected due to the same reason as
1663 mentioned in I<nwfilter-define>.
1665 The editor used can be supplied by the C<$VISUAL> or C<$EDITOR> environment
1666 variables, and defaults to C<vi>.
1668 =back
1670 =head1 QEMU-SPECIFIC COMMANDS
1672 NOTE: Use of the following commands is B<strongly> discouraged.  They
1673 can cause libvirt to become confused and do the wrong thing on subsequent
1674 operations.  Once you have used this command, please do not report
1675 problems to the libvirt developers; the reports will be ignored.
1677 =over 4
1679 =item B<qemu-attach> I<pid>
1681 Attach an externally launched QEMU process to the libvirt QEMU driver.
1682 The QEMU process must have been created with a monitor connection
1683 using the UNIX driver. Ideally the process will also have had the
1684 '-name' argument specified.
1686 =over 4
1688      $ qemu-kvm -cdrom ~/demo.iso \
1689          -monitor unix:/tmp/demo,server,nowait \
1690          -name foo \
1691          -uuid cece4f9f-dff0-575d-0e8e-01fe380f12ea  &
1692      $ QEMUPID=$!
1693      $ virsh qemu-attach $QEMUPID
1695 =back
1697 Not all functions of libvirt are expected to work reliably after
1698 attaching to an externally launched QEMU process. There may be
1699 issues with the guest ABI changing upon migration, and hotunplug
1700 may not work.
1702 =item B<qemu-monitor-command> I<domain> [I<--hmp>] I<command>...
1704 Send an arbitrary monitor command I<command> to domain I<domain> through the
1705 qemu monitor.  The results of the command will be printed on stdout.  If
1706 I<--hmp> is passed, the command is considered to be a human monitor command
1707 and libvirt will automatically convert it into QMP if needed.  In that case
1708 the result will also be converted back from QMP.  If more than one argument
1709 is provided for I<command>, they are concatenated with a space in between
1710 before passing the single command to the monitor.
1712 =back
1714 =head1 ENVIRONMENT
1716 The following environment variables can be set to alter the behaviour
1717 of C<virsh>
1719 =over 4
1721 =item VIRSH_DEBUG=<0 to 4>
1723 Turn on verbose debugging of virsh commands. Valid levels are
1725 =item * VIRSH_DEBUG=0
1727 DEBUG - Messages at ALL levels get logged
1729 =item * VIRSH_DEBUG=1
1731 INFO - Logs messages at levels INFO, NOTICE, WARNING and ERROR
1733 =item * VIRSH_DEBUG=2
1735 NOTICE - Logs messages at levels NOTICE, WARNING and ERROR
1737 =item * VIRSH_DEBUG=3
1739 WARNING - Logs messages at levels WARNING and ERROR
1741 =item * VIRSH_DEBUG=4
1743 ERROR - Messages at only ERROR level gets logged.
1745 =item VIRSH_LOG_FILE=C<LOGFILE>
1747 The file to log virsh debug messages.
1749 =item VIRSH_DEFAULT_CONNECT_URI
1751 The hypervisor to connect to by default. Set this to a URI, in the same
1752 format as accepted by the B<connect> option.
1754 =item VISUAL
1756 The editor to use by the B<edit> and related options.
1758 =item EDITOR
1760 The editor to use by the B<edit> and related options, if C<VISUAL>
1761 is not set.
1763 =item LIBVIRT_DEBUG=LEVEL
1765 Turn on verbose debugging of all libvirt API calls. Valid levels are
1767 =over 4
1769 =item * LIBVIRT_DEBUG=1
1771 Messages at level DEBUG or above
1773 =item * LIBVIRT_DEBUG=2
1775 Messages at level INFO or above
1777 =item * LIBVIRT_DEBUG=3
1779 Messages at level WARNING or above
1781 =item * LIBVIRT_DEBUG=4
1783 Messages at level ERROR or above
1785 =back
1787 For further information about debugging options consult C<http://libvirt.org/logging.html>
1789 =back
1791 =head1 BUGS
1793 Report any bugs discovered to the libvirt community via the mailing
1794 list C<http://libvirt.org/contact.html> or bug tracker C<http://libvirt.org/bugs.html>.
1795 Alternatively report bugs to your software distributor / vendor.
1797 =head1 AUTHORS
1799   Please refer to the AUTHORS file distributed with libvirt.
1801   Based on the xm man page by:
1802   Sean Dague <sean at dague dot net>
1803   Daniel Stekloff <dsteklof at us dot ibm dot com>
1805 =head1 COPYRIGHT
1807 Copyright (C) 2005, 2007-2010 Red Hat, Inc., and the authors listed in the
1808 libvirt AUTHORS file.
1810 =head1 LICENSE
1812 virsh is distributed under the terms of the GNU LGPL v2+.
1813 This is free software; see the source for copying conditions. There
1814 is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
1815 PURPOSE
1817 =head1 SEE ALSO
1819 L<virt-install(1)>, L<virt-xml-validate(1)>, L<virt-top(1)>, L<virt-df(1)>,
1820 L<http://www.libvirt.org/>
1822 =cut