Nehmen wir an, wir haben einen Server mit lxc installiert und einen lxc-Container, der als Basis-Img verwendet wird /var/lib/lxc/ubuntu_base
. Vergessen wir der Einfachheit halber die Konfigurationsänderungen nach dem Kopieren der Basis-IMG.
Einige Leute schlagen vor, Subvolumes und Snapshots für die Erstellung neuer Container zu verwenden, aber man könnte leicht cp - reflink mit ähnlichen Ergebnissen durchführen.
Was ist der richtige Weg (oder welcher ist besser), um mehrere Container zu verwalten?
- Schnappschüsse
Dieser Weg scheint am besten zu sein, aber Befehle wie lxc-destroy funktionieren nicht, da das Verzeichnis nicht gelöscht werden kann.
btrfs subvolume snapshot /var/lib/lxc/ubuntu_base /var/lib/lxc/container_1
- cp mit reflink
Ich bin nicht sicher, ob es einen Leistungsunterschied zwischen diesem oder Schnappschüssen gibt
cp --reflink=always /var/lib/lxc/ubuntu_base /var/lib/lxc/container_1
- oder Gibt es einen anderen besseren Weg, dies zu tun, den ich nicht kenne?
bearbeiten:
Eine Sache, die ich mit der Reflink-Option gesehen habe, ist, dass Sie den Basiscontainer nicht löschen können, wenn andere ausgeführt werden, da die /proc
und /dev
gemountet und nie geändert werden, da die Referenz immer dieselbe ist. Aber das Abschalten aller kupfernen Container scheint zu helfen.
quelle
Antworten:
Ich bin auf Ubuntu LTS 14 und habe gerade (zum ersten Mal sogar) Folgendes ausgeführt und es hat wie ein Zauber funktioniert:
Wenn Sie -s mit lxc-clone verwenden, wird ein Snapshot erstellt, wenn der Sicherungsspeicher btrfs ist (in Ihrem Fall).
Überprüfen Sie neue Klone / Snapshots mit
Ich hoffe, das hilft!
quelle
-s
Option ausreichend zu sein (lxc-stop und lxc-clone) , und die drei letzten (lxc_start, lxc_stop, lxc_snapshot) sind nur eine Hilfsprozess zur Verwaltung zukünftiger Containerentwicklungen. Ist es richtig ?Wenn Sie btrfs-Subvolumes für lxc verwenden, müssen Sie die Option
user_subvol_rm_allowed
in Ihrem hinzufügen/etc/fstab
. Beispiel aus einer fstab-Datei extrahiert:UUID=XXXXXXXXXXXXXXXXXXXXXX / btrfs subvol=@,user_subvol_rm_allowed,defaults 0 0
Mit dieser Option können Sie Subvol entfernen, ohne root zu sein, sondern nur normale Benutzer. Diese Funktion wird von lxc verwendet, wenn die Snapshots in btrfs-Subvolumes gespeichert werden
quelle
Schätze, es hängt davon ab, wie groß dein Basisbild ist. Ich würde wahrscheinlich einen neuen Container erstellen und Salt / Puppet usw. verwenden, um meine Container bereitzustellen, und nur lxc-clone für relativ größere Container (z. B. Entwicklungscontainer mit vielen installierten und konfigurierten Tools).
Beachten Sie, dass lxc-clone denselben Sicherungsspeicher wie die Quelle verwendet. Um Subvolume zu verwenden, müssen Sie Ihre Container mit "-B btrfs" erstellen. Beispielsweise:
Dann klonen Sie es mit:
--zfsroot
Wenn Sie zfs zum Speichern Ihrer Container verwenden, gibt es eine zusätzliche Option zum Erstellen von lxc, sodass Sie einen anderen zpool als den Standard-Tank auswählen können. Beispielsweise:Teile und genieße!
quelle
-B btrfs
standardmäßig verwendet wird - ich gehe davon aus, dass mein Debian mit BTRFS eingerichtet ist. Eigentlich habe ich meinen ersten Container (ein 32-Bit-Debian-Keuchen) ohne diese Option erstellt, und ein Subvolume wurde dafür erstellt.-B best
in aktion aber gut zu wissen!