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:
- RedHat/CentOS: https://github.com/zfsonlinux/zfs/wiki/RHEL-%26-CentOS
- Debian/Ubuntu: https://wiki.ubuntu.com/Kernel/Reference/ZFS
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 = 4096Para sistemas de archivos NetApp, los siguientes son preferibles:
Block Size = 64K
File Alignment = 4K
Padding Size = 4K
Mínimo Aligned Size = 4KDonde 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!
Disponível em: Português (Portugués, Brasil)English (Inglés)Español