Many virtualization host servers will run Linux without a graphical user interface. Such a configuration enables more hardware resources to be available to the virtual machines. Management of the virtual machines must then occur at the command-line. The virsh command is an interactive shell to KVM virtual machines. The following are some subcommands you can use within virsh.
Option | Used To |
---|---|
help | Get help with the virsh command. |
list | Get a list of recognized VMs. |
shutdown {VM} | Gracefully shut down a VM. |
start {VM} | Start a VM. |
reboot {VM} | Reboot a VM. |
create {XML file name} | Create a VM from an XML file. |
save {VM} {file name} | Save the state of a VM with the given file name. |
console {VM} | Open a console to a VM. |
Linux virtualization solutions are built on top of libvirt, an application programming interface (API) that provides the software building blocks for developers to write their own virtualization solutions. Solutions can also be composed of a daemon and a management interface. Several hypervisors, including VMware ESXi, KVM, QEMU, etc., are all built using libvirt. It provides a solid foundation for Linux-based virtualization. For example, the virsh tool is a part of the libvirt API.
If you encounter the below error while running the virsh command:
virsh: command not found
you may try installing the below command as per your choice of distribution:
OS Distribution | Command |
---|---|
OS X | brew install libvirt |
Debian | apt-get install libvirt-bin |
Ubuntu | apt-get install libvirt-bin |
Alpine | apk add libvirt |
Arch Linux | pacman -S libvirt |
Kali Linux | apt-get install libvirt-clients |
CentOS | yum install libvirt-client |
Fedora | dnf install libvirt-client |
Raspbian | apt-get install libvirt0-dbg |
virsh Command Examples
1. Connect to a hypervisor session:
# virsh connect qemu:///system
2. List all domains:
# virsh list --all
3. Dump guest configuration file:
# virsh dumpxml guest_id > path/to/guest.xml
4. Create a guest from a configuration file:
# virsh create path/to/config_file.xml
5. Edit a guest’s configuration file (editor can be changed with $EDITOR):
# virsh edit guest_id
6. Start/reboot/shutdown/suspend/resume a guest:
# virsh command guest_id
7. Save the current state of a guest to a file:
# virsh save guest_id filename
8. Delete a running guest:
# virsh destroy guest_id && virsh undefine guest_id