Benutzer-Werkzeuge

Webseiten-Werkzeuge


libvirt

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
libvirt [2020-11-25 10:59:33] – [Virsh-Parameter im Überblick] manfredlibvirt [2020-11-25 17:06:18] (aktuell) – [libvirt] manfred
Zeile 1: Zeile 1:
 +====== libvirt ======
 +
 +  * [[http://libvirt.org/virshcmdref.html]]
 +  * [[https://help.ubuntu.com/lts/serverguide/libvirt.html]]
 +  * [[https://help.ubuntu.com/community/KVM/Virsh]]
 +  * [[https://help.ubuntu.com/community/KVM/Networking]]
 +
 +Das Kommandozeilenwerkzeug Virsh des libvirt Toolkits dient zur Verwaltung von virtuellen Maschinen. Es unterstützt dabei zahlreiche Virtualisierungstechnologien, darunter KVM, Hyper-V, VMware, LXC oder Xen.
 +
 +
 +===== Virsh-Parameter im Überblick =====
 +
 +[[https://www.thomas-krenn.com/de/wiki/Virsh_-_Kommandozeilenwerkzeug_zur_Verwaltung_virtueller_Maschinen|Virsh - Kommandozeilenwerkzeug zur Verwaltung virtueller Maschinen]]
 +
 +^ Virsh-Parameter                          ^ Erklärung  ^
 +| list -****-all                           | Listet alle virtuellen Maschinen auf  |
 +| list -****-inactive                      | Listet alle inaktiven virtuellen Maschinen auf  |
 +| dominfo <VM-Bezeichnung>                 | Ausgabe aller Informationen zur virtuellen Maschine  |
 +| nodeinfo                                 | Liefert Informationen zum KVM-Host (linux-magazin schreibt Gastsystem)  |
 +| start <VM-Bezeichnung>                   | Startet die virtuelle Maschine  |
 +| shutdown <VM-Bezeichnung>                | Fährt die VM ordentlich herunter  |
 +| destroy <VM-Bezeichnung>                 | Schaltet die VM einfach aus  |
 +| suspend <VM-Bezeichnung>                 | Pausiert die virtuelle Maschine / Ruhemodus  |
 +| resume <VM-Bezeichnung>                  | Die VM wird fortgesetzt / aufwecken aus dem Ruhemodus  |
 +| console <VM-Bezeichnung>                 | Die Konsolenausgabe der VM wird gestartet  |
 +| dumpxml <VM-Bezeichnung>                 | Die XML-Konfigurationsdatei der angegebenen VM wird auf der Standardausgabe ausgegeben  |
 +| create vm.xml                            | Eine neue VM wird auf Basis der übergebenen XML-Datei erstellt  |
 +| undefine <VM-Bezeichnung>                | Die angegebene VM wird gelöscht, die virtuelle Festplatte verbleibt aber im Datenspeicher  |
 +| setmem <VM-Bezeichnung> <Speichergröße>  | Die RAM-Größe anpassen  |
 +| setvcpus <VM-Bezeichnung> <Anzahl-CPUs>  | Anzahl die CPUs anpassen  |
 +| migrate <VM-Bezeichnung> <URI>           | Eine Migration der VM zum Host mit dessen angegebener URI wird durchgeführt  |
 +
 +^  Verbindungsmöglichkeiten mit Virsh            ^^
 +^ URI                               ^ Hypervisor  ^
 +| lxc:/____/____/                   | LXC  |
 +| **qemu:/____/____/system**        | **Qemu/KVM**  |
 +| xen:/____/____/                   | Xen  |
 +| openvz:/____/____/system          | OpenVZ  |
 +| vbox:/____/____/session           | VirtualBox  |
 +| hyperv:/____/____/<example.com>   | Microsoft Hyper-V  |
 +| esx:/____/____/<example.com>      | VMware ESX-Server  |
 +| gsx:/____/____/<example.com>      | VMware GSX  |
 +| vmwareplayer:/____/____/session   | VMware Player  |
 +| vmwarews:/____/____/session       | VMware Workstation  |
 +
 +^  Verbindung per Virsh  ^^
 +^ URI                                                     ^ Protokoll      ^
 +| **virsh -c qemu+ssh:/____/<USER>@<IP-Adresse>/system**  | **SSH**        |
 +| virsh -c qemu:/____/<USER>@<IP-Adresse>/system          | TLS/x509       |
 +| virsh -c qemu+tcp:/____/<USER>@<IP-Adresse>/system      | SASl/Kerberos  |
 +
 +
 +===== Installation einer VM auf einem Linux-Ubuntu-Host =====
 +
 +[[https://raymii.org/s/articles/virt-install_introduction_and_copy_paste_distro_install_commands.html]]
 +
 +
 +==== CentOS 7 - Gast ====
 +
 +<file>
 +virt-install \
 +--name centos7 \
 +--ram 1024 \
 +--disk path=./centos7.qcow2,size=8 \
 +--vcpus 1 \
 +--os-type linux \
 +--os-variant centos7 \
 +--network bridge=virbr0 \
 +--graphics none \
 +--console pty,target_type=serial \
 +--location 'http://mirror.i3d.net/pub/centos/7/os/x86_64/' \
 +--extra-args 'console=ttyS0,115200n8 serial'
 +</file>
 +
 +
 +==== FreeBSD 10.1 - Gast ====
 +
 +  > wget http://ftp.freebsd.org/pub/FreeBSD/releases/ISO-IMAGES/10.1/FreeBSD-10.1-RELEASE-amd64-dvd1.iso
 +
 +<file>
 +virt-install \
 +--name freebsd10 \
 +--ram 1024 \
 +--disk path=./freebsd10.qcow2,size=8 \
 +--vcpus 1 \
 +--os-type generic \
 +--os-variant generic \
 +--network bridge=virbr0 \
 +--graphics vnc,port=5999 \
 +--console pty,target_type=serial \
 +--cdrom ./FreeBSD-10.1-RELEASE-amd64-dvd1.iso
 +</file>
 +
 +
 +==== Ubuntu 14.04 - Gast ====
 +
 +  * [[https://wiki.ubuntuusers.de/virsh/]]
 +  * [[https://wiki.ubuntuusers.de/virt-manager/]]
 +  * [[https://help.ubuntu.com/lts/serverguide/libvirt.html.de]]
 +  * [[https://www.packet.com/developers/guides/kvm-and-libvirt/]]
 +
 +  > apt install bridge-utils virtinst libvirt-clients qemu-kvm libvirt-bin virt-manager
 +
 +__Jetzt muss sich der entsprechende (unprivilegierte) Benutzer neu anmelden, damit die Aufnahme in die Gruppe ''libvirt'' wirksam wird.__
 +
 +  > virt-install -n web_devel -r 256 --disk path=/var/lib/libvirt/images/web_devel.img,bus=virtio,size=4 -c ubuntu-14.04-server-i386.iso --network network=default,model=virtio --graphics vnc,listen=0.0.0.0 --noautoconsole -v
 +
 +Das Paket virt-manager enthält ein grafisches Werkzeug, um lokale und entfernte virtuelle Maschinen zu verwalten. Geben Sie folgendes ein, um virt-manager zu installieren:
 +  > aptitude install virt-manager
 +
 +Da virt-manager eine grafische Benutzeroberfläche erfordert, sollte es auf einer Workstation oder einer Testmaschine anstatt eines Servers installiert werden. Um sich mit dem lokalen libvirt-Dienst zu verbinden, geben Sie folgendes ein:
 +  > virt-manager
 +  > virt-manager -c qemu:///system
 +
 +Es sollten diese Einstellungen vorgenommen werden:
 +  * Anzeige Spice (Standard)
 +  * Video VGA (Standard ist "QXL")
 +  * //Audio kann entfernt werden//
 +
 +Sie können sich mit folgender Befehlszeileneingabe mit dem auf einem anderen Host laufenden libvirt-Dienst verbinden (hier muss der passwortlose SSH-Login möglich sein, siehe: [[SSH-Schlüssel austauschen für ein passwortlosen Login]]):
 +  > virt-manager -c qemu+ssh://virtnode1.mydomain.com/system
 +
 +
 +=== LibVirt-Netzwerk ===
 +
 +  * [[https://wiki.libvirt.org/page/Networking#Debian.2FUbuntu_Bridging]]
 +
 +  > vi /etc/libvirt/qemu/networks/br-ext.xml
 +
 +  > virsh net-list 
 +   Name                 State      Autostart     Persistent
 +  ----------------------------------------------------------
 +   br-ext               active     yes           yes
 +
 +  > virsh net-list --all
 +   Name                 State      Autostart     Persistent
 +  ----------------------------------------------------------
 +   br-ext               active     yes           yes
 +   default              inactive   no            yes
 +
 +Es gibt mehrere Möglichkeiten, später die virtuelle Maschine mit ein realen Netzwerk / Internet zu verbinden. Per Voreinstellung setzt VMM ein virtuelles Netzwerk im Adressraum 192.168.122.0/24 ein, dass per NAT mit der realen Netzwerkkarte verbunden ist. Mit dieser Konfiguration kann jede virtuelle Maschine ins Internet, es sind keine weiteren Schritte notwendig.
 +
 +Grundsätzlich besteht auch die Möglichkeit, dass die virtuelle Maschine sich per Bridge direkt in das reale Netzwerk einklinkt. Dazu muss aber zuerst die Bridge eingerichtet werden, was etwas Handarbeit erfordert. Ein entsprechende Anleitung findet man im Englischen Wiki [[https://wiki.ubuntu.com/KvmWithBridge|KvmWithBridge]] oder auch im [[http://wiki.libvirt.org/page/Networking#Debian.2FUbuntu_Bridging|libvirt-Wiki]].
 +
 +
 +===== Start/Stop =====
 +
 +VM **stoppen**:
 +  root@vmhost01:# virsh shutdown vmgast01
 +
 +nach dem stoppen muss die VM erst wieder "**definiert**" werden:
 +  root@vmhost01:# virsh define  /etc/libvirt/qemu/vmgast01.xml
 +  Domain vmgast01 defined from /etc/libvirt/qemu/vmgast01.xml
 +
 +...jetzt steht sie wieder in der **Liste** drin:
 +  root@vmhost01:# virsh  list --all
 +   Id    Name                           State
 +  ----------------------------------------------------
 +   25    vmtest01                       running
 +       vmgast01                       shut off
 +
 +...dann kann man die VM wieder **starten**:
 +  root@vmhost01:# virsh start vmgast01
 +  Domain vmgast01 started
 +  
 +  root@vmhost01:# virsh  list --all
 +   Id    Name                           State
 +  ----------------------------------------------------
 +   25    vmtest01                       running
 +   27    vmgast01                       running
 +
 +in der VM alles entfernen, was individuel ist; die SSH-Host-Keys werden nur bei der SSH-Installation angelegt und SSH wird durch "cloud-init" per Standard wieder installiert:
 +  root@vmgast01:# userdel -r ubuntu
 +  root@vmgast01:# apt -y purge openssh-server
 +  root@vmgast01:# exit
 +
 +VM anhalten
 +  root@vmhost01:# virsh stop vmgast01
 +
 +Reset, unconfigure or customize
 +  root@vmhost01:# virt-sysprep -d vmgast01
 +
 +Reset, unconfigure or customize von einer Auswahl, nicht alle
 +  root@vmhost01:# virt-sysprep --enable $(virt-sysprep --list-operations | awk '{print $1}' | egrep -v 'fs-uuids|lvm-uuids|user-account' | tr -s '\n' ',' | sed 's/[,]$//') -d vmgast01
 +
 +
 +===== Fehler mit virt-install =====
 +
 +  > virt-install --virt-type kvm --name linux --ram 2048 --cdrom=ubuntu-18.04.1-server-amd64.iso --disk /tmp/linux.qcow2,format=qcow2 --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type=linux --os-variant=ubuntu17.10
 +  Installation wird gestartet …
 +  ERROR    internal error: process exited while connecting to monitor: 2018-10-31T15:45:33.829160Z qemu-system-x86_64: -drive file=/tmp/linux.qcow2,format=qcow2,if=none,id=drive-virtio-disk0: Could not open '/tmp/linux.qcow2': Permission denied
 +  Installation der Domäne scheint nicht erfolgreich gewesen zu sein..
 +
 +**__Lösung__**:
 +  > virt-install --virt-type kvm --name linux --ram 2048 --cdrom=ubuntu-18.04.1-server-amd64.iso --disk /var/lib/libvirt/images/linux.qcow2,format=qcow2 --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type=linux --os-variant=ubuntu17.10
 +
 +Das HDD-Image muss im richtigen Pfad liegen, sonst verhindert AppArmor den Zugriff.
 +
 +**__Start-Skript:__**
 +<file bash libvirt-Test.sh>
 +#!/bin/bash
 +
 +
 +
 +OS_VAR="ubuntu17.10"
 +NAME="bionic"
 +RAM="2048"
 +
 +IMG="/var/lib/libvirt/images/${NAME}.qcow2"
 +ISO="/var/tmp/ISO/ubuntu-18.04.1-server-amd64.iso"
 +
 +rm -f ${IMG}
 +qemu-img create -f qcow2 ${IMG} 10G
 +chmod 0664 ${IMG}
 +virt-install --virt-type kvm --name ${NAME} --ram ${RAM} --cdrom=${ISO} --disk ${IMG},format=qcow2 --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type=linux --os-variant=${OS_VAR}
 +
 +ls -lha ${IMG}
 +</file>
 +
 +
 +===== Installation einer VM auf einem FreeBSD-Host =====
 +
 +  * [[https://libvirt.org/drvbhyve.html|libvirt mit Bhyve-Treiber]]
 +