Disons que nous avons un serveur avec lxc installé et un conteneur lxc utilisé comme img de base /var/lib/lxc/ubuntu_base
. Pour plus de simplicité, oublions les changements de configuration après avoir copié l'img de base.
certaines personnes suggèrent d'utiliser des sous-volumes et des instantanés pour créer de nouveaux conteneurs, mais on pourrait facilement faire cp - reflink avec des résultats similaires.
Alors, quelle est la meilleure façon (ou la meilleure) de gérer plusieurs conteneurs?
- instantanés
Cette méthode semble la meilleure, mais des commandes comme lxc-destroy ne fonctionneront pas car elles ne pourront pas supprimer le répertoire.
btrfs subvolume snapshot /var/lib/lxc/ubuntu_base /var/lib/lxc/container_1
- cp avec reflink
Je ne sais pas s'il existe une différence de performances entre ce ou des instantanés
cp --reflink=always /var/lib/lxc/ubuntu_base /var/lib/lxc/container_1
- ou Y a-t-il une autre meilleure façon de faire cela que je ne connais pas.
Éditer:
Une chose que j'ai vue avec l'option reflink, c'est que vous ne pouvez pas supprimer le conteneur de base si d'autres sont en cours d'exécution, car le /proc
et /dev
sont montés et n'ont jamais été modifiés, donc la référence est toujours la même. Mais la fermeture de tous les conteneurs recopiés semble aider.
la source
Réponses:
Je suis sur Ubuntu LTS 14 et je viens de lancer ce qui suit (pour la première fois même) et cela a fonctionné comme un charme:
L'utilisation de -s avec lxc-clone prendra un instantané si le magasin de sauvegarde est btrfs (dans votre cas).
Vérifiez le nouveau clone / instantanés avec
J'espère que cela pourra aider!
la source
-s
option, et que les trois dernières (lxc_start, lxc_stop, lxc_snapshot) ne sont qu'un processus d'aide pour gérer les futures évolutions des conteneurs. Est-ce correct ?si vous utilisez des sous-volumes btrfs pour lxc, vous devez ajouter l'option
user_subvol_rm_allowed
dans votre/etc/fstab
. Exemple extrait d'un fichier fstab:UUID=XXXXXXXXXXXXXXXXXXXXXX / btrfs subvol=@,user_subvol_rm_allowed,defaults 0 0
l'option vous permettra de supprimer subvol sans être root, uniquement utilisateur normal. Cette capacité est utilisée par lxc lorsque les snapshots vont dans les sous-volumes btrfs
la source
Je suppose que cela dépend de la taille de votre image de base. Je créerais probablement un nouveau conteneur lxc et utiliserais Salt / Puppet etc. pour provisionner mes conteneurs et seulement lxc-clone pour des conteneurs relativement plus gros (par exemple des conteneurs de développement avec beaucoup d'outils installés et configurés).
Notez que lxc-clone utilisera le même magasin de sauvegarde que la source. Donc, pour utiliser le sous-volume, vous devrez créer vos conteneurs avec "-B btrfs". Par exemple:
Ensuite, clonez-le avec:
Dans le cas où vous utilisez zfs pour stocker vos conteneurs, il existe une
--zfsroot
option supplémentaire pour lxc-create afin que vous puissiez choisir un zpool autre que le "tank" par défaut. Par exemple:Partagez et profitez!
la source
-B btrfs
soit utilisée par défaut - je suppose que mon debian est configuré avec BTRFS. En fait, j'ai créé mon premier conteneur (un debian wheezy 32 bits) sans cette option, et un sous-volume a été créé pour cela.-B best
en action mais bon à savoir!