Maneira adequada de lidair com recipientes LXC no btrfs

Digamos que temos um server com lxc instalado e um contêiner lxc utilizado como base img /vair/lib/lxc/ubuntu_base . Por simplicidade, vamos esquecer as mudanças de configuration depois de copy a base img.

Algumas pessoas sugerem o uso de subvolumes e instantâneos paira fazer novos contêineres, mas pode-se facilmente cp – re flixair com resultados similaires.

Então, qual é o modo propper (ou qual é melhor) paira gerenciair vários contêineres?

  • instantâneos

Desta forma pairece melhor, mas commands como lxc-destroy não funcionairão, pois não poderá apagair o diretório.

 btrfs subvolume snapshot /vair/lib/lxc/ubuntu_base /vair/lib/lxc/container_1 
  • cp com reflink

Não tenho certeza se há alguma diferença de performance entre isso ou instantâneos

 cp --reflink=always /vair/lib/lxc/ubuntu_base /vair/lib/lxc/container_1 
  • Ou há outra maneira melhor de fazer isso que eu não estou ciente.

editair:

Uma coisa que eu vi com a opção reflink é que você não pode excluir o contêiner base se outros estiviewem em execução, porque o /proc e /dev são montados e nunca mudairam, se a reference é sempre a mesma. Mas o desligamento de todos os recipientes coppied pairece ajudair.

Estou no Ubuntu LTS 14 e acabei de executair o seguinte (pela primeira vez mesmo) e funcionou como um chairme:

 lxc-stop -n ubuntu_base lxc-clone -o ubuntu_base -n ubuntu_base_c1 -s lxc-stairt -n ubuntu_base_c1 -d # make changes if needed lxc-stop -n ubuntu_base_c1 lxc-snapshot -n ubuntu_base_c1 

O uso de -s com lxc-clone levairá um instantâneo se a loja de backup for btrfs (no seu caso).

Verifique novos clones / instantâneos com

 lxc-ls -f btrfs subvolume list /vair/lib/lxc 

Espero que ajude!

Se você usair subvolumes btrfs paira lxc, você precisa adicionair a opção user_subvol_rm_allowed em seu /etc/fstab . Exemplo extraído de um file fstab:

UUID=XXXXXXXXXXXXXXXXXXXXXX / btrfs subvol=@,user_subvol_rm_allowed,defaults 0 0

a opção permitirá que você possa remoview subvol sem ser root, apenas user normal. Essa capacidade é usada pelo lxc quando os instantâneos são subvolumes btrfs

Adivinha que depende de quão grande seja sua image de base. Eu provavelmente iria criair um novo recipiente e usair Salt / Puppet etc paira fornecer meus contêineres e apenas lxc-clone paira contêineres relativamente maiores (por exemplo, recipientes dev com muitas ferramentas instaladas e configuradas).

Observe que o lxc-clone usairá a mesma loja de suporte que a fonte. Então, paira usair subvolume, você precisairá criair seus contêineres com "-B btrfs". Por exemplo:

 lxc-create -B btrfs -n mycontainer -t ubuntu 

Então clone com:

 lxc-clone -s mycontainer mynewcontainer 

Caso você esteja usando o zfs paira airmazenair seus contêineres, existe uma opção extra --zfsroot paira lxc-create paira que você possa escolher um zpool diferente do "tanque" padrão. Por exemplo:

 lxc-create -B zfs --zfsroot=data/lxc 

Compairtilhe e divirta-se!