Migriere LXD von DEB/PPA zu snap
Eine Migrationsanleitung für lxd
Package zu snap lxd
.
LXD ist nicht mehr länger als Package aus dem Repository (deprecated lxd PPA) verfügbar. Es gibt jetzt dafür ein lxd
-Snap.
- Was sind Snaps?
Hinweis: Die LTS lxd
Version 2.0.x ist nicht von Umzug auf ein snap betroffen. lxd
LTS wird bis 2021 unterstützt.
Hier ist eine Anleitung für Ubuntu 16.04
Hinweis: Mir ist keine Möglichkeit bekannt den Umzug ohne Downtime der LXC Container durchzuführen.
Aktualisieren und neustarten
Es empfiehlt sich vor der Migration alle Pakete auf den neuesten Stand zu bringen. Hosts Server aktualisieren:
$ sudo apt update
$ sudo apt upgrade
$ sudo apt autoclean && sudo apt autoremove -y
$ sudo purge-old-kernels # optional
LXD überprüfen
Überprüfe die Versionen für die Migration
$ lxd --version
2.21
Prüfe den Pfad zum lxd
binary:
$ which lxd
/usr/bin/lxd
Prüfe die apt
Richtlinie für lxd
$ apt policy lxd
lxd:
Installiert: 2.21-0ubuntu3~16.04.1
Installationskandidat: 2.21-0ubuntu3~16.04.1
Versionstabelle:
*** 2.21-0ubuntu3~16.04.1 100
100 http://ch.archive.ubuntu.com/ubuntu xenial-backports/main amd64 Packages
100 /var/lib/dpkg/status
2.0.11-0ubuntu1~16.04.4 500
500 http://ch.archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages
2.0.2-0ubuntu1~16.04.1 500
500 http://security.ubuntu.com/ubuntu xenial-security/main amd64 Packages
2.0.0-0ubuntu4 500
500 http://ch.archive.ubuntu.com/ubuntu xenial/main amd64 Packages
Überprüfe die snapd
lxd
version:
$ snap info lxd
name: lxd
summary: System container manager and API
publisher: canonical
contact: https://github.com/lxc/lxd/issues
description: |
LXD is a container manager for system containers.
It offers a REST API to remotely manage containers over the network, using an
image based workflow and with support for live migration.
Images are available for all Ubuntu releases and architectures as well as for
a wide number of other Linux distributions.
LXD containers are lightweight, secure by default and a great alternative to
virtual machines.
snap-id: J60k4JY0HppjwOjW8dZdYc8obXKxujRu
channels:
stable: 2.21 (5866) 49MB -
candidate: 2.21 (6005) 51MB -
beta: ↑
edge: git-1708565 (6012) 55MB -
2.0/stable: 2.0.11 (5384) 21MB -
2.0/candidate: 2.0.11 (5384) 21MB -
2.0/beta: ↑
2.0/edge: git-8130261 (5944) 20MB -
Installiere LXD snap
$ sudo snap install lxd
LXD migrieren
$ sudo lxd.migrate
Nach der Migration ausloggen und wieder einloggen. Wenn ihr euch nicht wieder einloggt oder eine neue Shell startet, wird die lxd
binary nicht gefunden und es gibt eine Fehlermeldung:
$ lxd info
bash: /usr/bin/lxc: No such file or directory
LXD Pfad überprüfen:
$ which lxd
/snap/bin/lxd
Überprüfe ob lxd
nun als snap
läuft:
$ ps aux | grep lxd
root 15411 0.0 0.0 4504 1756 ? Ss 16:29 0:00 /bin/sh /snap/lxd/5866/commands/daemon.start
root 15481 0.0 0.0 160920 3440 ? Sl 16:29 0:00 lxcfs /var/snap/lxd/common/var/lib/lxcfs -p /var/snap/lxd/common/lxcfs.pid
root 15489 3.6 0.9 1483412 76388 ? Sl 16:29 0:26 lxd --logfile /var/snap/lxd/common/lxd/logs/lxd.log --group lxd
…
Überprüfe ob die lxc Container:
$ lxc list
So, alles erledigt. lxd
ist nun als snap installiert und alle Container wurden migriert.
Nachträgliche Tasks
Die konfigurierten remotes
wurden anscheinend nicht umgezogen:
$ lxc remote list
Remotes erneut hinzufügen:
$ lxc remote add lxd02 192.168.XXX.XXX
Ebenfalls sind die Zertifikate neu weil der LXD Server auch neu ist. Somit müssen alle Zertifikate erneuert bzw. die Remotes neu konfiguriert werden.
Alternatives vorgehen bei der Migration
Mein vorgehen bei der Migration um eventuellen Problemen vorzubeugen.
Dafür braucht es einen zweiten lxd
-Server:
-
Beide
lxd
-Server sollten möglichst identisch konfiguriert sein (Netzwerke, Profile, Storage usw.). Empfohlen ist auch eine ähnliche Leistung (Hardware) damit alle Container darauf betrieben werden können, falls dies nötig ist. -
Beide werden jeweils als remote beim anderen
lxd
-Server hinzugefügt.lxd01$ lxc remote add lxd02 192.168.XXX.XXX lxd02$ lxc remote add lxd01 192.168.XXX.XXX
Ablauf:
-
Alle (oder alle wichtigen) lxc Container werden auf einen
lxd
-Server verschoben. Ich habe dafür folgenden Befehl verwendet (cold migration):$ lxc stop <container> && lxc move <container> lxd02:<container> && lxc start lxd02:<container>
Ebenfalls werden alle Snapshots umgezogen mit
move
. Je nach grösse des Containers, dauert dies auch entsprechend lange. -
Update zu snapd-
lxd
ausführen auf dem einenlxd
-Server mit den unwichtigen Containern. -
Alle (wichtigen) lxc Container auf den aktualisierten, neuen snapd-
lxd
-Server zurückverschieben.$ lxc stop <container> && lxc move <container> lxd01:<container> && lxc start lxd01:<container>
Falls ihr sowieso zwei lxd
-Server habt, könnt ihr ebenfalls so vorgehen und alle lxc zuerst auf den einen Server verschieben und dann umgekehrt für den zweiten Server dasselbe.
Mehr zum Thema lxd
und snap
Migration:
- https://discuss.linuxcontainers.org/t/migrate-from-ppa-to-snap/816/2
- https://blog.simos.info/how-to-migrate-lxd-from-deb-ppa-package-to-snap-package/
PPA Alternative xenial-backports
Via xenial-backports ist lxd noch immer verfügbar:
$ sudo apt install -t xenial-backports lxd lxd-client
Mehr Infos zu lxd
Ubuntu Backports: