Instantâneos do LVM como uma estratégia de backup

17

Quão viável como uma estratégia de backup seria instantâneos periódicos de LVM de xen domU? Prós, contras, alguma dica?

Para mim, parece a solução perfeita para uma restauração rápida e sem cérebro. Qualquer investigação pode ocorrer no volume lógico quebrado, com o domU sendo executado com êxito sem interrupção.

EDITAR:

Aqui é onde estou agora, ao fazer backups completos do sistema.

  • instantâneo lvm do disco domU
  • um novo volume lógico cujo tamanho seja igual ao tamanho da captura instantânea.
  • dd se = / dev / instantâneo de = / dev / new_lv
  • descarte de instantâneo com lvremove
  • verificação opcional com kpartx / mount / ls

Agora eu preciso automatizar isso.

Karolis T.
fonte

Respostas:

32

Os instantâneos do LVM destinam-se a capturar o sistema de arquivos em um estado congelado. Eles não devem ser um backup por si só. No entanto, são úteis para obter imagens de backup consistentes porque a imagem congelada não pode e não será alterada durante o processo de backup. Portanto, embora você não os utilize diretamente para fazer backups de longo prazo, eles terão um grande valor em qualquer processo de backup que você decidir usar.

Existem algumas etapas para implementar um instantâneo. A primeira é que um novo volume lógico deve ser alocado. O objetivo deste volume é fornecer uma área em que deltas (alterações) no sistema de arquivos sejam gravados. Isso permite que o volume original continue sem interromper qualquer acesso de leitura / gravação existente. A desvantagem disso é que a área da captura instantânea é de tamanho finito, o que significa que em um sistema com gravações ocupadas, ela pode ser preenchida rapidamente. Para volumes que possuem atividade de gravação significativa, convém aumentar o tamanho do seu instantâneo para permitir espaço suficiente para que todas as alterações sejam registradas. Se o seu instantâneo exceder (enche), o instantâneo será interrompido e marcado como inutilizável. Caso isso aconteça, você desejará liberar seu instantâneo para poder voltar a colocar o volume original online. Quando o lançamento estiver concluído, você '

A segunda coisa que acontece é que o LVM agora "troca" os verdadeiros propósitos dos volumes em questão. Você pensaria que o instantâneo recém-alocado seria o lugar para procurar por quaisquer alterações no sistema de arquivos; afinal, é para onde estão indo todas as gravações, certo? Não, é o contrário. Os sistemas de arquivos são montados nos nomes de volume LVM , portanto, trocar o nome por baixo do resto do sistema seria um não-não (porque o instantâneo usa um nome diferente ). Portanto, a solução aqui é simples: quando você acessar o nome do volume original, ele continuará se referindo à versão ao vivo (leitura / gravação) do volume do qual você fez o instantâneo. O volume da captura instantânea que você cria se refere ao arquivo congelado(somente leitura) do volume que você deseja fazer backup. Um pouco confuso no começo, mas fará sentido.

Tudo isso acontece em menos de 2 segundos. O resto do sistema nem percebe. A menos, é claro, que você não libere o instantâneo antes que ele transborde ...

Em algum momento, você desejará liberar seu instantâneo para recuperar o espaço que ele ocupa. Quando a liberação é concluída, o volume da captura instantânea é liberado novamente no volume e o original permanece.

Eu não recomendo perseguir isso como uma estratégia de backup a longo prazo. Você ainda está hospedando dados na mesma unidade física que pode falhar, e a recuperação do seu sistema de arquivos de uma unidade que falhou não é um backup.

Então, em poucas palavras:

  • Os instantâneos são bons para auxiliar backups
  • Os instantâneos não são, por si só, uma forma de backup
  • Instantâneos não duram para sempre
  • Um instantâneo completo não é uma coisa boa
  • Os instantâneos precisam ser liberados em algum momento
  • O LVM é seu amigo, se você o usar com sabedoria.
Avery Payne
fonte
4
Além disso, o desempenho do instantâneo LVM diminui linearmente - 8 instantâneos 8 vezes o IO.
Steven
9
Há alguns pontos em sua descrição que eu acho incorretos. Nas versões atuais do LVM, se um instantâneo ficar cheio, ele é simplesmente marcado como inutilizável e precisa ser excluído. A E / S no dispositivo não é interrompida. Em segundo lugar, quando você exclui um instantâneo, nenhum dado é copiado para o volume original. Essencialmente, quando você grava no volume ativo, os blocos originais são copiados primeiro para o instantâneo e, em seguida, os blocos ativos são atualizados. Então, quando você solta o instantâneo, é apenas uma questão de remover a entrada do mapeador de dispositivos. Nenhuma cópia necessária.
21411 Kamil Kisiel
2
No interesse da perfeição, Kamil Kisiel está correto. Veja: tldp.org/HOWTO/LVM-HOWTO/snapshotintro.html
ktower
1
Depois de muito reclamar de mim mesma por ter sido mal informada, a resposta foi modificada com base em várias fontes de documentação e discussão. Desculpe pessoal, meu mal.
Avery Payne
10

