Backup LVM · 8 min read · Nov 05, 2025

Fazer Backup (E Restaurar) Partições LVM Com Snapshots LVM

Fazer Backup (E Restaurar) Partições LVM Com Snapshots LVM

Versão 1.1
Autor: Falko Timme

Este tutorial mostra como você pode criar backups de partições LVM com um recurso LVM chamado snapshots LVM. Um snapshot LVM é uma cópia exata de uma partição LVM que contém todos os dados do volume LVM a partir do momento em que o snapshot foi criado. A grande vantagem dos snapshots LVM é que eles podem ser usados para reduzir significativamente o tempo em que seus serviços/bancos de dados ficam fora do ar durante os backups, pois um snapshot geralmente é criado em frações de segundo. Após o snapshot ser criado, você pode fazer backup do snapshot enquanto seus serviços e bancos de dados estão em operação normal.

Eu também mostrarei como restaurar uma partição LVM a partir de um backup em um capítulo extra no final deste tutorial.

Este documento vem sem garantia de qualquer tipo! Eu não dou nenhuma garantia de que isso funcionará para você!

1 Nota Preliminar

Eu testei isso em um servidor Debian Etch com o endereço IP 192.168.0.100 e o nome do host server1.example.com. Ele possui dois discos rígidos:

  • /dev/sda (10GB) que contém uma pequena partição /boot (não-LVM), uma partição / (LVM, um pouco menos de 10GB) e uma partição swap (LVM)
  • /dev/sdb (60GB), não utilizado no momento; será usado para criar uma partição /backups de 30GB (LVM) e para os snapshots da partição / (10GB - isso é suficiente porque a partição / é um pouco menos de 10GB).

