KVM: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 92: Zeile 92:
  
 
* [[Domain-Administration]]
 
* [[Domain-Administration]]
 
=Domain-Administration=
 
{| border=1 cellpadding="2"
 
| Kommando
 
| Bedeutung
 
|-
 
| help
 
| Hilfe ausgeben
 
|-
 
| attach-device
 
| Gerät aus einer XML-Datei anhängen
 
|-
 
| attach-disk
 
| Plattengerät anhängen
 
|-
 
| attach-interface
 
| Netzwerkschnittstelle verbinden
 
|-
 
| autostart
 
| Eine Domain automatisch starten
 
|-
 
| capabilities
 
| Fähigkeiten
 
|-
 
| cd
 
| change the current directory
 
|-
 
| connect
 
| (Wieder)verbinden mit Hypervisor
 
|-
 
| console
 
| Verbindung mit der Gast-Konsole
 
|-
 
| cpu-baseline
 
| compute baseline CPU
 
|-
 
| cpu-compare
 
| compare host CPU with a CPU described by an XML file
 
|-
 
| create
 
| Eine Domain aus einer XML-Datei erstellen
 
|-
 
| start
 
| Eine (zuvor definierte) inaktive Domain starten
 
|-
 
| destroy
 
| Domain löschen
 
|-
 
| detach-device
 
| Gerät von einer XML-Datei lösen
 
|-
 
| detach-disk
 
| Plattengerät abtrennen
 
|-
 
| detach-interface
 
| Netzwerkschnittstelle abhängen
 
|-
 
| define
 
| Definiere (aber starte keine) Domain aus einer XML-Datei
 
|-
 
| domid
 
| Einen Domain-Namen oder -UUID in Domain-ID konvertieren
 
|-
 
| domuuid
 
| Einen Domain-Namen oder -ID in Domain-UUID konvertieren
 
|-
 
| dominfo
 
| Domain-Informationen
 
|-
 
| domjobinfo
 
| domain job information
 
|-
 
| domjobabort
 
| abort active domain job
 
|-
 
| domname
 
| Eine Domain-ID oder UUID in Domain-Namen konvertieren
 
|-
 
| domstate
 
| Domain-Status
 
|-
 
| domblkstat
 
| Geräteblockstatistiken für eine Domain abrufen
 
|-
 
| domifstat
 
| Statistiken der Netzwerkschnittstelle für eine Domain abrufen
 
|-
 
| 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-Informationen 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 freier Speicher
 
|-
 
| hostname
 
| Hypervisor-Hostname ausgeben
 
|-
 
| list
 
| Domains auflisten
 
|-
 
| migrate
 
| Domain auf anderen Host migrieren
 
|-
 
| migrate-setmaxdowntime
 
| set maximum tolerable downtime
 
|-
 
| net-autostart
 
| Ein Netzwerk automatisch starten
 
|-
 
| net-create
 
| Netzwerk aus einer XML-Datei erstellen
 
|-
 
| net-define
 
| Definiere (aber starte kein) Netzwerk aus einer XML-Datei
 
|-
 
| net-destroy
 
| Netzwerk löschen
 
|-
 
| net-dumpxml
 
| Netzwerk-Informationen in XML
 
|-
 
| net-edit
 
| edit XML configuration for a network
 
|-
 
| net-list
 
| Netzwerke auflisten
 
|-
 
| net-name
 
| Eine Netzwerk-UUID in einen Netzwerk-Namen konvertieren
 
|-
 
| net-start
 
| Ein (zuvor definiertes) inaktives Netzwerk starten
 
|-
 
| net-undefine
 
| Ein inaktives Netzwerk undefinieren
 
|-
 
| net-uuid
 
| Einen Netzwerk-Namen in eine Netzwerk-UUID konvertieren
 
|-
 
| 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
 
|-
 
| nodeinfo
 
| Knoteninformation
 
|-
 
| 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
 
| baue einen 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
 
| Zerstören eines Pools
 
|-
 
| pool-delete
 
| Pool löschen
 
|-
 
| pool-dumpxml
 
| Pool-Informationen in XML
 
|-
 
| pool-edit
 
| edit XML configuration for a storage pool
 
|-
 
| pool-info
 
| storage pool information
 
|-
 
| pool-list
 
| Poolliste
 
|-
 
| pool-name
 
| Konvertieren einer pool-UUID in einen Pool-Namen
 
|-
 
| pool-refresh
 
| Einen Pool aktualisieren
 
|-
 
| 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
 
| Dieses interaktive Terminal beenden
 
|-
 
| exit
 
| Dieses interaktive Terminal beenden
 
|-
 
| reboot
 
| Domain neu starten
 
|-
 
| restore
 
| Eine Domain aus einem gespeicherten Status in einer Datei wiederherstellen
 
|-
 
| resume
 
| Domain fortsetzen
 
|-
 
| save
 
| Einen Domainstatus in einer Datei speichern
 
|-
 
| schedinfo
 
| Scheduler-Parameter anzeigen/setzen
 
|-
 
| dump
 
| Den Kern einer Domain zu Analysezwecken in eine Datei dumpen
 
|-
 
| shutdown
 
| Kontrolliertes Stillegen einer Domain
 
|-
 
| setmem
 
| Speicherzuweisung ändern
 
|-
 
| setmaxmem
 
| Maximale Speichergrenze ändern
 
|-
 
| setvcpus
 
| Anzahl der virtuellen CPUs ändern
 
|-
 
| suspend
 
| Eine Domain anhalten
 
|-
 
| ttyconsole
 
| TTY-Konsole
 
|-
 
| undefine
 
| Eine inaktive Domain undefinieren
 
|-
 
| update-device
 
| update device from an XML file
 
|-
 
| uri
 
| Kanonisierte URI des Hypervisors ausgeben
 
|-
 
| 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
 
| Löschen eines Datenträgers
 
|-
 
| 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
 
| Domain vcpu-Affinität kontrollieren
 
|-
 
| version
 
| Version anzeigen
 
|-
 
| vncdisplay
 
| VNC-Anzeige
 
|-
 
| 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
 
|}
 
  
 
