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:// | ||
| + | |||