20130704

virsh basics ...

virsh notes

virsh version
# virsh -v
0.8.3


the system
# cat /etc/issue /etc/debian_version;uname -r
Debian GNU/Linux 6.0 \n \l

6.0.7
2.6.32-5-amd64


# egrep "vmx|svm" /proc/cpuinfo
flags  : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc rep_good nonstop_tsc extd_apicid pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt nodeid_msr
flags  : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc rep_good nonstop_tsc extd_apicid pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt nodeid_msr


the hypervisor
# virsh uri
qemu:///system

# lsmod |grep kvm
kvm_amd                31878  4 
kvm                   215455  1 kvm_amd


for more try
# virsh capabilities


A good way to start the virsh exploration
# virsh
Welcome to virsh, the virtualization interactive terminal.

Type:  'help' for help with commands
       'quit' to quit

virsh # help
Commands:

    help            print help
    attach-device   attach device from an XML file
    attach-disk     attach disk device
    attach-interface attach network interface
    autostart       autostart a domain
    capabilities    capabilities
    cd              change the current directory
    connect         (re)connect to hypervisor
    console         connect to the guest console
    cpu-baseline    compute baseline CPU
    cpu-compare     compare host CPU with a CPU described by an XML file
    create          create a domain from an XML file
    start           start a (previously defined) inactive domain
    destroy         destroy a domain
    detach-device   detach device from an XML file
    detach-disk     detach disk device
    detach-interface detach network interface
    define          define (but don't start) a domain from an XML file
    domid           convert a domain name or UUID to domain id
    domuuid         convert a domain name or id to domain UUID
    dominfo         domain information
    domjobinfo      domain job information
    domjobabort     abort active domain job
    domname         convert a domain id or UUID to domain name
    domstate        domain state
    domblkstat      get device block stats for a domain
    domifstat       get network interface stats for a domain
    dommemstat      get memory statistics for a domain
    domblkinfo      domain block device size information
    domxml-from-native Convert native config to domain XML
    domxml-to-native Convert domain XML to native config
    dumpxml         domain information in XML
    edit            edit XML configuration for a domain
    find-storage-pool-sources discover potential storage pool sources
    find-storage-pool-sources-as find potential storage pool sources
    freecell        NUMA free memory
    hostname        print the hypervisor hostname
    list            list domains
    migrate         migrate domain to another host
    migrate-setmaxdowntime set maximum tolerable downtime
    net-autostart   autostart a network
    net-create      create a network from an XML file
    net-define      define (but don't start) a network from an XML file
    net-destroy     destroy a network
    net-dumpxml     network information in XML
    net-edit        edit XML configuration for a network
    net-list        list networks
    net-name        convert a network UUID to network name
    net-start       start a (previously defined) inactive network
    net-undefine    undefine an inactive network
    net-uuid        convert a network name to network UUID
    iface-list      list physical host interfaces
    iface-name      convert an interface MAC address to interface name
    iface-mac       convert an interface name to interface MAC address
    iface-dumpxml   interface information in XML
    iface-define    define (but don't start) a physical host interface from an XML file
    iface-undefine  undefine a physical host interface (remove it from configuration)
    iface-edit      edit XML configuration for a physical host interface
    iface-start     start a physical host interface (enable it / "if-up")
    iface-destroy   destroy a physical host interface (disable it / "if-down")
    managedsave     managed save of a domain state
    managedsave-remove Remove managed save of a domain
    nodeinfo        node information
    nodedev-list    enumerate devices on this host
    nodedev-dumpxml node device details in XML
    nodedev-dettach dettach node device from its device driver
    nodedev-reattach reattach node device to its device driver
    nodedev-reset   reset node device
    nodedev-create  create a device defined by an XML file on the node
    nodedev-destroy destroy a device on the node
    nwfilter-define define or update a network filter from an XML file
    nwfilter-undefine undefine a network filter
    nwfilter-dumpxml network filter information in XML
    nwfilter-list   list network filters
    nwfilter-edit   edit XML configuration for a network filter
    pool-autostart  autostart a pool
    pool-build      build a pool
    pool-create     create a pool from an XML file
    pool-create-as  create a pool from a set of args
    pool-define     define (but don't start) a pool from an XML file
    pool-define-as  define a pool from a set of args
    pool-destroy    destroy a pool
    pool-delete     delete a pool
    pool-dumpxml    pool information in XML
    pool-edit       edit XML configuration for a storage pool
    pool-info       storage pool information
    pool-list       list pools
    pool-name       convert a pool UUID to pool name
    pool-refresh    refresh a pool
    pool-start      start a (previously defined) inactive pool
    pool-undefine   undefine an inactive pool
    pool-uuid       convert a pool name to pool UUID
    secret-define   define or modify a secret from an XML file
    secret-dumpxml  secret attributes in XML
    secret-set-value set a secret value
    secret-get-value Output a secret value
    secret-undefine undefine a secret
    secret-list     list secrets
    pwd             print the current directory
    quit            quit this interactive terminal
    exit            quit this interactive terminal
    reboot          reboot a domain
    restore         restore a domain from a saved state in a file
    resume          resume a domain
    save            save a domain state to a file
    schedinfo       show/set scheduler parameters
    dump            dump the core of a domain to a file for analysis
    shutdown        gracefully shutdown a domain
    setmem          change memory allocation
    setmaxmem       change maximum memory limit
    setvcpus        change number of virtual CPUs
    suspend         suspend a domain
    ttyconsole      tty console
    undefine        undefine an inactive domain
    update-device   update device from an XML file
    uri             print the hypervisor canonical URI
    vol-create      create a vol from an XML file
    vol-create-from create a vol, using another volume as input
    vol-create-as   create a volume from a set of args
    vol-clone       clone a volume.
    vol-delete      delete a vol
    vol-wipe        wipe a vol
    vol-dumpxml     vol information in XML
    vol-info        storage vol information
    vol-list        list vols
    vol-pool        returns the storage pool for a given volume key or path
    vol-path        returns the volume path for a given volume name or key
    vol-name        returns the volume name for a given volume key or path
    vol-key         returns the volume key for a given volume name or path
    vcpuinfo        domain vcpu information
    vcpupin         control domain vcpu affinity
    version         show version
    vncdisplay      vnc display
    snapshot-create Create a snapshot
    snapshot-current Get the current snapshot
    snapshot-delete Delete a domain snapshot
    snapshot-dumpxml Dump XML for a domain snapshot
    snapshot-list   List snapshots for a domain
    snapshot-revert Revert a domain to a snapshot

virsh # 



set a domain --guest host-- to autostart by the libvirt daemon
# virsh autostart 2
Domain 2 marked as autostarted

verify-check if a guest is set to Autostart
# virsh dominfo 2 |grep -i auto
Autostart:      enable

and
# ls /etc/libvirt/qemu/autostart/
before taking the time to read carefully and look around a bit more, I used to set autostart with `virsh start domain` cronjobs.

view domain information and create xml configuration files
# virsh dumpxml vm0
it prints the xml configuration to stdout

The kvm-qemu guest hosts xml configuration files are in /etc/libvirt/qemu/ on Debian systems.

# virsh dominfo vm0
Id:             -
Name:           vm0
UUID:           7337798a-ae00-efb4-7790-259c168f764b
OS Type:        hvm
State:          shut off
CPU(s):         2
Max memory:     524288 kB
Used memory:    524288 kB
Persistent:     yes
Autostart:      disable


Display the guest hosts list
 
# virsh list --all
 Id Name                 State
----------------------------------
  2 vm2                  running
  - vm0                  shut off
  - vm1                  shut off



Display Virtual CPU information
# virsh vcpuinfo 2
VCPU:           0
CPU:            0
State:          running
CPU time:       1219.9s
CPU Affinity:   yy

VCPU:           1
CPU:            1
State:          running
CPU time:       1040.8s
CPU Affinity:   yy


# virsh vcpuinfo vm0
error: Domain shut off, virtual CPUs not present.
error: Requested operation is not valid: cannot list vcpu pinning for an inactive domain


Create a guest from an xml configuration file
# virsh create vm0.xml
to create an xml configuration file from an existing guest
# virsh dumpxml vm0 > vm0.xml


Start a guest host
# virsh start vm0
Domain vm0 started



Reboot a guest host
# virsh reboot vm0
error: Failed to reboot domain vm0
error: this function is not supported by the connection driver: virDomainReboot
not supported for kvm on version 0.8.3

Shutdown a guest host
# virsh shutdown vm0
Domain vm0 is being shutdown

Check
# virsh list --all
 Id Name                 State
----------------------------------
  2 vm2                  running
  3 vm0                  running
  - vm1                  shut off
vm0 is still running, it does not work always

Terminate a guest host
# virsh destroy vm0
Domain vm0 destroyed

An immediate ungraceful shutdown.
Check
# virsh list --all
 Id Name                 State
----------------------------------
  2 vm2                  running
  - vm0                  shut off
  - vm1                  shut off



Useful URLs:
Virsh Command Reference
centos manual virsh
Debian on Debian KVM