Proxmox VM in einen LXC Container konvertieren

Nach sowas suche ich schon länger und hab den GNU/Linux Machine to Proxmox LXC Container Converter auf GitHub gefunden.
Ein kleines Skript was eine VM (und auch andere Linux Server) in einen LXC Container konvertiert. Und es funktioniert!

17.05.2024 - Anleitung aktualisiert (GitHub Repo, Skript update)
16.09.2023 - Anleitung aktualisiert (Parameter -P im Skript hinzugekommen)

Denke aber die sauberste Lösung ist immer einen neuen Container aufzusetzen und diesen dann entsprechend einzurichten.

Habs zuerst mit einer Debian 11 Test-VM probiert und danach mit einer Debian 10 BackupPC-VM. Beide wurden erfolgreich konvertiert!
Aktuell getestet mit: Proxmox 8.0.4 und einer Debian 11.7 VM.

konvertieren

In der VM, die konvertiert werden soll, muss der SSH Zugang für root erlaubt sein. In der /etc/ssh/sshd_config freischalten.

PermitRootLogin yes

Auf dem Proxmox Host das Repository klonen und die beiden Skripte ausführbar machen.

$ git clone https://github.com/mathewalves/machine-to-proxmox-lxc-ct-converter.git
$ cd machine-to-proxmox-lxc-ct-converter
$ chmod +x convert.sh bashconvert

Die Parameter die angegeben werden müssen.

$ ./bashconvert --help
 -n|--name         [lxc container name]                         # neuer Container Name
 -t|--target       [target machine ssh uri]                     # IP Adresse der zu konvertierenden VM
 -P|--port         [target port ssh]                            # SSH Port der zu konvertierenden VM
 -i|--id           [proxmox container id]                       # neuer Container ID
 -s|--root-size    [rootfs size in GB]                          # neuer Container Größe der Festplatte
 -a|--ip           [target container ip]                        # neuer Container IP Adresse
 -b|--bridge       [bridge interface]                           # neuer Container Bridge Interface
 -g|--gateway      [gateway ip]                                 # neuer Container Gateway IP
 -m|--memory       [memory in mb]                               # neuer Container Größe des Arbeitsspeichers
 -d|--disk-storage [target proxmox storage pool]                # neuer Container Storage Pool auf dem Proxmox Server
 -p|--password     [root password for container (min. 5 chars)] # neuer Container root password

Der Befehl mit den gewünschten Parametern auf dem Proxmox Host (als root) ausführen. (konvertiert meine BackupPC-VM in einen LXC Container)

$ ./bashconvert \
-n backuppc \
-t 192.168.50.44 \
-P 22 \
-i 312 \
-s 15 \
-a 192.168.50.44 \
-b vmbr0 \
-g 192.168.50.1 \
-m 1024 \
-d local-lvm \
-p CT-PASSWORT

Je nach Füllstand der VM dauert das natürlich etwas. Man sollte auch den Speicherbedarf der temporären Archivdatei berücksichtigen.

das Skript

  • erstellt von dem zu konvertierenden System über SSH ein TAR Archiv des Dateisystems nach /tmp/containername.tar.gz
  • aus dem TAR Archiv wird dann mit pct create ein neuer Container mit den übergebenen Parametern erstellt
  • /tmp/containername.tar.gz wird wieder gelöscht

Das Skript funktioniert gut, kann aber bestimmt noch etwas optimiert werden. ;)
Hat man eine kleine pve-root Partition, kann diese schnell voll werden, da das Archiv in /tmp erstellt wird!

Problemchen

In beiden konvertierten Containern dürfen andere user keinen ping mehr ausführen!?

backup@backuppc:/$ ping heise.de
ping: socket: Operation not permitted

Die Lösung war ein reinstall des iputils-ping Paketes, danach dürfen auch alle wieder pingen.

$ apt install iputils-ping --reinstall

8 Gedanken zu „Proxmox VM in einen LXC Container konvertieren“

  1. Hallo, ich brauche etwas Hilfe bei diesem Thema, ich verstehe nicht sehr gut, wo ich die Parameter zum Konvertieren der VM, im Hilfeteil angeben soll??, helfen Sie mir bitte, ich habe Angst, mein Proxmox zu beschädigen, Grüße

    Antworten
  2. Hallo, vielen Dank für die Klarstellung, ich habe es geschafft, das Skript zum Laufen zu bringen, aber ohne Erfolg, ich hatte die folgende Ausgabe:

    Unbekannte Option: Funktionen
    400 Option kann nicht analysiert werden

    Irgendwelche Ideen??

    Antworten
    • Der Status wird auf der Konsole ausgegeben.
      Kopier mal 80GB von A nach B, solange wird das dann ca. dauern.

      VORSICHT: Per default wird das TAR Archiv nach /tmp gespeichert.
      Nicht das dein Proxmox Host voll läuft!

      Antworten

Schreibe einen Kommentar