Migrieren unprivilegierter LXC-Container

vorhergehende Artikel in: Linux Virtualisierung
13.01.2023

Hauptsächlich zu meiner Erinnerung...

Ich schreib das hier mal auf, damit ich beim nächsten Mal sofort weiß, wie man das macht... Hauptgrund für die Art und Weise, die ich hier vorstellen möchte war, dass ich einen meiner Server entlasten wollte, dessen Massenspeicherfüllstand sich gefährlich auf 90% zu bewegte. Aus diesem Grund war auch ein einfaches Einpacken per tar nicht möglich - das entstehende Archiv hätte nicht mehr auf den Massenspeicher gepasst.

Also entschied ich mich für die direkte Variante: Transparentes Verpacken mittels tar und senden des Archivstreams per ssh zum Zielrechner, wo das Archiv transparent aus der Standardeingabe sofort wieder entpackt wird. Das Kommando dafür lautet:

sudo tar -C ~/.local/share/lxc/ -cpf - <container_name> | \
pv | \
ssh -Y <remote_user>@<target_host> \
"SUDO_ASKPASS=<path_to>/ssh-askpass sudo -A tar --same-owner -C /home/<remote_user>/.local/share/lxc -xf -"

Dabei ist <container_name> der Name des Containers, der zu migrieren ist (Vor der Migration ist dieser natürlich zunächst mittels lxc-stop -n <container_name> anzuhalten). <target_host> ist der Name des Rechners, auf den der Container migriert werden soll, <remote_user> ist der Nutzername des Nutzers, der den Container nach der Migration ausführen soll.

Nun zu den einzelnen Bestandteilen des Kommandos:

sudo tar -C ~/.local/share/lxc/ - sudo muss hier verwendet werden, da nicht alle Dateien in einem Container dem aktuellen Nutzer gehören, aber alle kopiert werden müssen. die Option -C legt das Verzeichnis fest, in dem tar arbeiten soll.

-cpf - - -p gibt hier an, dass die Permissions der Dateien und Verzeichnisse mit im Archiv übertragen werden sollen, -f - spezifiziert, dass das resultierende Archiv auf der Standardausgabe ausgegeben werden soll.

pv - realisiert eine rudimentäre Fortschrittsanzeige während des Prozesses

ssh -Y @ - die Option -Y gibt hier an, dass es ermöglicht werden soll, die GUI graphischer Anwendungen vom Zielrechner zu übertragen - das wird für die Anzeige der Authentifizierungsdialoge für das remote ausgeführte sudo zu ermöglichen.

SUDO_ASKPASS=/ssh-askpass sudo -A - Hier wird abgegeben, welche Anwendung zur Abfrage der Authentifizierungsinformationen für sudo verwendet werden soll (muss auf <target_host> installiert sein) und - mittels -A - dass sudo einen askpass Agenten dafür benutzen soll.

tar --same-owner -C /home//.local/share/lxc - tar wird schließlich angewiesen, in welchem Verzeichnis es arbeiten soll und dass die Zuordnung zu Nutzern und Gruppen wiederhergestellt werden soll. Diese Option --same-owner ist auch der Grund, warum hier sudo benötigt wird!

-xf - - schließlich gibt an, dass ein auf der Standardeingabe verfügbare Archiv entpackt werden soll.

Alle Artikel rss Wochenübersicht Monatsübersicht Codeberg Repositories Mastodon Über mich home xmpp


Vor 5 Jahren hier im Blog

  • Beliebige äußere Form für generierte Stadtpläne

    25.07.2021

    Ich habe den neulich vorgestellten Generator für beliebige Stadtpläne, der als Ausgabeformat unter anderem GeoJson unterstützt ein wenig erweitert

    Weiterlesen

Neueste Artikel

  • Docker-Services im Homelab

    Diese Seite wird mit allen derzeit in meinem Self-Hosting Homelab betriebenen Services auf Docker-Basis befüllt (Eigenentwicklungen werden nicht genannt, sofern sie keine öffentlich verfügbaren Open-Source-Lösungen darstellen).

    Weiterlesen
  • sQLshell Version 7.9pre3 build 11292

    Eine neue Version der sQLshell ist verfügbar!

    Weiterlesen
  • SBOMs für alte Java-Projekte II

    Ich habe bereits vor einiger Zeit eine Möglichkeit präsentiert, SBOMs aus alten Java-Projekten zu erstellen. Ich bin neulich einer speziellen Form von Java-Projekten begegnet, die mich dazu bewogen hat, mich auch hierfür an der (nachträglichen) Erstellung einer SBOM zu versuchen...

    Weiterlesen

Manche nennen es Blog, manche Web-Seite - ich schreibe hier hin und wieder über meine Erlebnisse, Rückschläge und Erleuchtungen bei meinen Hobbies.

Wer daran teilhaben und eventuell sogar davon profitieren möchte, muss damit leben, daß ich hin und wieder kleine Ausflüge in Bereiche mache, die nichts mit IT, Administration oder Softwareentwicklung zu tun haben.

Ich wünsche allen Lesern viel Spaß und hin und wieder einen kleinen AHA!-Effekt...

PS: Meine öffentlichen Codeberg-Repositories findet man hier.