Digamos que temos um servidor com o lxc instalado e um contêiner do lxc usado como img base /var/lib/lxc/ubuntu_base
. Para simplificar, vamos esquecer as alterações de configuração depois de copiar o img base.
algumas pessoas sugerem o uso de subvolumes e snapshots para criar novos contêineres, mas é possível facilmente fazer cp --reflink com resultados semelhantes.
Então, qual é o caminho mais adequado (ou melhor) para gerenciar vários contêineres?
- instantâneos
Dessa maneira, parece melhor, mas comandos como lxc-destroy não funcionarão, pois não poderão excluir o diretório.
btrfs subvolume snapshot /var/lib/lxc/ubuntu_base /var/lib/lxc/container_1
- cp com reflink
Não tenho certeza se há alguma diferença de desempenho entre este ou instantâneos
cp --reflink=always /var/lib/lxc/ubuntu_base /var/lib/lxc/container_1
- ou Existe alguma outra maneira melhor de fazer isso que eu não conheço.
editar:
Uma coisa que eu vi com a opção reflink é que você não pode excluir o contêiner base se outros estiverem em execução, porque o /proc
e /dev
são montados e nunca mudam, se a referência for sempre a mesma. Mas desligar todos os contêineres copiados parece ajudar.
fonte
Respostas:
Estou no Ubuntu LTS 14 e executei o seguinte (pela primeira vez) e funcionou como um encanto:
O uso de -s com lxc-clone fará uma captura instantânea se o armazenamento de backup for btrfs (no seu caso).
Verifique o novo clone / snapshots com
Espero que ajude!
fonte
-s
opção, e que as três últimas (lxc_start, lxc_stop, lxc_stop, lxc_snapshot) são apenas uma processo auxiliar para gerenciar futuras evoluções de contêineres. Está correto ?se você usará os subvolumes btrfs para lxc, precisará adicionar a opção
user_subvol_rm_allowed
no seu/etc/fstab
. Exemplo extraído de um arquivo fstab:UUID=XXXXXXXXXXXXXXXXXXXXXX / btrfs subvol=@,user_subvol_rm_allowed,defaults 0 0
a opção permitirá que você remova o subvol sem ser root, apenas usuário normal. Esse recurso é usado pelo lxc quando os instantâneos entram nos subvolumes btrfs
fonte
Acho que depende do tamanho da sua imagem de base. Eu provavelmente criaria um novo contêiner para o lxc e usaria Salt / Puppet etc. para provisionar meus contêineres e apenas o clone do lxc para contêineres relativamente maiores (por exemplo, contêineres de desenvolvimento com muitas ferramentas instaladas e configuradas).
Observe que o lxc-clone usará o mesmo armazenamento secundário da fonte. Portanto, para usar o subvolume, você precisará criar seus contêineres com "-B btrfs". Por exemplo:
Em seguida, clone-o com:
Caso você esteja usando o zfs para armazenar contêineres, existe uma
--zfsroot
opção extra para o lxc-create, para que você possa escolher um zpool diferente do "tanque" padrão. Por exemplo:Compartilhe e curta!
fonte
-B btrfs
é usada por padrão - presumo que meu debian esteja configurado com BTRFS. Na verdade, eu criei meu primeiro container (um debian wheezy de 32 bits) sem essa opção, e um subvolume foi criado para ele.-B best
em ação, mas é bom saber!