= Migration zu neuem Host =
 
= Migration zu neuem Host =

Version vom 26. Februar 2013, 09:37 Uhr

Installation

Vorbereitung

Testen ob VT Unterstützung der CPU vorhanden ist

egrep -c '(vmx|svm)' /proc/cpuinfo

0 bedeutet keine Unterstützung 1 (oder mehr) Unterstützung vorhanden

Basis Pakete

 apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils virtinst
 apt-get install ssh-askpass

Verifizieren der Installation

virsh -c qemu:///system list
Id Name                 Status
----------------------------------

Installation des Virtmanagers(GUI)

apt-get install virt-manager

Installation des Linux capabilities tools

apt-get install libcap2-bin

Vergeben der CAP_NET_ADMIN Fähigkeit

setcap cap_net_admin=ei /usr/bin/qemu-system-x86_64 
setcap cap_net_admin=ei /usr/bin/qemu-system-i386

Erlauben der Beerchtigung für den Adminuser

echo cap_net_admin  xinux >> /etc/security/capability.conf

Netzwerk mit Bridgefunktion

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

auto br0
iface br0 inet static
       address 192.168.240.101
       netmask 255.255.240.0
       gateway 192.168.240.100
       bridge_ports eth0
       bridge_stp off
       bridge_fd 1
       bridge_maxwait 12

Damit libvirt-bin automatisch start muss man in der Datei /etc/default/libvirt-bin die Option start_libvirtd auf "yes" setzen.

vi /etc/default/libvirt-bin
start_libvirtd="yes"

Domain-Installation