Eu criei uma imagem VMware do Debian Etch que você pode baixar e executar no VMware Server ou VMware Player (veja https://www.howtoforge.com/import_vmware_images para aprender como fazer isso). Ela tem as mesmas especificações que meu sistema de teste acima. A senha root é howtoforge. Usando essa imagem VMware, você pode seguir os mesmos passos que eu neste tutorial para se acostumar a usar snapshots LVM.

Para restaurar a partição / a partir do seu backup (coberto no último capítulo deste tutorial), você precisa de um CD Live do Linux que suporte LVM, como Knoppix ou o CD de instalação Netinstall do Debian Etch, que você pode usar como um CD de resgate se especificar rescue no prompt de inicialização. Eu usarei o CD de instalação Netinstall do Debian Etch neste exemplo (a lista de espelhos está disponível aqui: http://www.debian.org/CD/http-ftp/ - eu baixei este: http://ftp.de.debian.org/debian-cd/4.0_r0/i386/iso-cd/debian-40r0-i386-netinst.iso).

Para criar um backup da partição / eu seguirei os seguintes passos: eu criarei um snapshot da partição / e, em seguida, criarei um backup do snapshot (em vez da partição / real!) na partição /backups (claro, você pode armazenar esse backup onde quiser - em vez de criar uma partição LVM /backups extra, você também poderia usar um disco USB externo). O backup pode ser feito usando sua solução de backup preferida, por exemplo, com tar ou dd. Depois, destruirei o snapshot porque não é mais necessário e usaria recursos do sistema.

Você não precisa necessariamente de um segundo HDD para os snapshots - você pode usar o primeiro, desde que tenha espaço livre (não particionado) suficiente nele para criar snapshots (você deve usar o mesmo espaço para os snapshots que usa para a partição que deseja fazer backup). E como mencionado antes, você pode usar um disco USB para fazer backup dos snapshots.

Para saber mais sobre LVM, você deve ler este tutorial: https://www.howtoforge.com/linux_lvm

2 Criar A Partição LVM /backups

(Se você quiser armazenar seus backups em outro lugar, por exemplo, em um disco USB externo, você não precisa fazer isso.)

Nossa situação atual é a seguinte:

pvdisplay

server1:~# pvdisplay
— Volume físico —
PV Nome /dev/sda5
VG Nome server1
PV Tamanho 9.76 GB / não utilizável 0
Alocável sim (mas cheio)
PE Tamanho (KByte) 4096
Total PE 2498
PE Livre 0
PE Alocado 2498
PV UUID vQIUga-221O-GIKj-81Ct-2ITT-bKPw-kKElpM

vgdisplay

server1:~# vgdisplay
— Grupo de volume —
VG Nome server1
ID do Sistema
Formato lvm2
Áreas de Metadados 1
Número de Sequência de Metadados 3
Acesso VG leitura/gravação
Status VG redimensionável
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
Tamanho VG 9.76 GB
PE Tamanho 4.00 MB
Total PE 2498
Alloc PE / Tamanho 2498 / 9.76 GB
PE Livre / Tamanho 0 / 0
VG UUID jkWyez-c0nT-LCaE-Bzvi-Q4oD-eD3Q-BKIOFC

lvdisplay

server1:~# lvdisplay
— Volume lógico —
LV Nome /dev/server1/root
VG Nome server1
LV UUID UK1rjH-LS3l-f7aO-240S-EwGw-0Uws-5ldhlW
LV Acesso de Gravação leitura/gravação
LV Status disponível

LV Tamanho 9.30 GB
LE Atual 2382
Segmentos 1
Alocação herdar
Setores de leitura antecipada 0
Dispositivo de bloco 254:0

— Volume lógico —
LV Nome /dev/server1/swap_1
VG Nome server1
LV UUID 2PASi6-fQV4-I8sJ-J0yq-Y9lH-SJ32-F9jHaj
LV Acesso de Gravação leitura/gravação
LV Status disponível

LV Tamanho 464.00 MB
LE Atual 116
Segmentos 1
Alocação herdar
Setores de leitura antecipada 0
Dispositivo de bloco 254:1

fdisk -l

server1:~# fdisk -l

Disco /dev/sda: 10.7 GB, 10737418240 bytes
255 cabeçotes, 63 setores/track, 1305 cilindros
Unidades = cilindros de 16065 * 512 = 8225280 bytes

Dispositivo Boot Início Fim Blocos Id Sistema
/dev/sda1 * 1 31 248976 83 Linux
/dev/sda2 32 1305 10233405 5 Estendido
/dev/sda5 32 1305 10233373+ 8e Linux LVM

Disco /dev/sdb: 64.4 GB, 64424509440 bytes
255 cabeçotes, 63 setores/track, 7832 cilindros
Unidades = cilindros de 16065 * 512 = 8225280 bytes

Disco /dev/sdb não contém uma tabela de partição válida

Disco /dev/dm-0: 9990 MB, 9990832128 bytes
255 cabeçotes, 63 setores/track, 1214 cilindros
Unidades = cilindros de 16065 * 512 = 8225280 bytes

Disco /dev/dm-0 não contém uma tabela de partição válida

Disco /dev/dm-1: 486 MB, 486539264 bytes
255 cabeçotes, 63 setores/track, 59 cilindros
Unidades = cilindros de 16065 * 512 = 8225280 bytes

Disco /dev/dm-1 não contém uma tabela de partição válida

Portanto, /dev/sda contém os volumes lógicos /dev/server1/root (partição /) e /dev/server1/swap_1 (partição swap) além de uma pequena partição /boot (não-LVM).

(A propósito, /dev/server1/root é o mesmo que /dev/mapper/server1-root no Debian Etch. O primeiro é um symlink para o segundo; eu usarei ambas as notações neste tutorial. O mesmo vale para /dev/server1/swap_1 e /dev/mapper/server1-swap_1.)

Agora eu criarei a partição /dev/sdb1 e a adicionarei ao grupo de volume server1, e depois criarei o volume /dev/server1/backups (que terá 30GB em vez dos 60GB completos de /dev/sdb para que tenhamos espaço suficiente para os snapshots) que montarei em /backups:

fdisk /dev/sdb

server1:~# fdisk /dev/sdb
O dispositivo não contém uma tabela de partição DOS válida, nem Sun, SGI ou OSF disklabel
Construindo uma nova etiqueta de disco DOS. As alterações permanecerão na memória apenas,
até que você decida escrevê-las. Depois disso, claro,
o conteúdo anterior não poderá ser recuperado.

O número de cilindros para este disco é definido como 7832.
Não há nada de errado com isso, mas isso é maior que 1024,
e pode, em certas configurações, causar problemas com:

  1. software que roda no tempo de inicialização (por exemplo, versões antigas do LILO)
  2. software de inicialização e particionamento de outros SOs
    (por exemplo, DOS FDISK, OS/2 FDISK)
    Aviso: a bandeira inválida 0x0000 da tabela de partição 4 será corrigida por w(rite)

Comando (m para ajuda): <– n
Ação do comando
e estendida
p partição primária (1-4)
<– p
Número da partição (1-4): <– 1
Primeiro cilindro (1-7832, padrão 1): <– [ENTER]
Usando o valor padrão 1
Último cilindro ou +tamanho ou +tamanhoM ou +tamanhoK (1-7832, padrão 7832): <– [ENTER]
Usando o valor padrão 7832

Comando (m para ajuda): <– t
Partição selecionada 1
Código hexadecimal (tipo L para listar códigos): <– 8e
Mudou o tipo de sistema da partição 1 para 8e (Linux LVM)

Comando (m para ajuda): <– w
A tabela de partição foi alterada!

Chamando ioctl() para reler a tabela de partição.
Sincronizando discos.

pvcreate /dev/sdb1
vgextend server1 /dev/sdb1
lvcreate –name backups –size 30G server1
mkfs.ext3 /dev/mapper/server1-backups
mkdir /backups

Agora vamos montar nosso volume /dev/server1/backups em /backups:

mount /dev/mapper/server1-backups /backups

Para que esse volume seja montado automaticamente sempre que você inicializar o sistema, você deve editar /etc/fstab e adicionar uma linha como esta:

vi /etc/fstab

| [...] /dev/mapper/server1-backups /backups ext3 defaults,errors=remount-ro 0 1 |

Agora nossa nova situação se parece com isto:

pvdisplay

server1:~# pvdisplay
— Volume físico —
PV Nome /dev/sda5
VG Nome server1
PV Tamanho 9.76 GB / não utilizável 0
Alocável sim (mas cheio)
PE Tamanho (KByte) 4096
Total PE 2498
PE Livre 0
PE Alocado 2498
PV UUID vQIUga-221O-GIKj-81Ct-2ITT-bKPw-kKElpM

— Volume físico —
PV Nome /dev/sdb1
VG Nome server1
PV Tamanho 59.99 GB / não utilizável 0
Alocável sim
PE Tamanho (KByte) 4096
Total PE 15358
PE Livre 7678
PE Alocado 7680
PV UUID cvl1H5-cxRe-iyNg-m2mM-tjxM-AvER-rjqycO

vgdisplay

server1:~# vgdisplay
— Grupo de volume —
VG Nome server1
ID do Sistema
Formato lvm2
Áreas de Metadados 2
Número de Sequência de Metadados 5
Acesso VG leitura/gravação
Status VG redimensionável
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 2
Act PV 2
Tamanho VG 69.75 GB
PE Tamanho 4.00 MB
Total PE 17856
Alloc PE / Tamanho 10178 / 39.76 GB
PE Livre / Tamanho 7678 / 29.99 GB
VG UUID jkWyez-c0nT-LCaE-Bzvi-Q4oD-eD3Q-BKIOFC

lvdisplay

server1:~# lvdisplay
— Volume lógico —
LV Nome /dev/server1/root
VG Nome server1
LV UUID UK1rjH-LS3l-f7aO-240S-EwGw-0Uws-5ldhlW
LV Acesso de Gravação leitura/gravação
LV Status disponível

LV Tamanho 9.30 GB
LE Atual 2382
Segmentos 1
Alocação herdar
Setores de leitura antecipada 0
Dispositivo de bloco 254:0

— Volume lógico —
LV Nome /dev/server1/swap_1
VG Nome server1
LV UUID 2PASi6-fQV4-I8sJ-J0yq-Y9lH-SJ32-F9jHaj
LV Acesso de Gravação leitura/gravação
LV Status disponível

LV Tamanho 464.00 MB
LE Atual 116
Segmentos 1
Alocação herdar
Setores de leitura antecipada 0
Dispositivo de bloco 254:1

— Volume lógico —
LV Nome /dev/server1/backups
VG Nome server1
LV UUID sXq2Xe-y2CE-Ycko-rCoE-M5kl-E1vH-KQRoP6
LV Acesso de Gravação leitura/gravação
LV Status disponível

LV Tamanho 30.00 GB
LE Atual 7680
Segmentos 1
Alocação herdar
Setores de leitura antecipada 0
Dispositivo de bloco 254:2

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.