Observações preliminares:

  • Esse recurso está disponível para o Bacula Community (9.0.8 ou superior) e Enterprise.
  • A compressão do software Bacula não deve ser habilitada com o formato Alinhado, resultando em um desempenho ruim da deduplicação.
  • Você precisará de uma pequena área de SSD para armazenar o mecanismo do índice de deduplicação.
  • Neste método o Bacula criará volumes distintos para conter os metadados dos arquivos copiados do backup e outro para os dados em si.

A deduplicação de dados é uma abordagem de redução de dados baseada em dicionário, devido à sua capacidade de efetivamente reduzir o armazenamento de backup ou o tamanho do conjunto de dados de arquivamento por um fator de 4-40X. É um componente essencial do sistema de backup porque reduz os requisitos de espaço de armazenamento, além de ser também uma questão crítica, na medida que o desempenho de toda a operação de backup depende da taxa de transferência de armazenamento.

De acordo com a Figura 1, o novo formato Alinhado de gravação dos Volumes de backup traz considerável redução no custo de armazenamento em relação ao Volumes antigos tradicionais do Bacula Community. Mostra-se, de igual sorte, mais eficiente do que outras ferramentas de deduplicação a exemplo do ZBackup (software de deduplicação de pacotes tar) em termos velocidades de backup e restauração. Há um menor impacto na duração de backup e restauração ao utilizar o novo formato Alinhado de Volumes com o Bacula, mas é um trade-off aceitável.


Tutorial Deduplicação Sistema de Arquivos em Nível de Blocos com Volumes Alinhados (Bacula 9.0.8 e superior) 1

Figura 1 – Formato Tradicional de Volumes de Versões Antigas do Bacula Community versus o Novo Formato de Volume Alinhado com Deduplicação (FIGURA DE AUTORIA DE HEITOR FARIA).


Mais do que nunca, os backups de disco estão se tornando uma substituição viável para bibliotecas de fitas, uma vez que a deduplicação não é uma característica que atualmente pode ser implantada eficientemente nas fitas magnéticas seqüenciais. Apenas discos possuem essa vantagem.

1. Sistema de Arquivos ZFS

Atualmente, existem vários sistemas de arquivos de desduplicação hoje em dia, como lessfs, opendedup, ZFS e outros. Hardware com capacidades de desduplicação também pode ser usado em conjunto com o formato Alinhado de Volumes do Bacula. Nesse artigo utilizamos o ZFS, e mais a frente o Dddumbfs como alternativa:

a) Instalação RedHat/CentOS (https://github.com/zfsonlinux/zfs/wiki/RHEL-and-CentOS)

yum install http://download.zfsonlinux.org/epel/zfs-release.el7_5.noarch.rpm

echo "
[zfs-kmod]
name=ZFS on Linux for EL7 - kmod
baseurl=http://download.zfsonlinux.org/epel/7.5/kmod/$basearch/
enabled=1
metadata_expire=7d
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-zfsonlinux" > /etc/yum.repos.d/zfs.repo

yum install zfs
modprobe zfs 

b) Instalação Debian/Ubuntu

sudo -i
apt-get -y install zfsutils-linux

Inicializando o ZFS

A Inicialização do ZFS vai requerer um ou mais discos físicos. No exemplo abaixo, /zfs/mnt deve ser o valor configurado no bacula-sd.conf nas diretivas ArchiveDevice. A compressão do ZFS também pode ser habilitada.

sudo zpool create -f zfs /dev/sdb 
zfs create zfs/mnt
zpool status zfs
df -h
zfs set dedup=on zfs/mnt
zfs set compression=on zfs/mnt
chown bacula /zfs/mnt

Referências:


2. O Sistema de Arquivos de Ddumbfs (ALTERNATIVA)

Ddumbfs tem código aberto e focado em operações mais rápidas graças ao seu design de índice simples, o que é muito importante para janelas de backup mais curtas.

2.1 Dependências do ddumbfs

Para compilar ddumbfs você precisa como de costume: make e gcc, os cabeçalhos para fusíveis e mhash library e pkg-config.

Aqui estão os pacotes correspondente para RedHat e distribuições baseadas em Debian (alguns deles precisam ser criados a partir da fonte):

  • RedHat/CentOS: fuse fuse-libs mhash fuse-devel mhash-devel pkgconfig gcc make
  • Debian/Ubuntu: libfuse2 libmhash2 libfuse-dev libmhash-dev pkg-config fuse-utils build-essential

a) Pacotes RedHat/CentOS:

sudo -i
yum -y install epel-release.noarch
yum -y install fuse fuse-libs mhash fuse-devel mhash-devel pkgconfig gcc make automake

