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

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

  • Post author:
  • Post category:Uncategorized
  • Post comments:0 Comments

Observaciones preliminares:

  • Esta característica está disponible para Bacula Community (9.0.8 o superior) y Enterprise.
  • La compresión del software Bacula no debe ser habilitada con el formato Alineado, resultando en un desempeño de mal rendimiento de la deduplicación.
  • Usted necesitará una pequeña área de SSD para almacenar el mecanismo del índice de deduplicación.
  • En este método el Bacula creará volúmenes distintos para contener los metadatos de los archivos copiados de la copia de seguridad y otro para los datos en sí.

La deduplicación de datos es un enfoque de reducción de datos basado en el diccionario, debido a su capacidad de reducir efectivamente el almacenamiento de copia de seguridad o el tamaño del conjunto de datos de archivo por un factor de 4-40X. Es un componente esencial del sistema de copia de seguridad porque reduce los requisitos de espacio de almacenamiento, además de ser una cuestión crítica, ya que el rendimiento de toda la operación de copia de seguridad depende de la tasa de transferencia de almacenamiento.

De acuerdo con la Figura 1, el nuevo formato Alineado de grabación de los volúmenes de copia de seguridad trae una considerable reducción en el costo de almacenamiento en relación con los volúmenes tradicionales tradicionales de Bacula Community. Se muestra, de igual manera, más eficiente que otras herramientas de deduplicación a ejemplo de ZBackup (software de deduplicación de paquetes tar) en términos de velocidad de copia de seguridad y restauración. Hay un menor impacto en la duración de copia de seguridad y restauración al utilizar el nuevo formato Alineado de volúmenes con el Bacula, pero es un compensación aceptable.


Figura 1 – Formato Tradicional de Volúmenes de Versiones Antiguas del Bacula Community versus el Nuevo Formato de Volumen Alineado con Deduplicación (FIGURA DE AUTORÍA DE HEITOR FARIA).


Más que nunca, las copias de seguridad de disco se están convirtiendo en una sustitución viable para bibliotecas de cintas, ya que la deduplicación no es una característica que actualmente se puede implementar eficientemente en las cintas magnéticas secuenciales. Sólo los discos tienen esta ventaja.

1. Sistema de Archivos ZFS

Actualmente, existen varios sistemas de archivos de deduplicación hoy en día, como los discos de lectura, la preferencia, ZFS y otros. El hardware con capacidades de deduplicación también se puede utilizar junto con el formato Alineado de Volúmenes de Bacula. En este artículo utilizamos ZFS, y más adelante el Dddumbfs como alternativa:

a) Instalación 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) Instalación Debian/Ubuntu

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

Inicio de ZFS

La inicialización de ZFS requerirá uno o más discos físicos. En el ejemplo siguiente, /zfs/mnt debe ser el valor configurado en el bacula-sd.conf en las directivas ArchiveDevice. La compresión de ZFS también se puede habilitar.

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

Referencias:


2. El Sistema de Archivos de Ddumbfs (ALTERNATIVA)

Ddumbfs tiene código abierto y enfocado en operaciones más rápidas gracias a su diseño de índice simple, que es muy importante para las ventanas de copia de seguridad más cortas.

2.1 Dependencias de ddumbfs

Para compilar ddumbfs usted necesita como de costumbre: make y gcc, los encabezados para fusibles y mhash library y pkg-config.

Aquí están los paquetes correspondientes para RedHat y distribuciones basadas en Debian (algunos de ellos necesitan ser creados a partir de la fuente):

  • 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) Paquetes 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) Paquetes Debian/Ubuntu:

sudo -i

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

1.2 Compilar e instalar 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 Inicialización de Ddumbfs

Cree dos directorios. El primero debe ser un punto de montaje SSD para alojar el motor de los índices de ddumbfs. El segundo debe ser un punto de montaje donde sus volúmenes de almacenamiento Bacula se escriben, generalmente un gran conjunto de discos.

mkdir /mnt/ddumbfs.data

mkdir /mnt/ddumbfs.mnt

Inicie el mecanismo de deduplicación. En este ejemplo, se crea un volumen 999G, luego cambie al tamaño deseado que hace su disco:

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

Agregar una nueva línea como esta para /etc/fstab, para hacer que el ddumbfs persistente después de la inicialización:

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

Reinicie la máquina para asegurarse de que el ddumbfs esté siempre montado en el momento del arranque.


3. Configuración de los Volúmenes Alineados Bacula

Es necesario instalar el paquete de Controladores Algined, disponible a través del repositorio de paquetes personales de bacula.org (Bacula Binary Package Download, requiere registro).

yum install bacula-aligned.x86_64

Reinicie el Storage Daemon para aplicar los cambios.

Este es un ejemplo del nuevo dispositivo bacula-sd.conf. DeviceType debe ser “Aligned”; MaximumConcurrentJobs debe ser “1”; Los valores del tamaño del bloque pueden variar según la deduplicación 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  # Siempre 1 para Aligned
  Minimum Block Size=0K
  Maximum Block Size=128K
  File Alignment=128K
  Padding Size=512
  Minimum Aligned Size=4096
}

Información detallada:

Para los sistemas de archivos ZFS, lessfs y ddumbfs, los siguientes valores producen excelentes resultados:
Block Size = 128K
File Alignment = 128K
Padding Size = 512
Mínimo Aligned Size = 4096

Para sistemas de archivos NetApp, los siguientes son preferibles:
Block Size = 64K
File Alignment = 4K
Padding Size = 4K
Mínimo Aligned Size = 4K

Donde los valores se muestran inmediatamente después del signo igual, y el K significa multiplicarse por 1024 bytes.
BlockSize es el tamaño de los bloques que se van a grabar en el volumen alineado.
File Alignment es la alineación del primer bloque de cada archivo original almacenado en el VolumenAluminado.
PaddingSize es la alineación en la que el último bloque de un archivo original se rellena con ceros si no está lleno.
MaximumAlignmentSize es el tamaño del archivo debajo del cual el archivo se colocará en el Volumen de Metadatos, en lugar del Volumen Alineado.

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

Por último, sólo adjunte el dispositivo bacula-sd creado a su Director. Edite su bacula-dir.conf:

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

Ejecute algunos trabajos de copia de seguridad completos. Después del primer trabajo completo, los próximos no deben aumentar el tamaño de almacenamiento desduplicado. El comando mostrará la ocupación de los datos:

df -h

Y el comando list jobs, de bconsole mostrará el tamaño que las tareas de copia de seguridad deberían ocupar.

Disfrutar!


 

Leave a Reply

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

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

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:


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!


 

Leave a Reply