snapshots de disco com espaço eficiente no Linux

2

Eu gosto da capacidade do VirtualBox para instantaneamente criar e restaurar instantâneos e eu queria saber, se é possível fazer coisas semelhantes na máquina host.

Primeiro, olhei para lvm snapshots, mas algumas pesquisas mostraram que elas têm muitas desvantagens em comparação com as imagens alocadas dinamicamente. Por exemplo:

  • Eles consomem muito espaço. Se você gravar 10% em um volume lógico e, em seguida, tirar um instantâneo, os outros 90% desse volume se tornarão inutilizáveis.
  • Fazer um instantâneo é instantâneo, mas reverter para esse instantâneo é uma operação demorada.
  • Um instantâneo não pode ser protegido contra invalidação automática, se você escrever muito.

No Windows 7, combinei com sucesso a capacidade de anexar imagens .vhd de diferenciação ao host com a GUI do VirtualBox para gerenciar snapshots e estou procurando uma opção semelhante para o Linux.

    
por basin 27.03.2015 / 13:20

5 respostas

0

Como derobert sugeriu, agora estou usando os snapshots finos do LVM:

# create pool
lvcreate -L 10000M -T vg_oktestapp1/pool

# create thin vol
lvcreate -V 10000M -T vg_oktestapp1/pool -n lv_ibm

# mount
mkfs.ext4 /dev/vg_oktestapp1/lv_ibm
mount /dev/vg_oktestapp1/lv_ibm /media/ibm

# do stuff ...

# create snapshot
lvcreate -s vg_oktestapp1/lv_ibm --name lv_ibm_20150411090827

# do stuff ...

# instant restore snapshot
lvcreate -s vg_oktestapp1/lv_ibm_20150411003856 --name lv_ibm_new --setactivationskip n
umount /media/ibm
mount /dev/vg_oktestapp1/lv_ibm_new /media/ibm
    
por 11.04.2015 / 08:17
1

Para completar a resposta de @ Lambert, há também Btrfs (um sistema de arquivos linux) que permite crie e restaure instantâneos do subvolume do sistema de arquivos. Para diferenças entre os dois, leia esta postagem no reddit .

O Btrfs está incluído no kernel do linux, e você pode usá-lo em um sistema de arquivos root. Parece possível inicializar .

Em relação ao seu status "experimental" , estou usando-o desde de 2 anos sem problemas.

    
por 27.03.2015 / 13:47
1

They're space-consuming. If you write 10% to a logical volume and then take a snapshot, the other 90% of that volume become unusable.

Não, não é. O instantâneo LVM apresenta dois dispositivos de bloco, a origem LV (o que você está fazendo instantâneos) e o instantâneo LV. Apenas os dados que mudam em qualquer LV são realmente gravados no snapshot LV. Você pode montar o LV como um sistema de arquivos regular e usar 100% de qualquer um deles. A única diferença do espaço do usuário é que o instantâneo LV não parece mudar (o que é, obviamente, o ponto).

Taking a snapshot is instant, but reverting to that snapshot is a lengthy operation.

Depende da operação que você está executando quando diz "reverter". Cria instantâneos como qualquer LV normal (com o comando lvcreate ). Você pode manter uma série de LV's instantâneos e dizer à VM para inicializar a partir de uma a algumas semanas atrás, o que é apenas uma questão de dar a ela um caminho diferente para o dispositivo de bloco.

Se você fizer alterações no snapshot e quiser confirmar essas alterações no LV de origem você pode mesclar o instantâneo

A snapshot cannot be protected from automatic invalidation, if you write too much.

Não tenho certeza do que você quer dizer com isso. Você quer dizer se o instantâneo LV enche porque a origem ou o instantâneo LV foi escrito demais? O único problema com a escrita que eu estou ciente é que é possível gravar mais dados para o snapshot LV do que está disponível, mas isso é um problema se você fez o snapshot LV menor do que a sua origem em um esforço para economizar espaço.

    
por 27.03.2015 / 14:27
0

Você pode dar uma olhada no projeto ZFS Fuse ou ZFS no Linux. O sistema de arquivos ZFS é capaz de criar instantâneos e clones. Não acredito que seja possível inicializar a partir do ZFS para Linux, mas você pode armazenar seus dados / trabalhos em um pool do ZFS.

Veja também: link ou pesquise na Internet por um fusível ZFS

    
por 27.03.2015 / 13:26
0

Se você não se importa em reiniciar, você pode tentar o Acronis True Image. Isso custa dinheiro, e eu tive várias experiências em que ele não conseguiu criar uma imagem.

Você pode usar dd e gzip para criar uma imagem. Na verdade, é bem rápido, e o gzip geralmente faz um bom trabalho em manter a imagem relativamente pequena.

dd if=/dev/sdX conv=sync,noerror bs=64K | pv | gzip -c  > /path/to/backup.img.gz

Você pode melhorar a compactação zerando a parte não usada do seu sistema de arquivos.

sudo dd if=/dev/zero of=/path/to/filesystem/zerofill
sudo rm /path/to/filesystem/zerofill

Isso cria um arquivo, preenche-o com zeros até ficar sem espaço e, em seguida, o exclui.

Se você quiser criar uma imagem de disco completa, incluindo swap, você pode zerar o swap assim:

sudo swapoff /dev/sda3
sudo dd if=/dev/zero of=/dev/sda3
sudo mkswap /dev/sda3   # swap must be recreated

Veja este para mais informações.

Você pode escrever um script que faça tudo isso para você. É melhor fazer isso de um CD ao vivo, em vez de executar o sistema, para evitar inconsistência.

Se você estiver usando o XFS, poderá usar o xfsdump para criar backups incrementais em um sistema ativo. A desvantagem é que você só pode fazer nove níveis incrementais antes de ter que recomeçar com um backup completo. É uma boa escolha para backups em fita, no entanto. Você também pode canalizá-lo para gzip, para uma imagem menor.

E, claro, há rsync. É mais lento que o dd, mas pode fazer backups incrementais.

Eu não sei de nenhuma ferramenta que seja tão conveniente quanto os instantâneos do VBox, no entanto.

    
por 27.03.2015 / 14:52