b) Pacotes Debian/Ubuntu:

sudo -i

apt-get -y install fuse libfuse2 libmhash2 libfuse-dev libmhash-dev pkg-config build-essential autotools-dev

1.2 Compilando e Instalando o Ddumbfs

wget -qO- http://www.magiksys.net/download/ddumbfs/ddumbfs-1.1.tar.gz | tar -xzvf - -C /usr/src
cd /usr/src/ddumbfs-*
./configure
make
make install

2.3 Inicializando o Ddumbfs

Crie dois diretórios. O primeiro deve ser um ponto de montagem SSD para hospedar o motor dos índices do ddumbfs. O segundo deve ser um ponto de montagem onde seus Volumes de Armazenamento Bacula serão escritos, geralmente um grande conjunto de discos.

mkdir /mnt/ddumbfs.data

mkdir /mnt/ddumbfs.mnt

Inicialize o mecanismo de deduplicação. Neste exemplo, um volume 999G é criado, então altere para o tamanho desejado que faz o seu disco:

mkddumbfs -B 128k -s 999G /mnt/ddumbfs.data
ddumbfs $TARGET -o parent=/mnt/ddumbfs.mnt

Adicione uma nova linha como esta para /etc/fstab, para tornar o ddumbfs persistente após a inicialização:

-oparent=/mnt/ddumbfs.data   /mnt/ddumbfs.mnt   fuse.ddumbfs   defaults  0  0

Reinicie a máquina para garantir que o ddumbfs esteja sempre montado no momento da inicialização.


3. Configuração dos Volumes Alinhados Bacula

Você precisa instalar o pacote de Drivers Algined, disponível através do repositório de pacotes pessoal da bacula.org (Bacula Binary Package Download, requer registro).

yum install bacula-aligned.x86_64

Reinicie o Storage Daemon para aplicar as alterações.

Este é um exemplo do novo dispositivo bacula-sd.conf. DeviceType deve ser “Aligned”; MaximumConcurrentJobs deve ser “1”; Os valores do tamanho do bloco podem variar de acordo com a desduplicação utilizada FileSystem:

Device {
  Name = Aligned-Disk
  Device Type = Aligned  # Precisa ser Aligned
  Media Type = File1
  Archive Device = /zfs/mnt   # Or /mnt/ddumbfs.mnt  in case of ddumbfs.
  LabelMedia = yes; 
  Random Access = Yes;
  AutomaticMount = yes; 
  RemovableMedia = no;
  AlwaysOpen = no;
  Maximum Concurrent Jobs = 1  # Para Aligned Sempre Um
  Minimum Block Size=0K
  Maximum Block Size=128K
  File Alignment=128K
  Padding Size=512
  Minimum Aligned Size=4096
}

Informação detalhada:

Para os sistemas de arquivos ZFS, lessfs e ddumbfs, os seguintes valores produzem excelentes resultados:
Block Size=128K
File Alignment=128K
Padding Size=512
Minimum Aligned Size=4096

Para sistemas de arquivos NetApp, os seguintes são preferíveis:
Block Size=64K
File Alignment=4K
Padding Size=4K
Minimum Aligned Size=4K

Onde os valores são mostrados logo após o sinal de igual, e o K significa multiplicar por 1024 bytes.
BlockSize é o tamanho dos blocos a serem gravados no volume alinhado.
File Alignment é o alinhamento do primeiro bloco de cada arquivo original armazenado no VolumeAlinhado.
PaddingSize é o alinhamento no qual o último bloco de um arquivo original é preenchido com zeros se não estiver cheio.
MaximumAlignmentSize é o tamanho do arquivo abaixo do qual o arquivo será colocado no Volume de Metadados, ao invés do Volume Alinhado.

[Ref.: Sibbald, Kern – https://www.google.com/patents/US20160055169]

Por fim, apenas anexe o dispositivo bacula-sd criado ao seu Diretor. Edite seu bacula-dir.conf:

Storage {
  Name = Disk-Backup
  Address = hfaria-desk-i5 
  SDPort = 9103
  Password = "5PWzqJzEokv3z9U_NwBd6bJ30ib1x4TMW"
  Device = Aligned-Disk
  Media Type = File1
}

Execute alguns trabalhos de backup completos. Após o primeiro trabalho completo, os próximos não devem aumentar o tamanho de armazenamento desduplicado. O comando exibirá a ocupação dos dados:

df -h

E o comando list jobs,  do bconsole exibirá o tamanho que as tarefas de backup deveriam ocupar.

Aprecie!


 

Disponível em: pt-brPortuguêsenEnglish (Inglês)esEspañol (Espanhol)