Os instantâneos do LVM são ótimos para poder fazer backup do servidor sem deixá-lo offline. Como afirmado, os instantâneos do LVM são cópias quase instantâneas. Você os cria usando olvcreate comando da mesma forma que faria para criar o próprio LV, apenas a --snapshotopção e o LV original em vez do VG. Por exemplo:

lvcreate -L <LV size> -s -n <snapshot name> /dev/<VG name>/<LV name>

Isso criará um instantâneo do LV fornecido com o nome do instantâneo especificado no qual você poderá montar e usar esse LV do instantâneo para executar seu backup sem se preocupar com o uso ativo dos arquivos. Isso é particularmente útil se você estiver tentando fazer backup de um servidor de banco de dados ativo.

Depois de concluir o backup a partir do instantâneo, você deverá removê-lo para reduzir qualquer sobrecarga adicional de E / S ou outros problemas de desempenho, como outros usuários mencionaram usando:

lvremove /dev/<VG name>/<snapshot name>

Embora as capturas instantâneas do LVM possam ser inestimáveis ​​na produção de um backup confiável de sistemas como bancos de dados e de forma que você normalmente queira desligar o backup para evitar a contenção de arquivos, eles não são ideais para operações de longo prazo como uma restauração rápida.

Jeremy Bouse
fonte
9

Não é uma boa ideia, IMO.

Os instantâneos são implementados de maneira copiar-para-gravar, para que você transforme cada gravação em uma leitura e duas gravações (o bloco para o qual você está atualizando é lido primeiro no volume principal e armazenado no volume da captura instantânea antes que novos dados sejam inseridos. seu lugar), para que você veja alguma degradação no desempenho se muita gravação for comum nas VMs.

Além disso, IIRC, se o volume do instantâneo ficar cheio, ele será simplesmente descartado sem cerimônia. Isso não é bom para fins de backup! Portanto, se você tentar isso como um método de backup, certifique-se de aumentar o volume da captura instantânea o suficiente para lidar com todas as alterações que ocorrerão durante a vida útil da captura instantânea. Obviamente, se você está ciente e monitora o problema de tamanho e o desempenho não é um problema para você, o que você sugere pode ser uma adição útil a outros processos de backup existentes.

Os instantâneos do LVM são muito úteis como parte de um processo de backup (tirar um instantâneo, fazer backup do instantâneo para outro lugar para garantir que o backup seja consistente sem precisar desativar as atualizações no volume "real", soltar o instantâneo posteriormente), ignorar outras coisas, mas não pretendem ser um recurso de backup por conta própria.

David Spillett
fonte
Talvez eu não entenda como os instantâneos funcionam. O manual diz que um instantâneo é uma cópia quase instantânea do volume lógico, evitando a necessidade de colocar o sistema que o usa offline. Pela sua descrição, parece que um instantâneo é mais uma ramificação, réplica, e não uma cópia congelada. O instantâneo é atualizado com todas as alterações feitas no sistema original depois que é feito? Nesse caso, preciso retirar os dados imediatamente e destruir o instantâneo, porque não se destina a ser um mecanismo de armazenamento para backups? Obrigado!
Karolis T.
2
É uma cópia congelada do volume do qual é criado, mas contém apenas blocos que foram alterados desde a captura do instantâneo (portanto, o volume do instantâneo pode ser muito menor do que o volume do qual é instantâneo). Se os blocos são atualizados no volume ativo, o conteúdo dos blocos originais é adicionado ao armazenamento do instantâneo, portanto, quando você olha para o instantâneo, o LVM pode servir os blocos originais em vez dos atualizados.
David Spillett
Mas se for alterado (o instantâneo), de onde vem esse "congelado"? Digamos que eu tenha esse cenário, um sistema em funcionamento de alguma forma é corrompido ao longo do tempo. Eu tenho um instantâneo dele quando estava funcionando corretamente. O instantâneo será uma representação do sistema enquanto ainda estava funcionando corretamente ou terá as alterações que danificaram o sistema original? Espero que eu seja claro o suficiente, só quero ter certeza de que realmente entendo.
Karolis T.
Para entender de onde vem o congelado, saiba que agora você tem dois volumes separados - o original que contém o sistema de arquivos ativo e o instantâneo, que altera a versão congelada do sistema de arquivos. Veja minha resposta para mais detalhes.
Avery Payne
1
Vocês fazem parecer mais complicado do que é. O instantâneo armazena o estado do sistema de arquivos de origem como estava quando o instantâneo foi criado. Quando o fs de origem é alterado, o instantâneo não é alterado, permitindo que você aponte seu programa de backup para ler o snapshot em vez do fs de origem. Sim, uma cópia na gravação acontece atrás das telas, mas o usuário não percebe isso, exceto pelo uso extra de E / S.
Martijn Heemels
6

