Confirma ou reverta o instantâneo do LVM do Linux?

13

Estou prestes a realizar uma atualização experimental no meu servidor do CentOS 5. Se a atualização falhar, quero poder fazer o backup das alterações no sistema de arquivos. Esse cenário parece semelhante ao exemplo da Seção 3.8 do LVM HOWTO para os instantâneos de leitura / gravação do LVM2 - mas o exemplo é bastante carente de instruções reais.

1) Como eu iria confirmar as alterações, mesclando-as de volta na partição original?

2) Como eu reverteria as alterações, restaurando o sistema de arquivos de volta ao seu estado original? Devo supor que precisarei reiniciar vários serviços, se não for completamente reinicializado?

3) É possível capturar apenas alguns diretórios em uma partição, ou é uma operação de partição?

Obrigado ...

    
por Shewfig 02.04.2010 / 20:34

6 respostas

10

A funcionalidade de mesclagem de snapshots do LVM2 / device mapper está disponível se você estiver executando o Linux 2.6.33+ e usando o LVM 2.0.58 +:

lvconvert --merge

Veja esta postagem: link

Ele faz referência ao link (veja a seção 5, MD / DM) e changelog LVM em 2.0.58: ftp://sources.redhat.com/pub/lvm2/WHATS_NEW

Mas eu não posso te dizer ainda como usá-lo corretamente; -)

    
por 20.05.2010 / 11:04
18

Eu apenas tentei uma atualização baseada em instantâneos com o Ubuntu. E sim, eu precisei reiniciar várias vezes. Primeiro renomeie o original root-lv para outra coisa, assim você pode dar ao instantâneo o nome original (já que um upgrade cria muita mudança e as mudanças são mais rápidas no instantâneo do que no original):

 # lvrename lvm root root-old
 # lvcreate -n root -s lvm/root-old -L 10G

O tamanho deve ser escolhido de forma adequada. Então reinicie, então o 'novo' lvm / ubuntu é montado como root e você pode executar a atualização. Agora você pode testar a nova versão e até mesmo mudar para o sistema antigo por

 # lvrename lvm root root-new
 # lvrename lvm root-old root
 # reboot

Se você quiser descartar a atualização, basta executar (do sistema antigo)

# lvremove lvm/root-new

Se você quiser confirmar as alterações, basta executar (do sistema antigo)

# lvconvert --merge lvm/root-new

ou, a partir do novo sistema

# lvrename lvm root root-new
# lvconvert --merge lvm/root-new
# lvrename lvm root-old root

seguido de uma reinicialização. O sistema se recusará a fazer a fusão imediatamente, já que os volumes estão abertos. Assim, a mesclagem será iniciada durante a inicialização e continuada enquanto você já pode trabalhar com o sistema.

Ah, e a propósito: Ao mudar entre os sistemas, lembre-se de usar o kernel apropriado. Como o / boot não faz parte do lvm, os kernels antigos e novos seriam colocados lado a lado.

    
por 20.10.2011 / 09:04
9

Ok, acho que descobri a leitura do HOWTO 3.8.

  • Instantâneos somente leitura (como LVM1) contêm as diferenças de nível de bloco após a criação do instantâneo - o original ainda é alterado, mas o instantâneo retém uma representação do original. A leitura de a foto instantânea apresenta os dados como foram exibidos na ocasião.
  • Os instantâneos de leitura / gravação (padrão no LVM2) podem ser gravados em: eles são um fork da partição original. Escrever para o instantâneo não altera o original.

A maneira como um instantâneo funciona é um conjunto de alterações em nível de bloco do original. Então, quando o original é escrito, as seguintes coisas acontecem:

  1. Algo tenta escrever para o original.
  2. O original é lido e os blocos do original são copiados para o instantâneo.
  3. O original é alterado.
  4. O instantâneo contém as "diferenças inversas" - as alterações que fazem com que o original pareça quando o instantâneo foi criado.

Assim, jogar fora o instantâneo não afetará o original - porque o original foi alterado e o instantâneo continha apenas uma lista dessas mudanças.

Respondendo a minha própria pergunta:

Crie um novo instantâneo com o LVM. Se a atualização puder ser configurada para gravar no ponto de montagem da captura instantânea, use uma captura instantânea de R / W. Caso contrário, RO ou R / W servirão.

Então:

  • Se estiver escrevendo para o ponto de montagem R / W snapshot , efetue gravando o instantâneo no original e reverta jogando fora o instantâneo.
  • Se estiver escrevendo para o ponto de montagem original , efetue jogando fora o instantâneo e reverta escrevendo do instantâneo para o original.

Ainda não encontrei uma ferramenta específica para realizar essa mesclagem - e, considerando que meu cenário não é exatamente o uso pretendido dos instantâneos, pode não haver um. Parece um trabalho para o rdiff.

    
por 02.04.2010 / 22:42
3

O LVM funciona no nível do bloco. Até mesmo 'não sabe' o que é um sistema de arquivos. Portanto, você não pode capturar apenas alguns diretórios, a menos que um sistema de arquivos de um volume LVM diferente esteja montado lá.

Quando você faz um instantâneo LVM, você realmente solicita uma duplicata 'copy on write' de um volume. Qualquer bloco que seria alterado no volume instantâneo será armazenado sem modificações primeiro no snaphot. Então, para 'commit changes' você não precisa fazer nada. Apenas remova o volume do instantâneo.

Eu não sei bem qual é a maneira recomendada de 'reverter mudanças', já que nunca usei o LVM em tal cenário, mas acho que ele descreveu bem a documentação do LVM em algum lugar. Seja o que for, você provavelmente precisará reiniciar qualquer coisa que tenha sido alterada, uma reinicialização pode ser uma boa ideia.

    
por 02.04.2010 / 20:51
1
  1. Não há motivo para mesclar alguns. Basta remover o instantâneo, a fonte LV permanecer alterada
  2. A mesclagem necessária para reverter as alterações lvconvert --merge <snapshot name>
  3. O LVM funciona com dispositivos de bloco. Qualquer alteração relacionada ao FS deve ser feita por utilitários especiais (xfs_growfs, e2fsck, ...) de acordo com o tipo de FS

O instantâneo "congela" o estado do LV original. Remover instantâneo significa esquecer esse estado. Mesclar instantâneo significa retornar a esse estado

Mas dentro do LVM ele salva dados reescritos no snapshot: certifique-se de que o tamanho do snapshot atenda à quantidade esperada de alterações no LV e no snapshot

    
por 20.01.2017 / 11:02
-1

A documentação é confusa. Parece-me que lvcreate --merge significa reverter todas as alterações e lvremove significa confirmar as alterações. A distinção está em como você a usa.

Na maioria dos casos, você está apenas usando o instantâneo como uma cópia de ponto de tempo congelada somente leitura do volume ao vivo, e o volume ao vivo continua mudando. Neste caso, se você mesclar, logicamente isso significaria que você sobrescreveria o volume ao vivo com a cópia congelada, ou em outras palavras, mesclar significa mudanças de reversão e remover significa mudanças de confirmação.

Se você gravar no snapshot (uma nova opção com o LVM2), que não é o comportamento padrão e provavelmente requer a alteração da configuração em outro lugar para fazer com que os aplicativos gravem no snapshot em vez do volume original, o inverso seria verdade.

Por favor, seja cuidadoso ao lidar com os instantâneos, pois algumas pessoas irão assumir que você pretende usá-las de uma forma e lhe darão instruções que podem destruir seu sistema se você operar sob a suposição oposta!

    
por 05.12.2014 / 21:22