Backup LVM · 3 min read · Feb 14, 2026
Fazer Backup de Convidados LVM XEN Contendo LVs
Fazer Backup de Convidados LVM XEN Contendo LVs
No meu trabalho, todas as nossas máquinas Linux (exceto 3) são VMs Xen. Eu queria uma maneira de fazer backup delas sem o risco de os arquivos mudarem durante o processo. Por razões de desempenho, estou executando todas elas em Volumes Lógicos.
Dentro dessas VMs, o sistema operacional DomU está mais uma vez usando LVM por várias razões. Isso cria algumas dores de cabeça para fazer o backup.
A ideia básica é:
- Criar um Volume Lógico de snapshot
- Permitir que o Dom0 veja os Volumes Lógicos dentro do Volume Lógico (ufa).
- Montar os Volumes Lógicos recém-descobertos.
- Fazer backup
- Limpar
Existem algumas suposições que fiz. Eu assumi que você usou nomes personalizados para os Grupos de Volume em (ou ambos) o Dom0 (host) ou DomU (convidado). Pessoalmente, eu sempre uso um arquivo kickstart para criar meus DomUs, então eu defini o VG principal como XenVG00. Todos os meus DomUs estão em um VG no Dom0 chamado vg_xen - isso não é essencial, no entanto.
A segunda suposição é que você tem algum espaço livre no Grupo de Volume que contém as imagens do DomU. Não precisa ser muito, pois removeremos o volume de snapshot quando terminarmos com ele.
Primeiro, precisamos criar nosso snapshot:
[root@dom0 ~]# lvcreate -L 1G -s -n lv_snapshot /dev/vg_xen/lv_xen_snaptestLogical volume “lv_snapshot” createdIsso cria um volume de snapshot chamado lv_snapshot de um DomU que está usando um LV do Dom0 chamado lv_xen_snaptest. Isso é útil em si, pois você poderia agora tirar uma imagem desse LV. Eu faço exatamente isso para Recuperação de Desastre (dd if=/dev/vg_xen/lv_snapshot | bzip2 | dd of=/path/to/dr_image.bz2). Em um cenário de pior caso, essa imagem poderia ser dd’ed de volta para um novo Volume Lógico, em um novo sistema, para uma nova instância do Xen ser executada.
O que queremos fazer, no entanto, é acessar os arquivos nesse snapshot. Como o DomU está usando LVM, isso é infelizmente não trivial. Primeiro, precisamos usar kpartx para extrair os dados do LV:
[root@dom0 ~]# kpartx -av /dev/vg_xen/lv_snapshotadd map lv_snapshot1 : 0 208782 linear /dev/vg_xen/lv_snapshot 63
add map lv_snapshot2 : 0 20755980 linear /dev/vg_xen/lv_snapshot 208845Você pode ver que 2 LVs foram encontrados. Como lv_snapshot1 é menor, sabemos que é o arquivo de swap e lv_snapshot2 é o sistema de arquivos /. Agora precisamos fazer com que o LVM veja esses LVs e os ative.
[root@dom0 ~]# vgscanReading all physical volumes. This may take a while…
Found volume group “vg_xen” using metadata type lvm2
Found volume group “XenVG00” using metadata type lvm2
Found volume group “VolGroup00” using metadata type lvm2[root@dom0 ~]# vgchange -ay XenVG002 logical volume(s) in volume group “XenVG00” now activeAgora que os LVs estão ativos, podemos montá-los como se fossem qualquer outro disco.
[root@dom0 ~]# mount /dev/XenVG00/LVroot /mnt/E executar qualquer comando que quisermos
[root@dom0 ~]# rsync -avhp /mnt/ /backup/xen_test/Obviamente, agora temos que limpar após nós mesmos:
[root@dom0 ~]# umount /mnt
[root@dom0 ~]# vgchange -an XenVG000 logical volume(s) in volume group “XenVG00” now active[root@dom0 ~]# kpartx -d /dev/vg_xen/lv_snapshot
[root@dom0 ~]# lvremove /dev/vg_xen/lv_snapshotDo you really want to remove active logical volume “lv_snapshot”? [y/n]: y
Logical volume “lv_snapshot” successfully removedA coisa importante aqui é que em nenhum momento pausamos nossa VM, mas conseguimos fazer um backup completo dela.
O tamanho do volume de snapshot é a parte difícil aqui. Eu usei um LV de snapshot de 1G. Para dar uma ideia de quão grande ele precisa ser: no momento em que uma imagem de DR do meu wiki foi tirada, bzipped e enviada via SSH para outra máquina para armazenamento, o uso do snapshot atingiu quase 7%.
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.