TEMP comment out libvirtd.stp
[libvirt/apevec.git] / tools / virsh.pod
blobec57f2bb7ee72e049a4b75faa62a0171bf36d9c2
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, OpenNebula, 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>
59 Ignore all other arguments, and behave as if the B<version> command were
60 given instead.
62 =item B<-c>, B<--connect> I<URI>
64 Connect to the specified I<URI>, as if by the B<connect> command,
65 instead of the default connection.
67 =item B<-d>, B<--debug> I<LEVEL>
69 Enable debug messages at integer I<LEVEL> and above.  I<LEVEL> can
70 range from 0 (default) to 5.
72 =item B<-l>, B<--log> I<FILE>
74 Output logging details to I<FILE>.
76 =item B<-q>, B<--quiet>
78 Avoid extra informational messages.
80 =item B<-r>, B<--readonly>
82 Make the initial connection read-only, as if by the I<--readonly>
83 option of the B<connect> command.
85 =item B<-t>, B<--timing>
87 Output elapsed time information for each command.
89 =back
91 =head1 NOTES
93 Most B<virsh> operations rely upon the libvirt library being able to
94 connect to an already running libvirtd service.  This can usually be
95 done using the command B<service libvirtd start>.
97 Most B<virsh> commands require root privileges to run due to the
98 communications channels used to talk to the hypervisor.  Running as
99 non root will return an error.
101 Most B<virsh> commands act synchronously, except maybe shutdown,
102 setvcpus and setmem. In those cases the fact that the B<virsh>
103 program returned, may not mean the action is complete and you
104 must poll periodically to detect that the guest completed the
105 operation.
107 =head1 GENERIC COMMANDS
109 The following commands are generic i.e. not specific to a domain.
111 =over 4
113 =item B<help> optional I<command>
115 This prints a small synopsis about all commands available for B<virsh>
116 B<help> I<command> will print out a detailed help message on that command.
118 =item B<quit>, B<exit>
120 quit this interactive terminal
122 =item B<version>
124 Will print out the major version info about what this built from.
126 =over 4
128 B<Example>
130 B<virsh> version
132 Compiled against library: libvir 0.0.6
134 Using library: libvir 0.0.6
136 Using API: Xen 3.0.0
138 Running hypervisor: Xen 3.0.0
140 =back
142 =item B<cd> optional I<directory>
144 Will change current directory to I<directory>.  The default directory
145 for the B<cd> command is the home directory or, if there is no I<HOME>
146 variable in the environment, the root directory.
148 This command is only available in interactive mode.
150 =item B<pwd>
152 Will print the current directory.
154 =item B<connect> I<URI> optional I<--readonly>
156 (Re)-Connect to the hypervisor. When the shell is first started, this
157 is automatically run with the I<URI> parameter requested by the C<-c>
158 option on the command line. The I<URI> parameter specifies how to
159 connect to the hypervisor. The documentation page at
160 L<http://libvirt.org/uri.html> list the values supported, but the most
161 common are:
163 =over 4
165 =item xen:///
167 this is used to connect to the local Xen hypervisor, this is the default
169 =item qemu:///system
171 connect locally as root to the daemon supervising QEmu and KVM domains
173 =item qemu:///session
175 connect locally as a normal user to his own set of QEmu and KVM domains
177 =item lxc:///
179 connect to a local linux container
181 =back
183 For remote access see the documentation page on how to make URIs.
184 The I<--readonly> option allows for read-only connection
186 =item B<uri>
188 Prints the hypervisor canonical URI, can be useful in shell mode.
190 =item B<hostname>
192 Print the hypervisor hostname.
194 =item B<nodeinfo>
196 Returns basic information about the node, like number and type of CPU,
197 and size of the physical memory.
199 =item B<capabilities>
201 Print an XML document describing the capabilities of the hypervisor
202 we are currently connected to. This includes a section on the host
203 capabilities in terms of CPU and features, and a set of description
204 for each kind of guest which can be virtualized. For a more complete
205 description see:
206   L<http://libvirt.org/formatcaps.html>
207 The XML also show the NUMA topology information if available.
209 =item B<list> optional I<--inactive> I<--all>
211 Prints information about one or more domains.  If no domains are
212 specified it prints out information about running domains.
214 An example format for the list is as follows:
216 B<virsh> list
217  Id Name                 State
219 ----------------------------------
221   0 Domain-0             running
222   2 fedora               paused
225 Name is the name of the domain.  ID the domain numeric id.
226 State is the run state (see below).
228 B<STATES>
230 The State field lists 7 states for a domain, and which ones the
231 current domain is in.
233 =over 4
235 =item B<running>
237 The domain is currently running on a CPU
239 =item B<idle>
241 The domain is idle, and not running or runnable.  This can be caused
242 because the domain is waiting on IO (a traditional wait state) or has
243 gone to sleep because there was nothing else for it to do.
245 =item B<paused>
247 The domain has been paused, usually occurring through the administrator
248 running B<virsh suspend>.  When in a paused state the domain will still
249 consume allocated resources like memory, but will not be eligible for
250 scheduling by the hypervisor.
252 =item B<shutdown>
254 The domain is in the process of shutting down, i.e. the guest operating system
255 has been notified and should be in the process of stopping its operations
256 gracefully.
258 =item B<shut off>
260 The domain is not running.  Usually this indicates the domain has been
261 shut down completely, or has not been started.
263 =item B<crashed>
265 The domain has crashed, which is always a violent ending.  Usually
266 this state can only occur if the domain has been configured not to
267 restart on crash.
269 =item B<dying>
271 The domain is in process of dying, but hasn't completely shutdown or
272 crashed.
274 =back
276 =item B<freecell> optional I<cellno>
278 Prints the available amount of memory on the machine or within a
279 NUMA cell if I<cellno> is provided.
281 =item B<cpu-baseline> I<FILE>
283 Compute baseline CPU which will be supported by all host CPUs given in <file>.
284 The list of host CPUs is built by extracting all <cpu> elements from the
285 <file>. Thus, the <file> can contain either a set of <cpu> elements separated
286 by new lines or even a set of complete <capabilities> elements printed by
287 B<capabilities> command.
289 =item B<cpu-compare> I<FILE>
291 Compare CPU definition from XML <file> with host CPU. The XML <file> may
292 contain either host or guest CPU definition. The host CPU definition is the
293 <cpu> element and its contents as printed by B<capabilities> command. The
294 guest CPU definition is the <cpu> element and its contents from domain XML
295 definition. For more information on guest CPU definition see:
296 L<http://libvirt.org/formatdomain.html#elementsCPU>
298 =back
300 =head1 DOMAIN COMMANDS
302 The following commands manipulate domains directly, as stated
303 previously most commands take domain-id as the first parameter. The
304 I<domain-id> can be specified as an short integer, a name or a full UUID.
306 =over 4
308 =item B<autostart> optional I<--disable> I<domain-id>
310 Configure a domain to be automatically started at boot.
312 The option I<--disable> disables autostarting.
314 =item B<console> I<domain-id>
316 Connect the virtual serial console for the guest.
318 =item B<create> I<FILE> optional I<--console> I<--paused>
320 Create a domain from an XML <file>. An easy way to create the XML
321 <file> is to use the B<dumpxml> command to obtain the definition of a
322 pre-existing guest.  The domain will be paused if the I<--paused> option
323 is used and supported by the driver; otherwise it will be running.
324 If I<--console> is requested, attach to the console after creation.
326 B<Example>
328  virsh dumpxml <domain-id> > domain.xml
329  edit domain.xml
330  virsh create < domain.xml
332 =item B<define> I<FILE>
334 Define a domain from an XML <file>. The domain definition is registered
335 but not started.
337 =item B<destroy> I<domain-id>
339 Immediately terminate the domain domain-id.  This doesn't give the domain
340 OS any chance to react, and it's the equivalent of ripping the power
341 cord out on a physical machine.  In most cases you will want to use
342 the B<shutdown> command instead.
344 =item B<domblkstat> I<domain> I<block-device>
346 Get device block stats for a running domain.
348 =item B<domifstat> I<domain> I<interface-device>
350 Get network interface stats for a running domain.
352 =item B<dommemstat> I<domain>
354 Get memory stats for a running domain.
356 =item B<domblkinfo> I<domain> I<block-device>
358 Get block device size info for a domain.
360 =item B<dominfo> I<domain-id>
362 Returns basic information about the domain.
364 =item B<domuuid> I<domain-name-or-id>
366 Convert a domain name or id to domain UUID
368 =item B<domid> I<domain-name-or-uuid>
370 Convert a domain name (or UUID) to a domain id
372 =item B<domjobabort> I<domain-id-or-uuid>
374 Abort the currently running domain job.
376 =item B<domjobinfo> I<domain-id-or-uuid>
378 Returns information about jobs running on a domain.
380 =item B<domname> I<domain-id-or-uuid>
382 Convert a domain Id (or UUID) to domain name
384 =item B<domstate> I<domain-id>
386 Returns state about a running domain.
388 =item B<domxml-from-native> I<format> I<config>
390 Convert the file I<config> in the native guest configuration format
391 named by I<format> to a domain XML format.
393 =item B<domxml-to-native> I<format> I<xml>
395 Convert the file I<xml> in domain XML format to the native guest
396 configuration format named by I<format>.
398 =item B<dump> I<domain-id> I<corefilepath>
400 Dumps the core of a domain to a file for analysis.
402 =item B<dumpxml> I<domain-id> optional I<--inactive> I<--security-info> I<--update-cpu>
404 Output the domain information as an XML dump to stdout, this format can be used
405 by the B<create> command. Additional options affecting the XML dump may be
406 used. I<--inactive> tells virsh to dump domain configuration that will be used
407 on next start of the domain as opposed to the current domain configuration.
408 Using I<--security-info> security sensitive information will also be included
409 in the XML dump. I<--update-cpu> updates domain CPU requirements according to
410 host CPU.
412 =item B<echo> optional I<--shell> I<--xml> I<arg>...
414 Echo back each I<arg>, separated by space.  If I<--shell> is
415 specified, then the output will be single-quoted where needed, so that
416 it is suitable for reuse in a shell context.  If I<--xml> is
417 specified, then the output will be escaped for use in XML.
419 =item B<edit> I<domain-id>
421 Edit the XML configuration file for a domain.
423 This is equivalent to:
425  virsh dumpxml domain > domain.xml
426  edit domain.xml
427  virsh define domain.xml
429 except that it does some error checking.
431 The editor used can be supplied by the C<$VISUAL> or C<$EDITOR> environment
432 variables, and defaults to C<vi>.
434 =item B<managedsave> I<domain-id>
436 Save and destroy a running domain, so it can be restarted from the same
437 state at a later time.  When the virsh B<start> command is next run for
438 the domain, it will automatically be started from this saved state.
440 =item B<managedsave-remove> I<domain-id>
442 Remove the B<managedsave> state file for a domain, if it exists.  This
443 ensures the domain will do a full boot the next time it is started.
445 =item B<maxvcpus> optional I<type>
447 Provide the maximum number of virtual CPUs supported for a guest VM on
448 this connection.  If provided, the I<type> parameter must be a valid
449 type attribute for the <domain> element of XML.
451 =item B<migrate> optional I<--live> I<--suspend> I<domain-id> I<desturi>
452 I<migrateuri>
454 Migrate domain to another host.  Add --live for live migration; --suspend
455 leaves the domain paused on the destination host. The I<desturi> is the
456 connection URI of the destination host, and I<migrateuri> is the
457 migration URI, which usually can be omitted.
459 =item B<migrate-setmaxdowntime> I<domain-id> I<downtime>
461 Set maximum tolerable downtime for a domain which is being live-migrated to
462 another host.  The I<downtime> is a number of milliseconds the guest is allowed
463 to be down at the end of live migration.
465 =item B<reboot> I<domain-id>
467 Reboot a domain.  This acts just as if the domain had the B<reboot>
468 command run from the console.  The command returns as soon as it has
469 executed the reboot action, which may be significantly before the
470 domain actually reboots.
472 The exact behavior of a domain when it reboots is set by the
473 I<on_reboot> parameter in the domain's XML definition.
475 =item B<restore> I<state-file>
477 Restores a domain from an B<virsh save> state file.  See I<save> for more info.
479 =item B<save> I<domain-id> I<state-file>
481 Saves a running domain to a state file so that it can be restored
482 later.  Once saved, the domain will no longer be running on the
483 system, thus the memory allocated for the domain will be free for
484 other domains to use.  B<virsh restore> restores from this state file.
486 This is roughly equivalent to doing a hibernate on a running computer,
487 with all the same limitations.  Open network connections may be
488 severed upon restore, as TCP timeouts may have expired.
490 =item B<schedinfo> optional I<--set> B<parameter=value> I<domain-id>
492 =item B<schedinfo> optional I<--weight> B<number> optional I<--cap> B<number> I<domain-id>
494 Allows you to show (and set) the domain scheduler parameters. The parameters available for each hypervisor are:
496 LXC, QEMU/KVM (posix scheduler): cpu_shares
498 Xen (credit scheduler): weight, cap
500 ESX (allocation scheduler): reservation, limit, shares
502 B<Note>: The cpu_shares parameter has a valid value range of 0-262144.
504 B<Note>: The weight and cap parameters are defined only for the
505 XEN_CREDIT scheduler and are now I<DEPRECATED>.
507 =item B<setmem> I<domain-id> B<kilobytes>
509 Change the current memory allocation in the guest domain. This should take
510 effect immediately. The memory limit is specified in
511 kilobytes.
513 For Xen, you can only adjust the memory of a running domain if the
514 domain is paravirtualized or running the PV balloon driver.
516 =item B<setmaxmem> I<domain-id> B<kilobytes>
518 Change the maximum memory allocation limit in the guest domain. This should
519 not change the current memory use. The memory limit is specified in
520 kilobytes.
522 =item B<memtune> I<domain-id> optional I<--hard-limit> B<kilobytes>
523 optional I<--soft-limit> B<kilobytes> optional I<--swap-hard-limit>
524 B<kilobytes> -I<--min-guarantee> B<kilobytes>
526 Allows you to display or set the domain memory parameters. Without
527 flags, the current settings are displayed; with a flag, the
528 appropriate limit is adjusted if supported by the hypervisor.  LXC and
529 QEMU/KVM supports I<--hard-limit>, I<--soft-limit>, and I<--swap-hard-limit>.
531 =item B<setvcpus> I<domain-id> I<count> optional I<--maximum> I<--config>
532 I<--live>
534 Change the number of virtual CPUs active in the guest domain. Note that
535 I<count> may be limited by host, hypervisor or limit coming from the
536 original description of domain.
538 For Xen, you can only adjust the virtual CPUs of a running domain if
539 the domain is paravirtualized.
541 If I<--config> is specified, the change will only affect the next
542 boot of a domain.  If I<--live> is specified, the domain must be
543 running, and the change takes place immediately.  Both flags may be
544 specified, if supported by the hypervisor.  If neither flag is given,
545 then I<--live> is implied and it is up to the hypervisor whether
546 I<--config> is also implied.
548 If I<--maximum> is specified, then you must use I<--config> and
549 avoid I<--live>; this flag controls the maximum limit of vcpus that
550 can be hot-plugged the next time the domain is booted.
552 =item B<shutdown> I<domain-id>
554 Gracefully shuts down a domain.  This coordinates with the domain OS
555 to perform graceful shutdown, so there is no guarantee that it will
556 succeed, and may take a variable length of time depending on what
557 services must be shutdown in the domain.
559 The exact behavior of a domain when it shuts down is set by the
560 I<on_shutdown> parameter in the domain's XML definition.
562 =item B<start> I<domain-name> optional I<--console> I<--paused>
564 Start a (previously defined) inactive domain, either from the last
565 B<managedsave> state, or via a fresh boot if no managedsave state is
566 present.  The domain will be paused if the I<--paused> option is
567 used and supported by the driver; otherwise it will be running.
568 If I<--console> is requested, attach to the console after creation.
570 =item B<suspend> I<domain-id>
572 Suspend a running domain. It is kept in memory but won't be scheduled
573 anymore.
575 =item B<resume> I<domain-id>
577 Moves a domain out of the suspended state.  This will allow a previously
578 suspended domain to now be eligible for scheduling by the underlying
579 hypervisor.
581 =item B<ttyconsole> I<domain-id>
583 Output the device used for the TTY console of the domain. If the information
584 is not available the processes will provide an exit code of 1.
586 =item B<undefine> I<domain-id>
588 Undefine the configuration for an inactive domain. Since it's not running
589 the domain name or UUID must be used as the I<domain-id>.
591 =item B<vcpucount> I<domain-id>  optional I<--maximum> I<--current>
592 I<--config> I<--live>
594 Print information about the virtual cpu counts of the given
595 I<domain-id>.  If no flags are specified, all possible counts are
596 listed in a table; otherwise, the output is limited to just the
597 numeric value requested.
599 I<--maximum> requests information on the maximum cap of vcpus that a
600 domain can add via B<setvcpus>, while I<--current> shows the current
601 usage; these two flags cannot both be specified.  I<--config>
602 requests information regarding the next time the domain will be
603 booted, while I<--live> requires a running domain and lists current
604 values; these two flags cannot both be specified.
606 =item B<vcpuinfo> I<domain-id>
608 Returns basic information about the domain virtual CPUs, like the number of
609 vCPUs, the running time, the affinity to physical processors.
611 =item B<vcpupin> I<domain-id> I<vcpu> I<cpulist>
613 Pin domain VCPUs to host physical CPUs. The I<vcpu> number must be provided
614 and I<cpulist> is a comma separated list of physical CPU numbers.
616 =item B<vncdisplay> I<domain-id>
618 Output the IP address and port number for the VNC display. If the information
619 is not available the processes will provide an exit code of 1.
621 =back
623 =head1 DEVICE COMMANDS
625 The following commands manipulate devices associated to domains.
626 The domain-id can be specified as an short integer, a name or a full UUID.
627 To better understand the values allowed as options for the command
628 reading the documentation at L<http://libvirt.org/formatdomain.html> on the
629 format of the device sections to get the most accurate set of accepted values.
631 =over 4
633 =item B<attach-device> I<domain-id> I<FILE>
635 Attach a device to the domain, using a device definition in an XML file.
636 See the documentation to learn about libvirt XML format for a device.
637 For cdrom and floppy devices, this command only replaces the media within
638 the single existing device; consider using B<update-device> for this usage.
640 =item B<attach-disk> I<domain-id> I<source> I<target> optional I<--driver driver> I<--subdriver subdriver> I<--type type> I<--mode mode>
642 Attach a new disk device to the domain.
643 I<source> and I<target> are paths for the files and devices.
644 I<driver> can be I<file>, I<tap> or I<phy> depending on the kind of access.
645 I<type> can indicate I<cdrom> or I<floppy> as alternative to the disk default,
646 although this use only replaces the media within the existing virtual cdrom or
647 floppy device; consider using B<update-device> for this usage instead.
648 I<mode> can specify the two specific mode I<readonly> or I<shareable>.
650 =item B<attach-interface> I<domain-id> I<type> I<source> optional I<--target target> I<--mac mac> I<--script script> I<--model model> I<--persistent>
652 Attach a new network interface to the domain.
653 I<type> can be either I<network> to indicate a physical network device or I<bridge> to indicate a bridge to a device.
654 I<source> indicates the source device.
655 I<target> allows to indicate the target device in the guest.
656 I<mac> allows to specify the MAC address of the network interface.
657 I<script> allows to specify a path to a script handling a bridge instead of
658 the default one.
659 I<model> allows to specify the model type.
660 I<persistent> indicates the changes will affect the next boot of the domain.
662 =item B<detach-device> I<domain-id> I<FILE>
664 Detach a device from the domain, takes the same kind of XML descriptions
665 as command B<attach-device>.
667 =item B<detach-disk> I<domain-id> I<target>
669 Detach a disk device from a domain. The I<target> is the device as seen
670 from the domain.
672 =item B<detach-interface> I<domain-id> I<type> optional I<--mac mac>
674 Detach a network interface from a domain.
675 I<type> can be either I<network> to indicate a physical network device or I<bridge> to indicate a bridge to a device.
676 It is recommended to use the I<mac> option to distinguish between the interfaces
677 if more than one are present on the domain.
679 =item B<update-device> I<domain-id> I<file> optional I<--persistent>
681 Update the characteristics of a device associated with I<domain-id>,
682 based on the device definition in an XML I<file>.  If the I<--persistent>
683 option is used, the changes will affect the next boot of the domain.
684 See the documentation to learn about libvirt XML format for a device.
686 =back
688 =head1 VIRTUAL NETWORK COMMANDS
690 The following commands manipulate networks. Libvirt has the capability to
691 define virtual networks which can then be used by domains and linked to
692 actual network devices. For more detailed information about this feature
693 see the documentation at L<http://libvirt.org/formatnetwork.html> . A lot
694 of the command for virtual networks are similar to the one used for domains,
695 but the way to name a virtual network is either by its name or UUID.
697 =over 4
699 =item B<net-autostart> I<network> optional I<--disable>
701 Configure a virtual network to be automatically started at boot.
702 The I<--disable> option disable autostarting.
704 =item B<net-create> I<file>
706 Create a virtual network from an XML I<file>, see the documentation to get
707 a description of the XML network format used by libvirt.
709 =item B<net-define> I<file>
711 Define a virtual network from an XML I<file>, the network is just defined but
712 not instantiated.
714 =item B<net-destroy> I<network>
716 Destroy a given virtual network specified by its name or UUID. This takes
717 effect immediately.
719 =item B<net-dumpxml> I<network>
721 Output the virtual network information as an XML dump to stdout.
723 =item B<net-edit> I<network>
725 Edit the XML configuration file for a network.
727 This is equivalent to:
729  virsh net-dumpxml network > network.xml
730  edit network.xml
731  virsh net-define network.xml
733 except that it does some error checking.
735 The editor used can be supplied by the C<$VISUAL> or C<$EDITOR> environment
736 variables, and defaults to C<vi>.
738 =item B<net-list> optional I<--inactive> or I<--all>
740 Returns the list of active networks, if I<--all> is specified this will also
741 include defined but inactive networks, if I<--inactive> is specified only the
742 inactive ones will be listed.
744 =item B<net-name> I<network-UUID>
746 Convert a network UUID to network name.
748 =item B<net-start> I<network>
750 Start a (previously defined) inactive network.
752 =item B<net-undefine> I<network>
754 Undefine the configuration for an inactive network.
756 =item B<net-uuid> I<network-name>
758 Convert a network name to network UUID.
760 =back
762 =head1 STORAGE POOL COMMANDS
764 The following commands manipulate storage pools. Libvirt has the
765 capability to manage various storage solutions, including files, raw
766 partitions, and domain-specific formats, used to provide the storage
767 volumes visible as devices within virtual machines. For more detailed
768 information about this feature, see the documentation at
769 L<http://libvirt.org/formatstorage.html> . A lot of the commands for
770 pools are similar to the ones used for domains.
772 =over 4
774 =item B<find-storage-pool-sources> I<type> optional I<srcSpec>
776 Returns XML describing all storage pools of a given I<type> that could
777 be found.  If I<srcSpec> is provided, it is a file that contains XML
778 to further restrict the query for pools.
780 =item B<find-storage-pool-sources> I<type> optional I<host> I<port>
782 Returns XML describing all storage pools of a given I<type> that could
783 be found.  If I<host> and I<port> are provided, they control where the
784 query is performed.
786 =item B<pool-autostart> I<pool-or-uuid> optional I<--disable>
788 Configure whether I<pool> should automatically start at boot.
790 =item B<pool-build> I<pool-or-uuid>
792 Build a given pool.
794 =item B<pool-create> I<file>
796 Create and start a pool object from the XML I<file>.
798 =item B<pool-create-as> I<name> I<--print-xml> I<type> optional I<source-host>
799 I<source-path> I<source-dev> I<source-name> <target> I<--source-format format>
801 Create and start a pool object I<name> from the raw parameters.  If
802 I<--print-xml> is specified, then print the XML of the pool object
803 without creating the pool.  Otherwise, the pool has the specified
804 I<type>.
806 =item B<pool-define> I<file>
808 Create, but do not start, a pool object from the XML I<file>.
810 =item B<pool-define-as> I<name> I<--print-xml> I<type> optional I<source-host>
811 I<source-path> I<source-dev> I<source-name> <target> I<--source-format format>
813 Create, but do not start, a pool object I<name> from the raw parameters.  If
814 I<--print-xml> is specified, then print the XML of the pool object
815 without defining the pool.  Otherwise, the pool has the specified
816 I<type>.
818 =item B<pool-destroy> I<pool-or-uuid>
820 Destroy a given I<pool> object. Libvirt will no longer manage the
821 storage described by the pool object, but the raw data contained in
822 the pool is not changed, and can be later recovered with
823 B<pool-create>.
825 =item B<pool-delete> I<pool-or-uuid>
827 Destroy the resources used by a given I<pool> object. This operation
828 is non-recoverable.  The I<pool> object will still exist after this
829 command.
831 =item B<pool-dumpxml> I<pool-or-uuid>
833 Returns the XML information about the I<pool> object.
835 =item B<pool-edit> I<pool-or-uuid>
837 Edit the XML configuration file for a storage pool.
839 This is equivalent to:
841  virsh pool-dumpxml pool > pool.xml
842  edit pool.xml
843  virsh pool-define pool.xml
845 except that it does some error checking.
847 The editor used can be supplied by the C<$VISUAL> or C<$EDITOR> environment
848 variables, and defaults to C<vi>.
850 =item B<pool-info> I<pool-or-uuid>
852 Returns basic information about the I<pool> object.
854 =item B<pool-list> optional I<--inactive> I<--all> I<--details>
856 List pool objects known to libvirt.  By default, only pools in use by
857 active domains are listed; I<--inactive> lists just the inactive
858 pools, and I<--all> lists all pools. The I<--details> option instructs
859 virsh to additionally display pool persistence and capacity related
860 information where available.
862 =item B<pool-name> I<uuid>
864 Convert the I<uuid> to a pool name.
866 =item B<pool-refresh> I<pool-or-uuid>
868 Refresh the list of volumes contained in I<pool>.
870 =item B<pool-start> I<pool-or-uuid>
872 Start the storage I<pool>, which is previously defined but inactive.
874 =item B<pool-undefine> I<pool-or-uuid>
876 Undefine the configuration for an inactive I<pool>.
878 =item B<pool-uuid> I<pool>
880 Returns the UUID of the named I<pool>.
882 =back
884 =head1 VOLUME COMMANDS
886 =over 4
888 =item B<vol-create> I<pool-or-uuid> I<FILE>
890 Create a volume from an XML <file>.
891 I<pool-or-uuid> is the name or UUID of the storage pool to create the volume in.
892 I<FILE> is the XML <file> with the volume definition. An easy way to create the
893 XML <file> is to use the B<vol-dumpxml> command to obtain the definition of a
894 pre-existing volume.
896 B<Example>
898  virsh vol-dumpxml --pool storagepool1 appvolume1 > newvolume.xml
899  edit newvolume.xml
900  virsh vol-create differentstoragepool newvolume.xml
902 =item B<vol-create-from> I<pool-or-uuid> I<FILE> [optional I<--inputpool>
903 I<pool-or-uuid>] I<vol-name-or-key-or-path>
905 Create a volume, using another volume as input.
906 I<pool-or-uuid> is the name or UUID of the storage pool to create the volume in.
907 I<FILE> is the XML <file> with the volume definition.
908 I<--inputpool> I<pool-or-uuid> is the name or uuid of the storage pool the
909 source volume is in.
910 I<vol-name-or-key-or-path> is the name or key or path of the source volume.
912 =item B<vol-create-as> I<pool-or-uuid> I<name> I<capacity> optional
913 I<--allocation> I<size> I<--format> I<string> I<--backing-vol>
914 I<vol-name-or-key-or-path> I<--backing-vol-format> I<string>
916 Create a volume from a set of arguments.
917 I<pool-or-uuid> is the name or UUID of the storage pool to create the volume
919 I<name> is the name of the new volume.
920 I<capacity> is the size of the volume to be created, with optional k, M, G, or
921 T suffix.
922 I<--allocation> I<size> is the initial size to be allocated in the volume, with
923 optional k, M, G, or T suffix.
924 I<--format> I<string> is used in file based storage pools to specify the volume
925 file format to use; raw, bochs, qcow, qcow2, vmdk.
926 I<--backing-vol> I<vol-name-or-key-or-path> is the source backing
927 volume to be used if taking a snapshot of an existing volume.
928 I<--backing-vol-format> I<string> is the format of the snapshot backing volume;
929 raw, bochs, qcow, qcow2, vmdk, host_device.
931 =item B<vol-clone> [optional I<--pool> I<pool-or-uuid>] I<vol-name-or-key-or-path> I<name>
933 Clone an existing volume.  Less powerful, but easier to type, version of
934 B<vol-create-from>.
935 I<--pool> I<pool-or-uuid> is the name or UUID of the storage pool to create the volume in.
936 I<vol-name-or-key-or-path> is the name or key or path of the source volume.
937 I<name> is the name of the new volume.
939 =item B<vol-delete> [optional I<--pool> I<pool-or-uuid>] I<vol-name-or-key-or-path>
941 Delete a given volume.
942 I<--pool> I<pool-or-uuid> is the name or UUID of the storage pool the volume is in.
943 I<vol-name-or-key-or-path> is the name or key or path of the volume to delete.
945 =item B<vol-wipe> [optional I<--pool> I<pool-or-uuid>] I<vol-name-or-key-or-path>
947 Wipe a volume, ensure data previously on the volume is not accessible to future reads.
948 I<--pool> I<pool-or-uuid> is the name or UUID of the storage pool the volume is in.
949 I<vol-name-or-key-or-path> is the name or key or path of the volume to wipe.
951 =item B<vol-dumpxml> [optional I<--pool> I<pool-or-uuid>] I<vol-name-or-key-or-path>
953 Output the volume information as an XML dump to stdout.
954 I<--pool> I<pool-or-uuid> is the name or UUID of the storage pool the volume is in.
955 I<vol-name-or-key-or-path> is the name or key or path of the volume to output the XML of.
957 =item B<vol-info> [optional I<--pool> I<pool-or-uuid>] I<vol-name-or-key-or-path>
959 Returns basic information about the given storage volume.
960 I<--pool> I<pool-or-uuid> is the name or UUID of the storage pool the volume is in.
961 I<vol-name-or-key-or-path> is the name or key or path of the volume to return information for.
963 =item B<vol-list> [optional I<--pool>] I<pool-or-uuid> optional I<--details>
965 Return the list of volumes in the given storage pool.
966 I<--pool> I<pool-or-uuid> is the name or UUID of the storage pool.
967 The I<--details> option instructs virsh to additionally display volume
968 type and capacity related information where available.
970 =item B<vol-pool> [optional I<--uuid>] I<vol-key-or-path>
972 Return the pool name or UUID for a given volume. By default, the pool name is
973 returned. If the I<--uuid> option is given, the pool UUID is returned instead.
974 I<vol-key-or-path> is the key or path of the volume to return the pool
975 information for.
977 =item B<vol-path> [optional I<--pool> I<pool-or-uuid>] I<vol-name-or-key>
979 Return the path for a given volume.
980 I<--pool> I<pool-or-uuid> is the name or UUID of the storage pool the volume is in.
981 I<vol-name-or-key> is the name or key of the volume to return the path for.
983 =item B<vol-name> I<vol-key-or-path>
985 Return the name for a given volume.
986 I<vol-key-or-path> is the key or path of the volume to return the name for.
988 =item B<vol-key> [optional I<--pool> I<pool-or-uuid>] I<vol-name-or-path>
990 Return the volume key for a given volume.
991 I<--pool> I<pool-or-uuid> is the name or UUID of the storage pool the volume is in.
992 I<vol-name-or-path> is the name or path of the volume to return the volume key for.
994 =back
996 =head1 SECRET COMMMANDS
998 The following commands manipulate "secrets" (e.g. passwords, passphrases and
999 encryption keys).  Libvirt can store secrets independently from their use, and
1000 other objects (e.g. volumes or domains) can refer to the secrets for encryption
1001 or possibly other uses.  Secrets are identified using an UUID.  See
1002 L<http://libvirt.org/formatsecret.html> for documentation of the XML format
1003 used to represent properties of secrets.
1005 =over 4
1007 =item B<secret-define> I<file>
1009 Create a secret with the properties specified in I<file>, with no associated
1010 secret value.  If I<file> does not specify a UUID, choose one automatically.
1011 If I<file> specifies an UUID of an existing secret, replace its properties by
1012 properties defined in I<file>, without affecting the secret value.
1014 =item B<secret-dumpxml> I<secret>
1016 Output properties of I<secret> (specified by its UUID) as an XML dump to stdout.
1018 =item B<secret-set-value> I<secret> I<base64>
1020 Set the value associated with I<secret> (specified by its UUID) to the value
1021 Base64-encoded value I<base64>.
1023 =item B<secret-get-value> I<secret>
1025 Output the value associated with I<secret> (specified by its UUID) to stdout,
1026 encoded using Base64.
1028 =item B<secret-undefine> I<secret>
1030 Delete a I<secret> (specified by its UUID), including the associated value, if
1031 any.
1033 =item B<secret-list>
1035 Output a list of UUIDs of known secrets to stdout.
1037 =back
1039 =head1 SNAPSHOT COMMMANDS
1041 The following commands manipulate domain snapshots.  Snapshots take the
1042 disk, memory, and device state of a domain at a point-of-time, and save it
1043 for future use.  They have many uses, from saving a "clean" copy of an OS
1044 image to saving a domain's state before a potentially destructive operation.
1045 Snapshots are identified with a unique name.  See
1046 L<http://libvirt.org/formatsnapshot.html> for documentation of the XML format
1047 used to represent properties of snapshots.
1049 =over 4
1051 =item B<snapshot-create> I<domain> I<xmlfile>
1053 Create a snapshot for domain I<domain> with the properties specified in
1054 I<xmlfile>.  The only properties settable for a domain snapshot are the
1055 <name> and <description>; the rest of the fields are ignored, and
1056 automatically filled in by libvirt.  If I<xmlfile> is completely omitted,
1057 then libvirt will choose a value for all fields.
1059 =item B<snapshot-current> I<domain>
1061 Output the snapshot XML for the domain's current snapshot (if any).
1063 =item B<snapshot-list> I<domain>
1065 List all of the available snapshots for the given domain.
1067 =item B<snapshot-dumpxml> I<domain> I<snapshot>
1069 Output the snapshot XML for the domain's snapshot named I<snapshot>.
1071 =item B<snapshot-revert> I<domain> I<snapshot>
1073 Revert the given domain to the snapshot specified by I<snapshot>.  Be aware
1074 that this is a destructive action; any changes in the domain since the
1075 snapshot was taken will be lost.  Also note that the state of the domain after
1076 snapshot-revert is complete will be the state of the domain at the time
1077 the original snapshot was taken.
1079 =item B<snapshot-delete> I<domain> I<snapshot> I<--children>
1081 Delete the snapshot for the domain named I<snapshot>.  If this snapshot
1082 has child snapshots, changes from this snapshot will be merged into the
1083 children.  If I<--children> is passed, then delete this snapshot and any
1084 children of this snapshot.
1086 =back
1088 =head1 NWFILTER COMMMANDS
1090 The following commands manipulate network filters. Network filters allow
1091 filtering of the network traffic coming from and going to virtual machines.
1092 Individual network traffic filters are written in XML and may contain
1093 references to other network filters, describe traffic filtering rules,
1094 or contain both. Network filters are referenced by virtual machines
1095 from within their interface description. A network filter may be referenced
1096 by multiple virtual machines' interfaces.
1098 =over 4
1100 =item B<nwfilter-define> I<xmlfile>
1102 Make a new network filter known to libvirt. If a network filter with
1103 the same name already exists, it will be replaced with the new XML.
1104 Any running virtual machine referencing this network filter will have
1105 its network traffic rules adapted. If for any reason the network traffic
1106 filtering rules cannot be instantiated by any of the running virtual
1107 machines, then the new XML will be rejected.
1109 =item B<nwfilter-undefine> I<nwfilter-name>
1111 Delete a network filter. The deletion will fail if any running virtual
1112 machine is currently using this network filter.
1114 =item B<nwfilter-list>
1116 List all of the available network filters.
1118 =item B<nwfilter-dumpxml> I<nwfilter-name>
1120 Output the network filter XML.
1122 =item B<nwfilter-edit> I<nwfilter-name>
1124 Edit the XML of a network filter.
1126 This is equivalent to:
1128  virsh nwfilter-dumpxml myfilter > myfilter.xml
1129  edit myfilter.xml
1130  virsh nwfilter-define myfilter.xml
1132 except that it does some error checking.
1133 The new network filter may be rejected due to the same reason as
1134 mentioned in I<nwfilter-define>.
1136 The editor used can be supplied by the C<$VISUAL> or C<$EDITOR> environment
1137 variables, and defaults to C<vi>.
1139 =back
1141 =head1 QEMU-SPECIFIC COMMANDS
1143 NOTE: Use of the following commands is B<strongly> discouraged.  They
1144 can cause libvirt to become confused and do the wrong thing on subsequent
1145 operations.  Once you have used this command, please do not report
1146 problems to the libvirt developers; the reports will be ignored.
1148 =over 4
1150 =item B<qemu-monitor-command> I<domain> I<command>
1152 Send an arbitrary monitor command I<command> to domain I<domain> through the
1153 qemu monitor.  The results of the command will be printed on stdout.
1155 =back
1157 =head1 ENVIRONMENT
1159 The following environment variables can be set to alter the behaviour
1160 of C<virsh>
1162 =over 4
1164 =item VIRSH_DEFAULT_CONNECT_URI
1166 The hypervisor to connect to by default. Set this to a URI, in the same
1167 format as accepted by the B<connect> option.
1169 =item VISUAL
1171 The editor to use by the B<edit> and related options.
1173 =item EDITOR
1175 The editor to use by the B<edit> and related options, if C<VISUAL>
1176 is not set.
1178 =item LIBVIRT_DEBUG=LEVEL
1180 Turn on verbose debugging of all libvirt API calls. Valid levels are
1182 =over 4
1184 =item * LIBVIRT_DEBUG=1
1186 Messages at level DEBUG or above
1188 =item * LIBVIRT_DEBUG=2
1190 Messages at level INFO or above
1192 =item * LIBVIRT_DEBUG=3
1194 Messages at level WARNING or above
1196 =item * LIBVIRT_DEBUG=4
1198 Messages at level ERROR or above
1200 =back
1202 For further information about debugging options consult C<http://libvirt.org/logging.html>
1204 =back
1206 =head1 BUGS
1208 Report any bugs discovered to the libvirt community via the mailing
1209 list C<http://libvirt.org/contact.html> or bug tracker C<http://libvirt.org/bugs.html>.
1210 Alternatively report bugs to your software distributor / vendor.
1212 =head1 AUTHORS
1214   Please refer to the AUTHORS file distributed with libvirt.
1216   Based on the xm man page by:
1217   Sean Dague <sean at dague dot net>
1218   Daniel Stekloff <dsteklof at us dot ibm dot com>
1220 =head1 COPYRIGHT
1222 Copyright (C) 2005, 2007-2010 Red Hat, Inc., and the authors listed in the
1223 libvirt AUTHORS file.
1225 =head1 LICENSE
1227 virsh is distributed under the terms of the GNU LGPL v2+.
1228 This is free software; see the source for copying conditions. There
1229 is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
1230 PURPOSE
1232 =head1 SEE ALSO
1234 L<virt-install(1)>, L<virt-xml-validate(1)>, L<virt-top(1)>, L<virt-mem(1)>, L<virt-df(1)>, L<http://www.libvirt.org/>
1236 =cut