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

  • Links - Verschiedenes

    03.11.2020

    Hier einmal einige Links, die einfach in keine Kategorie passen...

    Weiterlesen

Neueste Artikel

  • Immich, Karakeep und Radicale neu im Docker-Zoo

    Ich habe längere Zeit keine Erweiterung meines Docker-Zoos vorgenommen - auch weil ich mir einige konzeptionelle Gedanken dazu gemacht habe. Aber ich habe auch Ideen gesammelt, was in meinem @homelab noch fehlt und was dringend ergänzt werden sollte.

    Weiterlesen
  • Thin Client als Notfall-NAS?

    Eine Diskussion brachte mich neulich auf eine Idee - und im Urlaub hatte ich an einem regnerischen Tag genug Zeit, die entsprechenden Experimente zu machen...

    Weiterlesen
  • Cloud - das unentdeckte Neuland (oder FDP: Digital first, Bedenken second)...

    Nachdem die Öffentlichkeit letzte Woche wieder mal mitgekriegt haben sollte, dass die Konzentration in der Cloud Schwachsinn ist und - vielleicht nicht - die ganze Öffentlichkeit vor zwei Wochen wieder einmal herzlich gelacht hat über die, die dennoch alles in die Cloud auslagern, aber offensichtlich nicht verstehen, wie sie funktioniert - hier einige Gedanken von mir dazu...

    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.