Montag, 14. Oktober 2024

Umzug auf Proxmox

Alle machen Proxmox, ich habe mich bisher etwas dagegen gesträubt. Bisher habe ich mich mit der Basis von Proxmox (KVM/QEMU) beschäftigt. Aber diese Verwaltungsoberfläche sieht natürlich gut aus und macht alles sicher einfacher. Also einen neuen passenden Mini-PC NAD9 geholt (später könnte man Clustern) und Proxmox vom ISO Image direkt installiert. Für schnelle und unkomplizierte Beispiele ist diese Seite mit zahlreichen Scripts hervorragend: https://tteck.github.io/Proxmox/

Wenn man damit etwas spielt fällt auf - man arbeitet mit Proxmox "unkompliziert". USB wird per "USB Passtrough" und das Netzwerk mit vmbr0 verbunden. Damit sind alle USB Schnittstellen verfügbar, jede Instanz bekommt eine eigene IP und somit sind auch alle Ports verfügbar. Die Umstände mit Profilen und Port Mappings fallen damit weg.

Für existierende VMs unter Libvirt gibt es keinen extra (einfachen) Migrationsweg, man muss es per Hand tun, siehe auch: Link1Link2. VM vor der Migration auf dem alten System herunterfahren, Windows Systeme mit Shift + herunterfahren.

Beispiel Windows 10 VM

VM in Proxmox analog der alten Umgebung definieren, entweder per Oberfläche oder Kommandozeile (manual proxmox tool qm und API Shell). 

VM_ID=$(pvesh get /cluster/nextid)
qm create $VM_ID --name "win10" --memory 4096 --cores 2 --net0 e1000e,bridge=vmbr0

Das Festplatten Image vom alten auf den neuen Server kopieren war mir zu umständlich! Ich habe den Pfad auf dem alten Server einfach per NFS zur Verfügung gestellt und gemountet. Damit kann man die qcow2 Dateien ohne extra Kopie direkt importieren.

Inhalt der /etc/exports ergänzen (nur ein Host, uid auf root gemappt)

/mnt/vm-images  192.168.56.42(ro,no_subtree_check,anonuid=0)
/var/lib/libvirt/images  192.168.56.42(ro,no_subtree_check,anonuid=0)

und sudo exportfs -a ausführen.

In der Proxmox Console mounten (/mnt/nfs muss existieren)

mount virthost1:/var/lib/libvirt/images /mnt/nfs

Image importieren in der Kommandozeile (Achtung: wenn man die Browser Shell verlassen und neu geöffnet hat ist die Variable VM_ID gelöscht)

qm importdisk $VM_ID /mnt/nfs/win10.qcow2 local-lvm

Entweder in der Oberfläche

  • edit unused Disk, sata auswählen und add. 
  • Options / Boot Order editieren.
  • OS auf Windows 10 setzen
  • qemu agent aktivieren (muss im Gast installiert sein)

Oder per Kommandozeile (Achtung Werte prüfen, Beispiel ist nicht universell)

qm set $VM_ID --sata0 local-lvm:vm-${VM_ID}-disk-0
qm set $VM_ID --boot order=sata0
qm set $VM_ID --ostype win10
qm set $VM_ID --agent enabled=1

Danach startet zumindest eine Windows Maschine ohne Auffälligkeiten, mit meiner container-vm aus diesen Beitrag lief es nicht so gut. Ich vermute, ich habe die Hardware nicht richtig definiert (--machine q35).

Nach kurzer Überlegung war mir das egal, ich habe einfach Datensicherung in den Applikationen gemacht und die Container mittels Scripts neu angelegt, Backup eingespielt und alles lief wieder. Und manche Dinge gehen damit in Proxmox viel leichter als zu kompliziert gedacht.

Beispiel Zigbee2mqtt

Ausgangspunkt: ein Docker Container in einem LXC Container! 

Altes System Backup anfordern. lxc shell docker, cp data/* temp/ (error wegen log Pfad ignorieren). Das alte System herunterfahren und den coordinator Stick an die Proxmox Maschine stecken.

Im alten docker Container die Daten nach dem Proxmox Host kopieren (Pfad temp muss existieren)

scp data/* root@192.168.56.42:temp/

Zigbee2mqtt als LXC Container mit Script im Proxmox installieren (der Zigbee Stick sollte schon vorhanden sein um die Schnittstelle /serial/by-id auswählen zu können.)

In der Shell vom Container die gesicherten Daten nach /opt/zigbee2mqtt/data kopieren. 

scp root@192.168.56.42:temp/* /opt/zigbee2mqtt/data/

Die serielle Schnittstelle in der configuration.yaml editieren. Den Container neu starten.

Beispiel Raspberrymatic

Ausgangspunkt: VM aus ova Datei per Hand in libvirt integriert.

Altes System Backup über Browser, VM herunterfahren, Stick an neue Maschine stecken.

Raspberrymatic mit Script von der RaspberryMatic Webseite als VM installieren (der Stick sollte schon vorhanden sein) 

Im Browser Backup zurückspielen. CCU3 über Web Oberfläche neu starten.

VLAN Bridge 

Ich hatte an meinem Virtualisierung Host die Netzwerkschnittstelle mit zwei VLANs verbunden. Ich habe hier ein Guide gefunden, dass dies auch einfacher geht. Ich habe das zunächst mit einem extra Netzwerkadapter (USB-C) getestet. Bridge definiert mit dem USB-C Netzwerk Port, die Bridge als Netzwerkanschluss einer VM genommen und den VLAN Tag eingetragen - funktioniert.

Final habe ich einfach den Netzwerkanschluss mit dem Trunk Port verbunden, da Proxmox ja sowieso eine feste IP hatte. Man muss lediglich in der vmbr0 den Haken für "VLAN aware" setzen und bei allen virtuellen Maschinen in der Netzwerkschnittstelle den VLAN Tag eintragen.

Ein paar Links

https://github.com/fdcastel/Proxmox-Automation

ToDo?

Code Block

ToDo Ende

Keine Kommentare:

Kommentar veröffentlichen