NRW:Arbeitsgruppe/Technik/Dokumentation/Server/Proxmox

Aus Piratenwiki
Wechseln zu: Navigation, Suche
AG Technik NRW
Verwaltung: Übersicht | Protokolle | Dokumentation | FAQ
Dienste: E-Mail | Lists | Blogs | Domains | RT | Mumble | LAN | Serverstatus


Proxmox

Zur Verwaltung der virtuellen Maschinen verwenden wir die Software Proxmox in der aktuellen Version. Sie bietet umfangreiche Konfigurationsoptionen für die Hypervisor KVM und OpenVZ. Wir setzen ausschließlich virtuelle Maschinen ein die mit KVM betrieben werden. Die Festplatten-Images der virtuellen Maschinen liegen im "raw" Format vor.

Zugriff

Der Zugriff auf die webbasierte Proxmox Verwaltungskonsole ist über das VPN möglich. Zur Anmeldung werden personifizierte Accounts und Passwörter verwendet. Folgende Hostsysteme sind derzeit im Einsatz:

  • applejack.piratenpartei-nrw.de (192.168.42.1)
  • rainbowdash.piratenpartei-nrw.de (192.168.42.2)

Um sich anzumelden, greift man mit einem Browser per https auf Port 8006 auf die jeweilige IP zu. Je nach Einstellung erhält man Zugriff auf eine Auswahl von VMs und Speichersystemen.

Zugriff per Console

Sollte kein Zugriff auf VPN möglich sein, kann man einige wichtige Kommandos auch per SSH über die Console ausführen. Dazu verbindet man sich als "root" über das interne Netz auf eines der Hostsysteme. Liste aller VM auf dem aktuellen Host anzeigen

$ qm list

VM neustart

$ qm restart <VMID>

VM anhalten

$ qm shutdown <VMID>

VM starten

$ qm start <VMID>

Weitere Befehle finden sich in der manpage des qemu tools.

$ man qm

Migration im Cluster

Tipps

  • Hängende HA KVM nach einer Migration
    • Wenn eine HA KVM nicht startet (Error code 250), muss man sie manuell deaktivieren, dazu auf der Console folgendes ausführen um sie wieder starten zu können:
$ clusvcadm -d pvevm:100

Umzug bestehender Maschinen

Bestehende Maschinen lassen sich über ein Netzwerk auf andere Proxmox-Hosts übertragen. Dabei muss im einzelnen die Konfiguration und zum anderen das Disk-Image übertragen werden.

Kopie der Konfiguration

Jede KVM wird über eine einfache Konfigurationsdatei definiert. Darin sind Einstellungen wie Netzwerkkarten, VM-Disks usw. aufgeführt. Sobald die Konfigurationsdatei auf dem neuen Proxmox System existiert, taucht die Maschine im Proxmox-Frontend auf.

Neue Konfigurationsdatei anlegen:

$ vim /etc/pve/qemu-server/100.conf

Nun den Inhalt der Konfiguration der VM vom alten Host dort hinzufügen und die Datei abspeichern. Bei Migrationen von alten Proxmox-Versionen ist darauf zu achten, dass die Einträge der Netzwerkkarte angepasst werden müssen. Statt vlanX werden die Netzwerkkarten als netX bezeichnet. Zusätzlich muss der suffix ",bridge=vmbrX" angehangen werden. Bei alten Proxmox-Versionen befinden sich diese Konfigurationsdateien in /etc/qemu-server/.

boot: c
bootdisk: virtio0
cores: 1
memory: 2048
name: monitoring.piratenpartei-nrw.de
net0: virtio=CE:4D:31:F9:22:C2,bridge=vmbr0
net1: virtio=62:D9:94:3E:EF:DF,bridge=vmbr1
onboot: 1
ostype: l26
sockets: 1
virtio0: vmdisks:vm-100-disk-1

Nach dem speichern dieser Datei, taucht die VM sofort im Proxmox-Frontend auf. Die VM kann jedoch noch nicht korrekt hochfahren, da die virtuelle Festplatte noch nicht existiert.

Kopie der virtuellen Festplatten

Um die VM zu kopieren, muss die virtuelle Festplatte auf dem in der Konfiguration angegebenen Speicherort abgelegt werden. Bei SAN oder LVM Speichern muss es sich dabei um virtuelle Festplatten im RAW Format handeln, bei lokalem Speicher kann es auch qcow2 oder ein anderes Format sein. Falls die virtuelle Festplatte nicht im RAW Format vorliegt, muss sie zuerst umgewandelt werden:

$ qemu-img convert -O raw original.qcow2 new.raw

Bitte darauf achten, dass virtuelle Festplatten im RAW Format soviel Speicherplatz belegen, wie im Image konfiguriert ist.

