web-dev-qa-db-fra.com

Comment migrer Physical 12.04 Machine dans LXC

Existe-t-il un moyen standard (ou des outils standard) de migrer des machines physiques vers des conteneurs LXC pour Ubuntu? Je travaille avec des machines 12.04.5. J'ai croisé

Mais c'est spécifiquement pour Debian. La procédure semble être

  1. copier le système de fichiers racine
  2. supprimer les fichiers inutiles
  3. configurer le conteneur

Cela semble être un processus facile, mais je suis totalement nouveau chez LXC et j'espère quelque chose d'un peu moins sujet aux erreurs. Une autre idée que j'avais était de créer un conteneur Ubuntu à partir d'un modèle, puis de le copier sur ce système de fichiers. Je parie que beaucoup de/etc serait injustement malmené.

2
Jeremy

Depuis que j'ai posté cette question, j'ai effectué ce processus une demi-douzaine de fois sans trop de problèmes. J'ai pensé ajouter quelques conseils de ce que j'ai appris dans l'espoir que quelqu'un les trouve utiles:

Tout ce que vous avez à faire est de copier le système de fichiers racine dans le répertoire rootfs du conteneur (/ var/lib/lxc/YOUR_CONTAINER/rootfs/pour le stockage de sauvegarde sur disque). Exclure/proc,/dev,/sys et/tmp.

Ensuite:

  • Faire fstab vide dans le conteneur
  • Assurez un ensemble minimal de fichiers de périphérique sous/dev. Je copie les fichiers de périphérique à partir d'un exemple de conteneur que j'ai créé à l'aide d'un modèle.
  • Si vous envisagez d'utiliser lxcbr0 pour la mise en réseau, définissez l'interface réseau sur DHCP dans/etc/network/interfaces
  • Si vous souhaitez passer à une interface physique, définissez-la sur statique ou manuelle. Si manuel, indiquez l'adresse IP dans la configuration du conteneur. Ne définissez pas sur DHCP.
  • assurez-vous de définir un hwaddr dans votre configuration de conteneur. Si vous ne le faites pas, LXC en générera un de manière aléatoire lorsque le conteneur se chargera, ce qui causerait de nombreuses entrées ARP obsolètes sur votre réseau.
  • lisez/usr/share/lxc/templates/lxc-ubuntu. Portez une attention particulière à la fonction configure_ubuntu (). Vous voudrez probablement exécuter la plupart de ces commandes dans votre conteneur.

Une fois le conteneur installé, parcourez tous les processus de pstree en supprimant ceux qui ne sont plus nécessaires dans les conteneurs (udevd, ntpdate, mdadm, etc.). N'hésitez pas à supprimer tous les packages du noyau.

Voici un exemple de configuration de conteneur pour la complétude. Cette configuration est destinée à un hôte de confiance. Le conteneur dans cet exemple est précis.

lxc.include = /usr/share/lxc/config/ubuntu.common.conf
lxc.start.auto=1
lxc.rootfs = /var/lib/lxc/myhost/rootfs
lxc.mount = /var/lib/lxc/myhost/fstab
lxc.utsname = myhost
lxc.Arch = AMD64

# Network configuration
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0
lxc.network.ipv4 = 172.27.3.13/24
lxc.network.ipv4 = 172.27.3.15/24
lxc.network.ipv4.gateway = 172.27.3.1
lxc.network.hwaddr = 52:12:a1:a5:d3:23

Si le système d'exploitation hôte est précis, vous voudrez également l'inclure dans votre configuration. Le fichier commun ne sera pas disponible.

lxc.devttydir = lxc
lxc.tty = 4
lxc.pts = 1024
lxc.cap.drop = sys_module mac_admin
lxc.pivotdir = lxc_putold
4
Jeremy