KVM
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
aptitude install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils virtinst
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 0
bridge_maxwait 0
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.
--accelearte 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.
Domain-Administration
| 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
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