Nun kann die virtuelle Festplatte auf das neue System kopiert werden. Dazu braucht man bei LVM basierten Speichern den entsprechenden Eintrag in /dev/<storage>/vm-100-disk-1. Dieser Pfad zeigt auf einen diskmapper. Damit dieser Eintrag existiert, muss ein entsprechendes logical volume erstellt werden. Hier ein Beispiel für ein 10GB großes LV namens "vm-116-disk1-" im mapper "vmdisks-nearline".

$ lvcreate -L10G -nvm-116-disk-1 vmdisks-nearline

Nun kann die virtuelle Festplatte vom alten auf das neue System kopiert werden. Dazu muss die alte VM heruntergefahren sein. Eine Kopie kann per SSH angestoßen werden. Dazu führt man auf dem alten System folgenden Befehl aus:

$ dd if=/dev/<old-storage>/vm-100-disk-1 | ssh root@newmachine.tld "dd of=/dev/<new-storage>/vm-100-disk-1"

Alternativ kann man die Datei auch lokal in den jeweiligen Speicherort kopiert werden:

$ dd if=/root/vm-100-disk1.raw of=/dev/<storage>/vm-100-disk-1

Der Fortschritt kann über das USR1 Signal an den "dd" Prozess erfahren werden. Dazu braucht man die PID des dd Prozesses und führt folgendes Kommando aus:

$ kill -USR1 <PID>

Die Kopie per dd ist nicht sonderlich effektiv da bit-für-bit kopiert wird, also auch "leere" Speicherbereiche der Festplatte. In der Regel läuft der Kopiervorgang mit 10-20MB/s

Nachdem der Kopiervorgang abgeschlossen ist, hält man die VM mit "Stop" an und startet sie neu. Nun bootet die VM aus der kopierten virtuellen Festplatte.

Ändern von Speichereinstellungen

Falls einer VM der Speicherplatz ausgeht, können virtuelle Festplatten vergrößert werden. Dazu muss eine neue, entsprechend große, virtuelle Festplatte angelegt werden und das bestehende Dateisystem darauf kopiert werden. Anschließend wird die Partitionstabelle und das entsprechende Dateisystem vergrößert. Der Vorgang entspricht zu einem großen Teil einer lokalen Migration.

Anlegen einer neuen virtuellen Festplatte

Im Proxmox-Frontend erstellt man für die entsprechende VM eine neue virtuelle Festplatte

  • Hardware
  • Add
  • Hard Disk
  • Disk size: Gewünschte neue Größe

Anschließend besitzt die VM zwei virtuelle Festplatten, in diesem Beispiel vm-100-disk1 und vm-100-disk2. Nun wir die VM heruntergefahren, gestartet und per F12 in der Console im Boot-Menü angehalten.

Migration der virtuellen Festplatte

Die kleine virtuelle Festplatte wird per "dd" in die neue virtuelle Festplatte kopiert

$ dd if=/dev/<storage>/vm-100-disk1.raw of=/dev/<storage>/vm-100-disk-2

Dieser Vorgang läuft mit ca. 10-20MB/s ab und kann entsprechend lange dauern. Nach dem Abschluss der Kopie wird die VM gestoppt und die alte virtuelle Festplatte in Proxmox aus der Konfiguration entfernt.

Ändern der Festplattengröße

Nachdem die neue virtuelle Festplatte eingebunden und mit Daten befüllt wurde, kann die Partitionstabelle angepasst werden. Dazu wird die Software "gparted" als Live-CD eingebunden.

  • Hardware
  • Add
  • CD/DVD Drive
  • Storage: local
  • ISO Image: gparted-<version>

Nun kann die VM gestartet und in der Console per F12 das CD Laufwerk als Startmedium ausgewählt werden. Mit gparted kann die Partitionstabelle und die vorhandenen Partitionen entsprechend der neuen virtuellen Festplatte vergrößert werden.

Fehler die man nur einmal macht

  • /etc/init.d/networking restart auf dem Hostsystem
    • Folge: Alle VMs sind nicht mehr erreichbar, Proxmox ist noch erreichbar
    • Lösung: Hostsystem neustarten
  • Node aus dem Cluster nehmen
    • Folge: Node kann nicht wieder hinzugefügt werden, muss neu installiert (!) werden.
    • Lösung: Host neu aufsetzen
  • Manuell an der Cluster-Konfiguration spielen
    • Folge: Inventar geht verloren, Zombie-Nodes, furchtbare Dinge
    • Lösung: Host neu aufsetzen
  • IPv6 auf dem Host konfigurieren
    • Folge: Bridge-Konfiguration funktioniert nicht mehr richtig
    • Lösung: IPv4 reicht im Moment noch für interne Systeme
  • Hostsystem per "reboot" auf der Console neu starten
    • Die KVM werden nicht "graceful" heruntergefahren sondern einfach abgeschaltet. Dadurch besteht die Gefahr von korrupten Dateisystemen.
    • Stattdessen "qm list", "qm shutdown <ID>"
    • Stattdessen im Proxmox das Hostsystem auswählen und "Restart" oder "Shutdown" wählen