Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
centos:kvm:admin [03.08.2011 09:49. ] – [Snapshoot eines vHOSTs speichern] ergänzt django | centos:kvm:admin [17.12.2022 13:03. ] (aktuell) – [vHOST anlegen mit virt-install] django | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== Administration der vHOSTs ====== | ||
+ | Für die Administration unserer vHOSTs stehen uns mehrere Wege und Mittel zur Verfügung. | ||
+ | ===== Virtual Machine Viewer ===== | ||
+ | Möchten wir nur kurz Zugriff auf eine Maschine, so muss nicht unbedingt der [[http:// | ||
+ | |||
+ | So kann man z.B. einem Nutzer nur Zufgriff auf eine Maschine geben und muss diesen nicht über den [[http:// | ||
+ | |||
+ | Aufgerufen wird der **Virtual Machine Viewer** z.B. über folgenden Aufruf: | ||
+ | # virt-viewer --connect qemu:/// | ||
+ | Dabei verbindet sich der **Viewer** auf den vHOST **// | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Natürlich können wir uns auch von remote mit der virtuellen Maschine verbinden. Hierzu **muss** der Nutzer mit den administrativen Rechten auf dem Virtualisierungs-Host der Gruppe **'' | ||
+ | # getent group libvirt | ||
+ | |||
+ | libvirt: | ||
+ | |||
+ | Wir weisen also der Gruppe **'' | ||
+ | # usermod -aG libvirt django | ||
+ | |||
+ | Auf dem Administrationsrechner installieren wir das Paket **'' | ||
+ | # dnf install virt-viewer -y | ||
+ | |||
+ | $ sudo apt install virt-viewer -y | ||
+ | |||
+ | # zyppr in virt-viewer -y | ||
+ | |||
+ | Nun können wir uns mit der virtuellen-Maschine des Virtualisierungssystem verbinden. In folgendem Beispiel verbindet sich der Admin **'' | ||
+ | $ virt-viewer --connect qemu+ssh:// | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | ===== Virtual Machine Manager ===== | ||
+ | ==== Autostart eines vHOST aktivieren ==== | ||
+ | Soll ein vHOSt nach dem Boten des Wirt-Systems automatisch gestartet werden, so ist der vHOST auf **Autostart** zu stellen. Hierzu öffnet man die **__Detailansicht der virtuellen Hardware__** des betreffenden vHOSTs. Unter dem Menüpunkt **Boot Options** verbirgt sich die Checkbox **[Virt__u__elle Maschine beim Start des Host starten]**. Soll der vHOST automatisch starten, so ist diese Checkbox einfach anzuwählen und die Konfiguration des Autostarts über die Schaltfläche **[An__w__enden]** fertig zu stellen. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | ==== vHOST ein-/ | ||
+ | Möchten wir einen vHOST herunterfahren, | ||
+ | |||
+ | {{ : | ||
+ | ==== vHOST Klonen ==== | ||
+ | Mit Hilfe des **Virtual Machine Managers** können wir sehr einfach und leicht, Duplikate einer bestehenden Installation | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Das betreffende [[http:// | ||
+ | |||
+ | # ll / | ||
+ | | ||
+ | | ||
+ | |||
+ | Die Konfiguration unseres ersten vHOST befindet sich im Ordner // | ||
+ | |||
+ | # ll / | ||
+ | | ||
+ | |||
+ | <file XML / | ||
+ | <domain type=' | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | <os> | ||
+ | <type arch=' | ||
+ | <boot dev=' | ||
+ | </os> | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | <clock offset=' | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | <disk type=' | ||
+ | <driver name=' | ||
+ | <source file='/ | ||
+ | <target dev=' | ||
+ | <address type=' | ||
+ | </ | ||
+ | <disk type=' | ||
+ | <driver name=' | ||
+ | <target dev=' | ||
+ | < | ||
+ | <address type=' | ||
+ | </ | ||
+ | < | ||
+ | <address type=' | ||
+ | </ | ||
+ | < | ||
+ | <mac address=' | ||
+ | <source network=' | ||
+ | <model type=' | ||
+ | <address type=' | ||
+ | </ | ||
+ | <serial type=' | ||
+ | <target port=' | ||
+ | </ | ||
+ | <console type=' | ||
+ | <target port=' | ||
+ | </ | ||
+ | <input type=' | ||
+ | <input type=' | ||
+ | < | ||
+ | <sound model=' | ||
+ | <address type=' | ||
+ | </ | ||
+ | < | ||
+ | <model type=' | ||
+ | <address type=' | ||
+ | </ | ||
+ | < | ||
+ | <address type=' | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Im nachfolgenden Beispiel werden wir den vorhandenen ersten vHOST klonen. Hierzu schalten wir diesen erst einam über den **Virtual Machine Managers** aus. Mit einem Klick mit der rechten Maustaste öffnet sich der Dialog, wo wir die Option zum **__K__lonen** eines Systemes finden. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Im folgendem Fenster werden wir gebeten, den Namen und den Speicherort anzugeben. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Nach dem Anwählen der Schaltfläche **[__K__lonen]** wird eine Kopie unseres vHOST angefertigt. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Zum Schluß finden wir im **Virtual Machine Managers** auch unseren zweiten vHOST. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Im Image-Verzeichmis findedn wir nun zwei QCOW2-Files, | ||
+ | |||
+ | # ll / | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Auch im Konfigurationsverzeichnis finden wor die beiden zugehörigen XML-Konfigurationsdateien. | ||
+ | |||
+ | # ll / | ||
+ | | ||
+ | | ||
+ | ==== vHOST Löschen ==== | ||
+ | Möchten wir einen vHOST löschen so klicken wir im **Virtual Machine Manager** einfach mit der rechten Maustaste auf den betreffenden vHOST. Dort finden wir den Menüpunkt **[__L__öschen]** | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Mit der Checkbox **[Zugehörige D__a__teien löschen]** haben wir die Möglichkeit nicht nur die XML-Konfigurationsdatei im Verzeichnis // | ||
+ | |||
+ | {{ : | ||
+ | ===== SPICE ===== | ||
+ | Eine sehr interessante Alternative zum **virt-mananger** ist [[http:// | ||
+ | ==== Server ==== | ||
+ | === Installation === | ||
+ | Falls noch nicht bei der Grundinstallation erfolgt, installieren wir das RPM-Paket **spice-server** auf unserem Wirt-System. | ||
+ | # yum install spice-server -y | ||
+ | === Konfiguration === | ||
+ | Zur Konfiguration unseres vHOSTs verwenden wir am besten die Option //edit// von **virsh**. Zuvor beenden wir aber erst noch unsere virtuelle Maschine. | ||
+ | # virsh shutdown vml010008 | ||
+ | |||
+ | Anschließend bearbeiten wir die zum vHOST passende XML-Konfigurationsdatei. | ||
+ | # virsh edit vml010008 | ||
+ | |||
+ | Ein standardmäßiges XML-File eines vHOSTs, welches wir mit Hilfe von **virt-manager** erzeugt haben, sieht exemplarisch wie folgt aus. | ||
+ | <code XML> | ||
+ | <domain type=' | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | <os> | ||
+ | <type arch=' | ||
+ | <boot dev=' | ||
+ | </os> | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | <clock offset=' | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | <disk type=' | ||
+ | <driver name=' | ||
+ | <source file='/ | ||
+ | <target dev=' | ||
+ | <address type=' | ||
+ | </ | ||
+ | <disk type=' | ||
+ | <driver name=' | ||
+ | <target dev=' | ||
+ | < | ||
+ | <address type=' | ||
+ | </ | ||
+ | < | ||
+ | <address type=' | ||
+ | </ | ||
+ | < | ||
+ | <mac address=' | ||
+ | <source bridge=' | ||
+ | <address type=' | ||
+ | </ | ||
+ | <serial type=' | ||
+ | <target port=' | ||
+ | </ | ||
+ | <console type=' | ||
+ | <target port=' | ||
+ | </ | ||
+ | <input type=' | ||
+ | <input type=' | ||
+ | < | ||
+ | <sound model=' | ||
+ | <address type=' | ||
+ | </ | ||
+ | < | ||
+ | <model type=' | ||
+ | <address type=' | ||
+ | </ | ||
+ | < | ||
+ | <address type=' | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | Folgende Zeilen des XML-Files passen wir nun an: | ||
+ | * **< | ||
+ | * **<model type=' | ||
+ | |||
+ | Anstatt dem **graphics type=' | ||
+ | * **< | ||
+ | |||
+ | Bei der Definition der Graphikkarte tauschen wir den **model type=' | ||
+ | * **<model type=' | ||
+ | |||
+ | Das XML-File unseres exemplarischen vHOSTs lautet somit: | ||
+ | <code XML> | ||
+ | <domain type=' | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | <os> | ||
+ | <type arch=' | ||
+ | <boot dev=' | ||
+ | </os> | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | <clock offset=' | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | <disk type=' | ||
+ | <driver name=' | ||
+ | <source file='/ | ||
+ | <target dev=' | ||
+ | <address type=' | ||
+ | </ | ||
+ | <disk type=' | ||
+ | <driver name=' | ||
+ | <target dev=' | ||
+ | < | ||
+ | <address type=' | ||
+ | </ | ||
+ | < | ||
+ | <address type=' | ||
+ | </ | ||
+ | < | ||
+ | <mac address=' | ||
+ | <source bridge=' | ||
+ | <address type=' | ||
+ | </ | ||
+ | <serial type=' | ||
+ | <target port=' | ||
+ | </ | ||
+ | <console type=' | ||
+ | <target port=' | ||
+ | </ | ||
+ | <input type=' | ||
+ | <input type=' | ||
+ | < | ||
+ | <sound model=' | ||
+ | <address type=' | ||
+ | </ | ||
+ | < | ||
+ | <model type=' | ||
+ | <address type=' | ||
+ | </ | ||
+ | < | ||
+ | <address type=' | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | Abschließend brauchen wir nun nur noch unsere virtuelle Maschine zu starten | ||
+ | # virsh start vml010008 | ||
+ | ==== Client ==== | ||
+ | === Installation === | ||
+ | Auf Seite unseres CentOS 6.x Clients benötigen wir nun das RPM-Paket **spice-client** auf unserem Arbeitsplatzrechner. | ||
+ | # yum install spice-client -y | ||
+ | === Programmaufruf === | ||
+ | Möchten wir uns nun mit unserem vHost verbinden benutzen wir folgende Befehlsfolge. | ||
+ | |||
+ | $ spicec -h virtualisierungshost.intra.nausch.org -p 5930 -w nerdbert-ist-doof! | ||
+ | |||
+ | Die Optionen haben hierbei folgende Bewandnis: | ||
+ | * **-h** Hostname oder IP-Adresse des Wirt-Systems | ||
+ | * **-p** gewählter Port, den wir bei der Serverkonfiguration gewählt hatten | ||
+ | * **-w** Passwort für den Zufgriff auf die virtuelle Maschine. | ||
+ | |||
+ | Im folgenden Beispiel erfolgt die Anzeige der virtuellen Maschine im SPICE-Fenster und die Audiodaten werden von der virtuellen Maschien zum realen Host übertragen und dort über die Soundkarte ausgegeben. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | ===== Management mit virsh ===== | ||
+ | Natürlich kann man auch die Administration auf Konsolebene durchführen und ist nicht zwingend auf die GUI **Virtual Machine Manager** angewiesen. | ||
+ | Nachfolgend gehen wir auf die wichtigsten Befehle von **virsh** ein. | ||
+ | ==== Liste aller laufenden vHOSTs ==== | ||
+ | Eine Aufstellung aller gerade laufenden vHOSTs bekommt man mnit der Option //list//. | ||
+ | # virsh list | ||
+ | < | ||
+ | ---------------------------------- | ||
+ | 4 vHOST_7 | ||
+ | 5 vHOST_3 | ||
+ | 7 vHOST_8 | ||
+ | 8 vHOST_2 | ||
+ | 9 vHOST_9 | ||
+ | 10 vHOST_1 | ||
+ | |||
+ | ==== Liste aller vHOSTs ==== | ||
+ | Möchte man eine Übersicht aller Gäste, also die gerade Laufen und welche die heruntergefahren oder pausiert wurden, ergänzt man die vorgenannte Option einfach auf //list --all//. | ||
+ | # virsh list --all | ||
+ | < | ||
+ | ---------------------------------- | ||
+ | 4 vHOST_7 | ||
+ | 5 vHOST_3 | ||
+ | 7 vHOST_8 | ||
+ | 8 vHOST_2 | ||
+ | 9 vHOST_9 | ||
+ | 10 vHOST_1 | ||
+ | - CentOS_6_minimal_Desktop ausschalten | ||
+ | - vHOST_4 | ||
+ | - vHOST_5 | ||
+ | - vHOST_6 | ||
+ | </ | ||
+ | ==== Starten eines vHOSTs ==== | ||
+ | Zum Starten eines vHOSTs benötigt man die Option //start//. | ||
+ | # virsh start vHOST_5 | ||
+ | |||
+ | | ||
+ | ==== Anhalten eines vHOSTs ==== | ||
+ | Will man hingegen ein Gast-System " | ||
+ | # virsh suspend vHOST_1 | ||
+ | |||
+ | | ||
+ | ==== angehaltenen vHOST fortsetzen ==== | ||
+ | Einen zuvor angehaltenen vHOST versetzt man mit der Option //resume// wieder in den Produktionsbetrieb. | ||
+ | # virsh resume vHOST_8 | ||
+ | |||
+ | | ||
+ | ==== Shutdown eines vHOSTs ==== | ||
+ | Zum kontrollierten Stillegen (shutdown) eines vHOSTs benutzt man einfach die Option // | ||
+ | # virsh shutdown vHOST_7 | ||
+ | |||
+ | | ||
+ | ==== Poweroff eines vHOSTs ==== | ||
+ | Bei einem normalen Rechner/ | ||
+ | Bei unserer Virtualisierungsumgebung haben können wir auch das imaginäre Steckernetzteilkabel ziehen, hierzu benötigen wir die Option **'' | ||
+ | <WRAP round alert> | ||
+ | |||
+ | Es erfolgt keinerlei Warnung bei der Aktion! </ | ||
+ | # virsh destroy vHOST_9 | ||
+ | |||
+ | | ||
+ | ==== Konfiguration eines vHOSTs editieren ==== | ||
+ | Will man das XML-File einer virtuellen Maschine per Hand bearbeiten so nutzt man am besten den Befehl //edit//. | ||
+ | # virsh edit vml010008 | ||
+ | <code XML> | ||
+ | <domain type=' | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | <os> | ||
+ | <type arch=' | ||
+ | <boot dev=' | ||
+ | </os> | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | <clock offset=' | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | <disk type=' | ||
+ | <driver name=' | ||
+ | <source file='/ | ||
+ | <target dev=' | ||
+ | <address type=' | ||
+ | </ | ||
+ | <disk type=' | ||
+ | <driver name=' | ||
+ | <target dev=' | ||
+ | < | ||
+ | <address type=' | ||
+ | </ | ||
+ | < | ||
+ | <address type=' | ||
+ | </ | ||
+ | < | ||
+ | <mac address=' | ||
+ | <source bridge=' | ||
+ | <address type=' | ||
+ | </ | ||
+ | <serial type=' | ||
+ | <target port=' | ||
+ | </ | ||
+ | <console type=' | ||
+ | <target port=' | ||
+ | </ | ||
+ | <input type=' | ||
+ | <input type=' | ||
+ | < | ||
+ | <sound model=' | ||
+ | <address type=' | ||
+ | </ | ||
+ | < | ||
+ | <model type=' | ||
+ | <address type=' | ||
+ | </ | ||
+ | < | ||
+ | <address type=' | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | ==== Konfiguration eines vHOSTs exportieren ==== | ||
+ | Möchte man das XML-Konfiguration eines vHOSTs exportieren, | ||
+ | # virsh dumpxml vHOST_1 | ||
+ | <code XML> | ||
+ | <domain type=' | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | <os> | ||
+ | <type arch=' | ||
+ | <boot dev=' | ||
+ | </os> | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | <clock offset=' | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | <disk type=' | ||
+ | <driver name=' | ||
+ | <source file='/ | ||
+ | <target dev=' | ||
+ | <alias name=' | ||
+ | <address type=' | ||
+ | </ | ||
+ | <disk type=' | ||
+ | <driver name=' | ||
+ | <target dev=' | ||
+ | < | ||
+ | <alias name=' | ||
+ | <address type=' | ||
+ | </ | ||
+ | < | ||
+ | <alias name=' | ||
+ | <address type=' | ||
+ | </ | ||
+ | < | ||
+ | <mac address=' | ||
+ | <source network=' | ||
+ | <target dev=' | ||
+ | <model type=' | ||
+ | <alias name=' | ||
+ | <address type=' | ||
+ | </ | ||
+ | <serial type=' | ||
+ | <source path='/ | ||
+ | <target port=' | ||
+ | <alias name=' | ||
+ | </ | ||
+ | <console type=' | ||
+ | <source path='/ | ||
+ | <target port=' | ||
+ | <alias name=' | ||
+ | </ | ||
+ | <input type=' | ||
+ | <alias name=' | ||
+ | </ | ||
+ | <input type=' | ||
+ | < | ||
+ | <sound model=' | ||
+ | <alias name=' | ||
+ | <address type=' | ||
+ | </ | ||
+ | < | ||
+ | <model type=' | ||
+ | <alias name=' | ||
+ | <address type=' | ||
+ | </ | ||
+ | < | ||
+ | <alias name=' | ||
+ | <address type=' | ||
+ | </ | ||
+ | </ | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | ==== Snapshoot eines vHOSTs speichern ==== | ||
+ | Möchten wir einen Snapshoot eines laufenden vHOSTs machen, so benutzen wir die Option //save//, damit der gesamte Domainstatus ein einer Datei gespeichert wird. | ||
+ | # virsh save vHOST_3 / | ||
+ | |||
+ | | ||
+ | ==== Snapshoot eines vHOSTs zurücksichern ==== | ||
+ | Das Wiederherstellen eines vHOST mit Hilfe eines Snapshootfiles ist kein großer Aufwand- es wird hierzu die Option //restore// verwendet. | ||
+ | # virsh restore / | ||
+ | |||
+ | | ||
+ | |||
+ | ==== Löschen eines vHOSTs ==== | ||
+ | Möchten wir einen vHOST wieder entfernen, ist auch das Dank des Befehls **'' | ||
+ | # virsh destroy vml000200 | ||
+ | |||
+ | Anschliessend löschen wir den vHOST. Da wir auch alle zugehörigen Image-Dateien löschen wollen, benutzen wir zum Löschen die Option **'' | ||
+ | # virsh undefine vml000200 --remove-all-storage | ||
+ | |||
+ | Domain vml000200 has been undefined | ||
+ | Volume ' | ||
+ | |||
+ | Eine Abfrage, ob diese Maschine weiterhin bekannt ist wird entsprechend negativ beschieden. | ||
+ | # virsh list --all | grep vml000200 | ||
+ | |||
+ | ==== Befehlsliste von virsh abrufen ==== | ||
+ | Eine Überischt aller **virsh**-Befehle bekommt man mit dem Punbkt //help//. | ||
+ | # virsh help | ||
+ | < | ||
+ | |||
+ | help Hilfe ausgeben | ||
+ | attach-device | ||
+ | attach-disk | ||
+ | attach-interface Netzwerkschnittstelle verbinden | ||
+ | autostart | ||
+ | capabilities | ||
+ | cd change the current directory | ||
+ | connect | ||
+ | console | ||
+ | cpu-baseline | ||
+ | cpu-compare | ||
+ | create | ||
+ | start Eine (zuvor definierte) inaktive Domain starten | ||
+ | destroy | ||
+ | detach-device | ||
+ | detach-disk | ||
+ | detach-interface Netzwerkschnittstelle abhängen | ||
+ | define | ||
+ | domid Einen Domain-Namen oder -UUID in Domain-ID konvertieren | ||
+ | domuuid | ||
+ | dominfo | ||
+ | domjobinfo | ||
+ | domjobabort | ||
+ | domname | ||
+ | domstate | ||
+ | domblkstat | ||
+ | domifstat | ||
+ | dommemstat | ||
+ | domblkinfo | ||
+ | domxml-from-native Convert native config to domain XML | ||
+ | domxml-to-native Convert domain XML to native config | ||
+ | dumpxml | ||
+ | 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 | ||
+ | hostname | ||
+ | list Domains auflisten | ||
+ | migrate | ||
+ | migrate-setmaxdowntime set maximum tolerable downtime | ||
+ | net-autostart | ||
+ | net-create | ||
+ | net-define | ||
+ | net-destroy | ||
+ | net-dumpxml | ||
+ | net-edit | ||
+ | net-list | ||
+ | net-name | ||
+ | net-start | ||
+ | net-undefine | ||
+ | net-uuid | ||
+ | iface-list | ||
+ | iface-name | ||
+ | iface-mac | ||
+ | iface-dumpxml | ||
+ | iface-define | ||
+ | iface-undefine | ||
+ | iface-edit | ||
+ | iface-start | ||
+ | iface-destroy | ||
+ | managedsave | ||
+ | nodeinfo | ||
+ | nodedev-list | ||
+ | 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 | ||
+ | nodedev-create | ||
+ | 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 | ||
+ | nwfilter-edit | ||
+ | pool-autostart | ||
+ | pool-build | ||
+ | pool-create | ||
+ | pool-create-as | ||
+ | pool-define | ||
+ | pool-define-as | ||
+ | pool-destroy | ||
+ | pool-delete | ||
+ | pool-dumpxml | ||
+ | pool-edit | ||
+ | pool-info | ||
+ | pool-list | ||
+ | pool-name | ||
+ | pool-refresh | ||
+ | pool-start | ||
+ | pool-undefine | ||
+ | pool-uuid | ||
+ | secret-define | ||
+ | secret-dumpxml | ||
+ | secret-set-value set a secret value | ||
+ | secret-get-value Output a secret value | ||
+ | secret-undefine undefine a secret | ||
+ | secret-list | ||
+ | pwd print the current directory | ||
+ | quit Dieses interaktive Terminal beenden | ||
+ | exit Dieses interaktive Terminal beenden | ||
+ | reboot | ||
+ | restore | ||
+ | resume | ||
+ | save Einen Domainstatus in einer Datei speichern | ||
+ | schedinfo | ||
+ | dump Den Kern einer Domain zu Analysezwecken in eine Datei dumpen | ||
+ | shutdown | ||
+ | setmem | ||
+ | setmaxmem | ||
+ | setvcpus | ||
+ | suspend | ||
+ | ttyconsole | ||
+ | undefine | ||
+ | update-device | ||
+ | uri | ||
+ | vol-create | ||
+ | vol-create-from create a vol, using another volume as input | ||
+ | vol-create-as | ||
+ | vol-clone | ||
+ | vol-delete | ||
+ | vol-wipe | ||
+ | vol-dumpxml | ||
+ | vol-info | ||
+ | vol-list | ||
+ | vol-pool | ||
+ | vol-path | ||
+ | vol-name | ||
+ | vol-key | ||
+ | vcpuinfo | ||
+ | vcpupin | ||
+ | version | ||
+ | vncdisplay | ||
+ | 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 | ||
+ | snapshot-revert Revert a domain to a snapshot | ||
+ | |||
+ | </ | ||
+ | ==== Hilfe zu einem virsh Befehl abfragen ==== | ||
+ | Benötigt man Hilfe oder ergänzende Hinweise zu einer Befehlsoption, | ||
+ | # virsh help domifstat | ||
+ | < | ||
+ | domifstat - Statistiken der Netzwerkschnittstelle für eine Domain abrufen | ||
+ | |||
+ | SYNOPSIS | ||
+ | domifstat < | ||
+ | |||
+ | BESCHREIBUNG | ||
+ | Statistiken der Netzwerkschnittstelle für eine laufende Domain abrufen. | ||
+ | |||
+ | OPTIONEN | ||
+ | [--domain] < | ||
+ | [--interface] < | ||
+ | |||
+ | </ | ||
+ | |||
+ | ===== Generieren einer virtuelle Maschine mit virt-install ===== | ||
+ | ==== vHOST anlegen mit virt-install ==== | ||
+ | Im folgenden Beispiel wollen wir einen vHOST neu anlegen und dazu den Befehl **'' | ||
+ | * Name der VM: **'' | ||
+ | * Beschreibung: | ||
+ | * RAM: **'' | ||
+ | * CPU: **'' | ||
+ | * Disk: **'' | ||
+ | * Boot-Image: **'' | ||
+ | * Netzwerk: **'' | ||
+ | * //Bei der Installation soll der// **'' | ||
+ | |||
+ | Daraus ergibt sich folgender Befehl (zur besseren Lesbarkeit hier umgebrochen): | ||
+ | < | ||
+ | --description " | ||
+ | --os-type=Linux \ | ||
+ | --os-variant=generic \ | ||
+ | --ram=8192 \ | ||
+ | --vcpus=4 \ | ||
+ | --disk path=/ | ||
+ | --cdrom / | ||
+ | --network bridge: | ||
+ | && virt-viewer --connect qemu:/// | ||
+ | </ | ||
+ | |||
+ | # virt-install -n vml000200 --description " | ||
+ | |||
+ | {{ : | ||
+ | ===== Shutdownoptimierung ===== | ||
+ | Wird das Wirt-System heruntergefahren oder der libvirt-Daemon beendet, steht man in aller Regel vor einem Dilemma. Denn wie bei einem realen System, kann man nicht einfach den Powerknopf drücken. So versetzt der libvirt-Daemon in der Regel seine Gast-Systeme in den [[http:// | ||
+ | Kritische Systemdienste, | ||
+ | |||
+ | Zur Lösung dieser Herausforderung sind mehrere Änderungen, | ||
+ | |||
+ | ==== acpid-Daemon ==== | ||
+ | Wie gerade beleuchtet, muss auf dem Gast.System der libvirt-daemon installiert sein und auch laufen, damit der libvirt-Daemon den Gast über definierte Signale auszuschalten ohne dass sich dieser via ssh mit dem vHOST verbinden muss. | ||
+ | |||
+ | Als erstes prüfen wir ob das benötigte RPM-Paket **acpid** installiert wurde. | ||
+ | # rpm -q acpid | ||
+ | Wurde das Paket installiert erhalten wir als Antwort: | ||
+ | | ||
+ | Fehlt das Paket wird uns dies entsprechend angezeigt: | ||
+ | | ||
+ | Ob der acpid-Daemon läuft kontrollieren ganz einfach mit folgendem Aufruf: | ||
+ | # chkconfig --list | grep acpid | ||
+ | |||
+ | | ||
+ | Fehlt das Paket **acpid**, so installieren wir dieses erst via **yum**. | ||
+ | # yum install acpid -y | ||
+ | Bei Bedarf können wir uns genau ansehen, was dieses Paket mit ins System bringt. Wir benutzen hierzu einfach die Option //**qil**// beim Befehl **yum**. | ||
+ | # rpm -qil acpid | ||
+ | < | ||
+ | Version | ||
+ | Release | ||
+ | Install Date: Wed 26 Oct 2011 05:24:19 PM CEST Build Host: c6b3.bsys.dev.centos.org | ||
+ | Group : System Environment/ | ||
+ | Size : 74381 License: GPLv2+ | ||
+ | Signature | ||
+ | Packager | ||
+ | URL : http:// | ||
+ | Summary | ||
+ | Description : | ||
+ | acpid is a daemon that dispatches ACPI events to user-space programs. | ||
+ | /etc/acpi | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | Damit der Systemdienst auch beim Neustart des vHOSTs mitgestartet wird, sorgen wir nun dafür, dass dieser auch automatisch gestartet wird. | ||
+ | # chkconfig acpid on | ||
+ | Ob die Konfigurationsänderung auch gegriffen hat, kann man dies bei Bedarf entsprechend abfragen. | ||
+ | # chkconfig --list | grep acpid | ||
+ | |||
+ | | ||
+ | Wurde der Systemdienst erst installiert, | ||
+ | # service acpid status | ||
+ | |||
+ | acpid is stopped | ||
+ | Da der Dienst nicht läuft, werden wir diesen erst einmal per Hand starten. | ||
+ | # service acpid start | ||
+ | |||
+ | | ||
+ | |||
+ | ==== libvirt-guests ==== | ||
+ | Der entscheidende Eingriff zum Herunterfahren der vHOSTs erfolgt über das Startsript **libvirt-guests** bzw. über dessen Konfigurationsdatei **/ | ||
+ | Standardmäßige versetzet der Wirt seine Gäste mit Hilfe dieses Scriptes in den suspend-Modus, | ||
+ | |||
+ | Möchte man nun an statt des Suspend-Modus einen Shutdown der vHOSTs initiieren lassen sind ein paar Änderungen an der Konfigurationsdatei für das Startup-/ | ||
+ | |||
+ | Hierzu benutzen wir, wie so oft den Editor unserer Wahl. | ||
+ | # vim / | ||
+ | |||
+ | <file bash / | ||
+ | # URIs to check for running guests | ||
+ | # example: URIS=' | ||
+ | # | ||
+ | # Django | ||
+ | # default : unset | ||
+ | URIS=default | ||
+ | |||
+ | # action taken on host boot | ||
+ | # - start all guests which were running on shutdown are started on boot | ||
+ | # | ||
+ | # - ignore | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # Django | ||
+ | # default : unset | ||
+ | ON_BOOT=start | ||
+ | |||
+ | # number of seconds to wait between each guest start | ||
+ | # | ||
+ | |||
+ | # action taken on host shutdown | ||
+ | # - suspend | ||
+ | # - shutdown | ||
+ | # this settings since there is no way to distinguish between a | ||
+ | # guest which is stuck or ignores shutdown requests and a guest | ||
+ | # which just needs a long time to shutdown. When setting | ||
+ | # | ||
+ | # value suitable for your guests. | ||
+ | # | ||
+ | # Django | ||
+ | # default : unset | ||
+ | ON_SHUTDOWN=shutdown | ||
+ | |||
+ | # number of seconds we're willing to wait for a guest to shut down | ||
+ | # | ||
+ | # Django | ||
+ | # default : unset | ||
+ | SHUTDOWN_TIMEOUT=75 | ||
+ | |||
+ | # If non-zero, try to bypass the file system cache when saving and | ||
+ | # restoring guests, even though this may give slower operation for | ||
+ | # some file systems. | ||
+ | # | ||
+ | </ | ||
+ | |||
+ | Die entscheidenden Änderungen betreffen dabei nun die folgenden beiden Konfigurationsparameter: | ||
+ | * **ON_SHUTDOWN=**shutdown | ||
+ | * **SHUTDOWN_TIMEOUT=**75 | ||
+ | |||
+ | Wir haben also festgelegt, dass die vHOSTs nicht mehr in den Suspend-Mode versetzt, sondern ausgeschaltet werden. Dabei wird maximal 75 Sekunden gewartet, bis jeder einzelnen Gast heruntergefahren wurde. Der Zeitwert ist ggf, den eigenen Bedürfnissen anzupassen und ist nur ein Richtwert. | ||
+ | |||
+ | ==== manueller Test ==== | ||
+ | Im folgenden Beispiel fahren wir nun alle vHOSTs nacheinander runter, genauso wie dies bei einem Shutdown des Wirtsystemes erfolgen würde. | ||
+ | Zu erst ermitteln wir noch die Anzahl aller laufenden vHOSTs. Hierzu benutzen wir den Befehl **virsh** mit der Option // | ||
+ | # virsh list | ||
+ | < | ||
+ | ---------------------------------- | ||
+ | 13 vml000010 | ||
+ | 14 vml000020 | ||
+ | 17 vml000030 | ||
+ | </ | ||
+ | Den eigentlichen Shutdown der vHOSTs initiieren wir mit folgenden Aufruf: | ||
+ | # service libvirt-guests shutdown | ||
+ | < | ||
+ | Shutting down guests on default URI... | ||
+ | Shutting down vml100010: done | ||
+ | Shutting down vml100020: done | ||
+ | Shutting down vml100030: done | ||
+ | </ | ||
+ | |||
+ | Eine Überprüfung, | ||
+ | # virsh list | ||
+ | |||
+ | Id Name State | ||
+ | | ||
+ | |||
+ | Wir können natürlich auch die vHOSTs gesammelt hochfahren, genauso wie dies beim starten des Wirtsystemes erfolgen würde. | ||
+ | # service libvirt-guests start | ||
+ | < | ||
+ | Resuming guest vml000010: done | ||
+ | Resuming guest vml000020: done | ||
+ | Resuming guest vml000030: done | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ====== Links ====== | ||
+ | * **[[centos: | ||
+ | * **[[wiki: | ||
+ | * **[[http:// | ||
+ | |||