Qual é uma estratégia de backup apropriada para LXD com back-ends de armazenamento BTRFS

Qual é uma estratégia de backup apropriada para LXD com back-ends de armazenamento BTRFS

Estou prestes a reconfigurar meu servidor doméstico do zero e me pergunto qual seria a melhor estratégia para fazer backup de meus contêineres LXD. Enquanto isso, estou executando o Ubuntu 20.04 LTS e tenho alguns serviços configurados para rodar como contêineres LXD/LXC. Por exemplo:

  • contêiner "cloudserv" executando seafile
  • contêiner “webservice” executando nginx e MariaDB

Esses dois contêineres estão localizados no meu SSD com sistema de arquivos btrfs. Para armazenamento de dados, estou usando uma matriz de discos (também com BTRFS), onde criei outro pool de armazenamento LXC com um volume de armazenamento que é anexado ao contêiner seafile para armazenar todos os dados. O layout é mais ou menos assim:

SSD

  • Sistema de arquivos BTRFS
    • Pool de armazenamento "padrão"
      • contêiner "cloudserv"
      • contêiner "serviço web"
      • imagens

HDDs

  • Sistema de arquivos BTRFS
    • Conjunto de armazenamento "DataPool1"
      • volume de armazenamento personalizado “seafile-data” -> anexado ao contêiner “cloudserv”

Ao usar o BTRFS, eu esperava poder usar instantâneos do BTRFS e enviar e receber ferramentas para transferir facilmente contêineres e volumes de armazenamento como subvolumes, por exemplo, para um RasPi com um volume BTRFS anexado. Mas lendo, por exemploManual LXDouComo fazer backup e restaurar contêineres LXDTenho a impressão de que sempre tenho que criar um tarball para fazer backup de uma instância que pode então ser transferida. Isso implicaria que eu realmente perderia alguns dos recursos atraentes do BTRFS, como ser capaz de enviar/receber subvolumes/instantâneos e fazer backups incrementais de minhas instâncias e dados LXC.

Sinto falta de alguma coisa? Alguém pode dar algumas dicas sobre o fluxo de trabalho de backup apropriado para LXD/LXC com BTRFS?

Responder1

Se você instalar o LXD em seu servidor remoto e ambos os servidores usarem Btrfs, você poderá usar oTransferência de instância otimizadaassim:

lxc remote add mybtrfsremotebackupserver XXX
lxc snapshot mycontainer snap1
lxc copy mycontainer mybtrfsremotebackupserver: --verbose

E será utilizado btrf-sendpara a transferência inicial do contêiner e de todos os seus instantâneos.

Então você tem uma maneira muito conveniente de manter o contêiner e seus instantâneos apenas enviando alterações incrementais usando a opção--refresh(LXD 3.7)

lxc copy --refresh mycontainer mybtrfsremotebackupserver: --verbose

Mas infelizmente ele usa rsync, pelo menos no LXD 4.0, então você perderá a btrfs-sendotimização.

Verifique este problema para obter mais informações:Solicitação de recurso: sinalizador --snapshots-only para cópia

Também existe"Atualizar suporte para cópias de volumes personalizados"mas não tenho certeza se usa o caminho otimizado ou se pode ser útil para o seu objetivo. Você também pode verificar --optimized-storage na exportação lxc

Cumprimentos

informação relacionada