Estou prestes a executar uma atualização experimental no meu servidor CentOS 5. Se a atualização falhar, desejo poder fazer o backup das alterações no sistema de arquivos. Esse cenário parece semelhante ao exemplo na Seção 3.8 do instantâneo LTO do HOWTO para LVM2 de leitura e gravação - mas o exemplo está faltando no tutorial real.
Como eu confirmaria as alterações, mesclando-as novamente na partição original?
Como eu reverteria as alterações, restaurando o sistema de arquivos de volta ao seu estado original? Devo assumir que precisarei reiniciar vários serviços, se não reiniciar completamente?
É possível capturar instantâneos apenas determinados diretórios em uma partição ou é uma operação para toda a partição?
dmsetup targets
deve mostrar a mesclagem de instantâneo, se esse for o caso, o comando mesclar, aplicado ao snapshot-lv reverterá de volta ao estado em que o instantâneo foi tirado.Eu apenas tentei uma atualização baseada em instantâneo com o Ubuntu. E sim, eu precisava reiniciar várias vezes. Primeiro, renomeie o root-lv original para outra coisa, para que você possa dar ao snapshot o nome original (uma vez que uma atualização cria muitas alterações e as alterações são mais rápidas no snapshot do que no original):
O tamanho deve ser escolhido adequadamente. Em seguida, reinicie, para que o 'novo' lvm / ubuntu seja montado como root e você possa executar a atualização. Agora você pode testar a nova versão e até mudar para o sistema antigo,
Se você deseja interromper a atualização, basta executar (no sistema antigo)
Se você deseja confirmar as alterações, basta executar (a partir do sistema antigo)
ou, a partir do novo sistema
seguido por uma reinicialização. O sistema se recusará a fazer a mesclagem imediatamente, pois os volumes estão abertos. Portanto, a mesclagem será iniciada durante a inicialização e continuada enquanto você já puder 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.
fonte
Ok, acho que descobri a releitura do HOWTO 3.8.
A maneira como um instantâneo funciona é um conjunto de alterações no nível de bloco do original. Portanto, quando o original é gravado, acontecem as seguintes coisas:
Portanto, jogar fora o instantâneo não afetará o original - porque o original foi alterado e o instantâneo continha apenas uma lista dessas alterações.
Respondendo à 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 do instantâneo, use um instantâneo R / W. Caso contrário, RO ou R / W servirão.
Então:
Ainda não encontrei uma ferramenta específica para executar essa mesclagem - e, como meu cenário não é exatamente o uso pretendido dos instantâneos, pode não haver um. Parece um trabalho para rdiff.
fonte
lvconvert --merge <snapshot-name>
"restaurará" seu disco original para esse instantâneo e excluirá esse instantâneo. Obviamente, você pode restaurá-lo rapidamente.O LVM funciona no nível do bloco. Até 'não sabe' o que é um sistema de arquivos. Portanto, não é possível capturar instantâneos apenas determinados diretórios, a menos que um sistema de arquivos de um volume LVM diferente esteja montado lá.
Ao criar um instantâneo do LVM, você realmente solicita a duplicação 'copy on write' de um volume. Qualquer bloco que seria alterado no volume da captura instantânea será armazenado sem modificação na captura instantânea primeiro. Portanto, para 'confirmar alterações', você não precisa fazer nada. Basta remover o volume da captura instantânea.
Não sei bem qual é a maneira recomendada de 'reverter alterações', pois nunca usei o LVM nesse cenário, mas acho que ele foi descrito bem na documentação do LVM em algum lugar. Seja o que for, você provavelmente precisará reiniciar tudo o que foi alterado, uma reinicialização pode ser uma boa idéia.
fonte
lvconvert --merge <snapshot name>
O instantâneo 'congela' o estado original do LV. Remover instantâneo significa esquecer esse estado. Mesclar snapshot significa retornar a esse estado
Porém, dentro do LVM, ele salva os dados reescritos no instantâneo: verifique se o tamanho do instantâneo atende à quantidade esperada de alterações no LV e no instantâneo
fonte
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 congelado no tempo e somente leitura do volume ao vivo, e o volume ao vivo continua mudando. Nesse caso, se você mesclar, logicamente isso significaria que você substituiria o volume ao vivo com a cópia congelada ou, em outras palavras, mesclar significa mudanças de reversão e remover significa alterações de confirmação.
Se você gravar no instantâneo (uma nova opção com o LVM2), que não é o comportamento padrão que parece, e provavelmente requer alteração de configuração em outro local para fazer com que os aplicativos gravem no instantâneo em vez do volume original, o inverso será verdadeiro.
Tenha cuidado ao lidar com instantâneos, pois algumas pessoas assumem que você pretende usá-los de uma maneira e fornecerão instruções que podem destruir seu sistema se você operar com a hipótese oposta!
fonte