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.
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:
- RedHat/CentOS: https://github.com/zfsonlinux/zfs/wiki/RHEL-%26-CentOS
- Debian/Ubuntu: https://wiki.ubuntu.com/Kernel/Reference/ZFS
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=4096Para sistemas de arquivos NetApp, os seguintes são preferíveis:
Block Size=64K
File Alignment=4K
Padding Size=4K
Minimum Aligned Size=4KOnde 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: PortuguêsEnglish (Inglês)