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?
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
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
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!