virsh – manage virtual machines with libvirt

virsh command
virsh command

virsh is the command-line interface for managing virtual machines through libvirt (KVM, QEMU, Xen).

Synopsis

virsh [OPTIONS] COMMAND [ARGS]

Common Commands

CommandDescription
listList VMs
startStart VM
shutdownGraceful shutdown
destroyForce stop
rebootReboot VM
consoleConnect to console
defineCreate VM from XML
undefineRemove VM definition

Examples

List running VMs

$ virsh list
 Id   Name       State
--------------------------
 1    webserver  running
 2    database   running

List all VMs (including stopped)

$ virsh list --all

Start/stop VM

$ virsh start webserver
$ virsh shutdown webserver
$ virsh destroy webserver    # Force stop

Connect to console

$ virsh console webserver
# Ctrl+] to exit

VM info

$ virsh dominfo webserver
$ virsh domblklist webserver    # Disk info
$ virsh domiflist webserver     # Network info

Snapshots

$ virsh snapshot-create-as webserver snap1
$ virsh snapshot-list webserver
$ virsh snapshot-revert webserver snap1

VM Management

Create VM from XML

$ virsh define /path/to/vm.xml
$ virsh start vmname

Clone VM

$ virt-clone --original webserver --name webserver-clone --auto-clone

Delete VM

$ virsh destroy webserver
$ virsh undefine webserver --remove-all-storage

Tips

  • virt-manager: GUI alternative for easier management
  • Need libvirtd: Service must be running
  • User permissions: Add user to libvirt group
  • Console escape: Ctrl+] to exit console

See Also

Tutorials