virt-install --connect qemu:///system --name orion --ram 1024 --disk path=/dev/data/orion \
--cdrom /isos/ubuntu-10.04-server-amd64.iso --vnc --noautoconsole  --os-type linux --accelerate --network=bridge:br0
name Name der Domain
disk Diese Images werden in die Domain eingebunden. Es können mehrere Disks eingebunden werden, sowie weitere Optionen getrennt mit Leerzeichen gemacht werden.
ram Zu Verfügung stehender Arbeitspeicher der Domain
os-type linux, windows, solaris etc.
os-variant ubuntukarmic, winxp etc.
hvm Gebraucht full virtualization.
accelerate Benutze kvm oder KQEMU, wenn vorhanden.
import Die Installation ist bereits im Disk-Image enthalten.
vnc Aktiviert VNC-Display und öffnete einen beliebigen Port >5000, falls nicht --vncport angegeben ist.
vncport Setzt den Port für VNC fest.

Handling

This command outputs the guest's XML configuration file to standard out (stdout). 
You can save the data by piping the output to a file. An example of piping the output to a file called guest.xml:
virsh dumpxml GuestID > guest.xml


Migration zu neuem Host

virsh migrate --live <GuestName> <DestinationURL>

Beispiel:

# virsh migrate --live galactica qemu+ssh://test2.example.com/system

Autostart

virsh atutostart <domain>
virsh atutostart <domain> --disable

An/Aus

Connecten auf Hypervisor

virsh -c qemu+ssh://SERVER/system

In Konsole eingeben

Zum starten:

start VM

Zum virtuellen Stecker rausziehn:

destroy VM

Nach Installation von acpid auf VM

Normales herunterfahren:

shutdown VM

Configure a Serial Console in the Guest

Enable on the VM

cat /etc/init/ttyS0.conf
# ttyS0 - getty
#
# This service maintains a getty on ttyS0 from the point the system is
# started until it is shut down again.

start on stopped rc RUNLEVEL=[2345]
stop on runlevel [!2345] 

respawn
exec /sbin/getty -L 115200 ttyS0 xterm

Run the following command to initiate the Serial Console (or restart the VM):

sudo start ttyS0

Connect on Host to VM

console VM

00:50:56:00:31:f9

Virtuelle MACAdresse vergeben

gaius=KVM server

virsh console XXXXXXX
VM:     cp /etc/udev/rules./70-persistent.net(cd).rules 70-persistent.net(cd).rules.orig
VM:     herunterfahren...
gaius:  vi /etc/libvirt/qemu/XXXXXX.xml

-> MAC eintragen

gaius:     virsh define XXXXXXXX
gaius:     virsh start XXXXXXXX

-> TESTEN

Images umwandeln

qemu-img convert {image_name}.qcow2 {image_name}.raw


snapshot

http://kashyapc.wordpress.com/2013/01/22/live-backup-with-external-disk-snapshots-and-libvirts-blockpull/ Huang Wenlong 2011-09-26 03:14:09 EDT

Verify it with libvirt-0.9.4-13.el6.x86_64


1. define a persistent domain named "snap"with qcow2 disks 2. create a snapshot for domain snap

  1. virsh snapshot-create snap

3. virsh # snapshot-list snap

Name                 Creation Time             State

1317020538           2011-09-26 15:02:18 +0800 shutoff

4.virsh # undefine snap error: Failed to undefine domain snap error: Requested operation is not valid: cannot delete inactive domain with 1 snapshots

5. virsh undefine --snapshots-metadata snap Domain snap has been undefined

4. check snapshot metadata (no metadata)

  1. ls /var/lib/libvirt/qemu/snapshot/snap

5. define a new domain with the same name, but different UUID 6. check snapshot for domain test:

  1. virsh snapshot-list snap
Name                 Creation Time             State

https://bugzilla.redhat.com/show_bug.cgi?id=735457

Links

qemu-monitor

http://blog.vmsplice.net/2011/03/how-to-access-qemu-monitor-through.html

Links