Você precisará garantir que os dados no disco estejam em um estado consistente antes que o instantâneo seja feito. por exemplo, o mysql pode ter dados armazenados em cache na memória que precisam ser forçados a disco, despejando o banco de dados ou desligando-o. Consulte os manuais dos seus aplicativos para obter detalhes.

pgs
fonte
5

Sob o aspecto inteligente, os LVMs são na verdade 'apenas' um truque de mapeador de dispositivos. Criar um instantâneo com lvcreate não é muito mais que um wrapper para algumas coisas do dmsetup. O wrapper cria um novo dispositivo (o volume da captura instantânea) de um volume antigo (o lv original) e um novo (o volume de cópia na gravação). Junto com isso, o LV original é renomeado para -real (veja abaixo, que é dmsetup ls --tree output). Esse LV -real é mapeado para o volume da captura instantânea e o volume original, para que possa ser usado nos dois locais. O volume de cópia na gravação funciona como uma sobreposição ao LV -real. O -snap LV mostra a combinação do volume de cópia na gravação e do volume -real. Isso realmente cria alguma sobrecarga de desempenho.

Volume00-snap (253:11)
 |-Volume00-snap-cow (253:13)
 |  `- (104:2)
 `-Volume00-LogVol01-real (253:12)
    `- (104:2)

Volume00-LogVol01 (253:5)
 `-Volume00-LogVol01-real (253:12)
    `- (104:2)

Ao remover o instantâneo, novamente algumas renomeações e mapeamentos acontecem. Depois, a situação novamente parecerá algo como

Volume00-LogVol01 (253:5)
 `- (104:2)

Quanto ao quanto esse é um bom método de fazer backup de coisas: pode ser, se você levar em conta que isso (1) não ajudará a RAM das máquinas virtuais, (2) criará uma penalidade de desempenho e (3) você precisará para armazenar imagens do instantâneo em outro local.

O VMware VCB também funciona com instantâneos, mas não com LVM.

wzzrd
fonte
4

Mesmo que os instantâneos não tenham impactado o desempenho, você precisa entender: Os instantâneos não são mais um backup do que uma cópia para outra pasta no mesmo disco.

Se o disco travar, seus dados e seu backup serão perdidos. Mesmo se você atribuir a área do instantâneo a outro PE no VG, ele conterá apenas os dados modificados desde o instantâneo.

Fazer backup significa uma cópia pelo menos para uma unidade completamente separada como requisito mínimo.

Sven
fonte
Sim eu entendo isso. O RAID 1 está em vigor para proteger contra falhas do dispositivo de armazenamento, fazendo backup em local remoto - contra a corrupção do software. Estou considerando os instantâneos do LVM como uma ferramenta para uma restauração MUITO rápida quando você não sabe o que aconteceu e precisa do sistema on-line agora. Quaisquer outras opções, mais rápido do que restaurar uma domU a partir de um backup do LVM?
Karolis T.
3

Eu uso essa configuração para capturas instantâneas de máquinas de servidor vmware e bancos de dados mysql. funciona bem até agora. houve algumas restaurações - tudo sem problemas. Uma coisa a considerar - ao executar o snapshot lvm, obtém um desempenho significativo para operações de E / S. olhe aqui . ignore o fato de falarem sobre mysql, operações de E / S são operações de E / S ... não importa que tipo de dados esteja no lvm.

pQd
fonte
1
aha. Sim - presumo que o instantâneo será tirado e exportado para o servidor de armazenamento remoto. não é deixado no host local.
PQD
2

Eu uso instantâneos do lvm apenas para copiar o DomU Lv outro em um Vg separado, onde cada domínio tem três "nós" de backup à disposição.

Depois disso, o instantâneo é destruído e os Lvs de backup permanecem até a próxima rodada. Se eu tiver que fazer uma restauração, basta escolher um Lv de origem no backup Vg e copiá-lo para o domínio Lv.

De vez em quando, um Lv de backup é despejado em um arquivo de imagem em um servidor separado.

Tudo isso é automatizado via script, com um backup a cada dois dias e um despejo a cada semana.

Eu até tinha um modo de "pânico" em mente, onde o Domain Lv seria restaurado, mas executado a partir de um instantâneo, e redefinido a cada 2 horas, para manter o site on-line em caso de hacks graves, até que uma defesa adequada pudesse ser organizada .

Berzemus
fonte
1

O que aconteceu com a ideia de linha de defesa do 'modo de pânico'?

NginUS
fonte