Tutorial Deduplicação Sistema de Arquivos em Nível de Blocos com Volumes Alinhados (Bacula 9.0.8 e superior)
20 de Outubro de 2018, 21:16 - sem comentários aindaObservaçõ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 desempenho de desempenho ruim da desduplicaçã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 odesempenho 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
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!
Bacula Enterprise Edition 10.2 com Backup e Recuperação Integrados de Ambientes de Virtualização da Red Hat
20 de Outubro de 2018, 19:19 - sem comentários aindaBackup sem agente, agnóstico para back-end de armazenamento Vdisk, quiesce* transparente e criação de snapshots, flexibilidade de restauração e VMs restauradas em tempo real
A Bacula Systems SA anunciou o Enterprise Edition 10.2, com funcionalidade para backup e recuperação integrada de ambientes Red Hat Virtualization.
Fornecendo backup de imagem, feito fora dos ambientes Red Hat Virtualization, o módulo permite que a empresa realize backup e recuperação totalmente independente do hipervisor.
O objetivo do produto é aumentar a flexibilidade e a eficiência de backup e reduzir os custos para os usuários do Red Hat Virtualization em grande escala. Sua funcionalidade fornece os seguintes benefícios:
- Backup sem agente de ambientes Red Hat Virtualization.
- Agnóstico para back-end de armazenamento Vdisk.
- Mecanismos de seleção e exclusão para controlar os requisitos de granularidade e capacidade de backup.
- Quiesce transparente e criação de snapshots.
- Restaure a flexibilidade: para o mesmo ou diferente cluster/armazenamento, instâncias virtuais existentes ou novas.
- Configuração de VMs restauradas em tempo real e opção para restaurar arquivos simples para processamento adicional.
"Uma solução eficaz de backup e recuperação é um elemento importante para qualquer usuário de tecnologia de virtualização, incluindo aqueles que usam a Virtualização Red Hat. Com a Red Hat Enterprise Virtualization alimentando ambientes de missão crítica em uma ampla variedade de indústrias, estamos satisfeitos com nossos parceiros, incluindo Bacula Systems, ajudando a liderar o caminho no fornecimento de opções de backup e recuperação de nível corporativo para nossos clientes ", disse Rob Young, gerente de plataformas de nuvem e virtualização da Red Hat, Inc.
"A Bacula Systems trabalhou em estreita colaboração com a Red Hat para nos permitir desenvolver essa interoperabilidade avançada com o Red Hat Virtualization. O anúncio de hoje se baseia no posicionamento do Bacula como uma das soluções de backup e restauração mais flexíveis e amplamente compatíveis disponíveis atualmente na indústria. Não apenas os MSPs mas todas as grandes organizações podem implantar o Bacula para proteger todo o seu ambiente físico virtual e de nuvem, independentemente da arquitetura - tudo a partir de uma única plataforma ", disse Frank Barker, CEO da Bacula Systems.
*Preparar para o backup seguro.
Monitoração Zabbix de Jobs e Processos do Bacula
17 de Outubro de 2018, 23:59 - sem comentários aindaEste é um fork de um projeto do GIT. Verifique possíveis atualizações: https://github.com/germanodlf/bacula-zabbix
Esse projeto consiste de um shell script que coleta informações do servidor do Bacula, envia para o servidor Zabbix através de seu cliente (Zabbix sender), e um template a ser instalado no servidor de monitoração.
Características
- Monitoramento individual para cada Job de backup
- Diferentes níveis de Job têm diferentes gravidades
- Monitoramento dos processos do Diretor, Storage e Cliente do Bacula
- Gráficos e dashboards
- Funciona com Catálogos do Bacula em PostgreSQL e MySQL
Dados Coletados pelo Script
- Status de término do Job (item OK)
- Número de bytes transferidos (item Bytes)
- Número de arquivos transferidos (item Files)
- Duração (item Time)
- Taxa de transferência (item Speed)
- Taxa de compactação (item Compression)
Dados dos Processos do Bacula
- Status do processo do Bacula Director. O nome do processo é definido pela variável {$BACULA.DIR} e tem seu valor padrão como 'bacula-dir'. Este item precisa ser desabilitado em hosts que são apenas clientes do Bacula.
- Status do Storage Daemon. O nome do processo é definido pela variável {$BACULA.SD} e tem seu valor padrão como 'bacula-sd'. Este item precisa ser desabilitado em hosts que são apenas clientes do Bacula.
- Status do File Daemon. O nome do processo é definido pela variável {$ BACULA.FD} e tem seu valor padrão como 'bacula-fd'.
Gatilhos
- O daemon do Bacula está DOWN em {HOST.NAME}: Inicia um alerta de gravidade do desastre quando o processo do Bacula está parado
- Backup Full FAIL em {HOST.NAME}: inicia um alerta de alta gravidade quando uma tarefa de backup completo falha
- Backup Diferencial FAIL em {HOST.NAME}: inicia um alerta de gravidade médio quando uma tarefa de backup diferencial falha
- Backup Incremental FAIL em {HOST.NAME}: inicia um alerta de gravidade de aviso quando uma tarefa de backup incremental falha
Configuração
Template Zabbix
Faça o download do template xml (zip) e importe-o para o seu servidor Zabbix.
Prossiga com a instalação do script nas máquinas com Bacula à seguir. Posteriormente, o modelo do Zabbix deverá ser fornecido a cada um desses hosts. Cada host configurado no Zabbix com este modelo vinculado precisa ter seu nome igual ao nome configurado no recurso Cliente do Bacula. Caso contrário, os dados coletados pelo script bash não serão recebidos pelo servidor Zabbix.
Script Zabbix Servidor Bacula
Instale o Zabbix Sender. Ele será necessário para o envio de informações ao Zabbix.
Crie o arquivo de configuração /opt/bacula/etc/bacula-zabbix.conf com o seguinte conteúdo. Modifique com as informações de seu ambiente:
### BACULA CONFIG ### # Use 'M' for MySQL # Use 'P' for PostgreSQL baculaDbSgdb='P' # IP address or FQDN of database server baculaDbAddr='127.0.0.1' # TCP port of database server baculaDbPort='5432' # Name of the database used by Bacula baculaDbName='bacula' # User used by Bacula on it's database baculaDbUser='bacula' # Password used by Bacula on it's database baculaDbPass='' ### ZABBIX CONFIG ### # IP address or FQDN of Zabbix server zabbixSrvAddr='192.168.37.200' # TCP port of Zabbix server zabbixSrvPort='10051' # Path to zabbix_sender command zabbixSender='/usr/bin/zabbix_sender'
Forneça permissões ao usuário Bacula ao arquivo .conf criado.
chown root:bacula /opt/bacula/etc/bacula-zabbix.conf chmod 640 /opt/bacula/etc/bacula-zabbix.conf
Crie o arquivo de script bash /opt/bacula/scripts/bacula-zabbix.bash, com o conteúdo que segue.
#!/bin/bash # Import configuration file source /opt/bacula/etc/bacula-zabbix.conf # Get Job ID from parameter baculaJobId="$1" if [ -z $baculaJobId ] ; then exit 3 ; fi # Test if zabbix_sender exists and execute permission is granted, if not, exit if [ ! -x $zabbixSender ] ; then exit 5 ; fi # Chose which database command to use case $baculaDbSgdb in P) sql="PGPASSWORD=$baculaDbPass /usr/bin/psql -h$baculaDbAddr -p$baculaDbPort -U$baculaDbUser -d$baculaDbName -c" ;; M) sql="/usr/bin/mysql -NB -h$baculaDbAddr -P$baculaDbPort -u$baculaDbUser -p$baculaDbPass -D$baculaDbName -e" ;; *) exit 7 ;; esac # Get Job type from database, then if it is a backup job, proceed, if not, exit baculaJobType=$($sql "select Type from Job where JobId=$baculaJobId;" 2>/dev/null) if [ "$baculaJobType" != "B" ] ; then exit 9 ; fi # Get Job level from database and classify it as Full, Differential, or Incremental baculaJobLevel=$($sql "select Level from Job where JobId=$baculaJobId;" 2>/dev/null) case $baculaJobLevel in 'F') level='full' ;; 'D') level='diff' ;; 'I') level='incr' ;; *) exit 11 ;; esac # Get Job exit status from database and classify it as OK, OK with warnings, or Fail baculaJobStatus=$($sql "select JobStatus from Job where JobId=$baculaJobId;" 2>/dev/null) if [ -z $baculaJobStatus ] ; then exit 13 ; fi case $baculaJobStatus in "T") status=0 ;; "W") status=1 ;; *) status=2 ;; esac # Get client's name from database baculaClientName=$($sql "select Client.Name from Client,Job where Job.ClientId=Client.ClientId and Job.JobId=$baculaJobId;" 2>/dev/null) if [ -z $baculaClientName ] ; then exit 15 ; fi # Initialize return as zero return=0 # Send Job exit status to Zabbix server $zabbixSender -z $zabbixSrvAddr -p $zabbixSrvPort -s $baculaClientName -k "bacula.$level.job.status" -o $status >/dev/null 2>&1 if [ $? -ne 0 ] ; then return=$(($return+1)) ; fi # Get from database the number of bytes transferred by the Job and send it to Zabbix server baculaJobBytes=$($sql "select JobBytes from Job where JobId=$baculaJobId;" 2>/dev/null) $zabbixSender -z $zabbixSrvAddr -p $zabbixSrvPort -s $baculaClientName -k "bacula.$level.job.bytes" -o $baculaJobBytes >/dev/null 2>&1 if [ $? -ne 0 ] ; then return=$(($return+2)) ; fi # Get from database the number of files transferred by the Job and send it to Zabbix server baculaJobFiles=$($sql "select JobFiles from Job where JobId=$baculaJobId;" 2>/dev/null) $zabbixSender -z $zabbixSrvAddr -p $zabbixSrvPort -s $baculaClientName -k "bacula.$level.job.files" -o $baculaJobFiles >/dev/null 2>&1 if [ $? -ne 0 ] ; then return=$(($return+4)) ; fi # Get from database the time spent by the Job and send it to Zabbix server baculaJobTime=$($sql "select timestampdiff(second,StartTime,EndTime) from Job where JobId=$baculaJobId;" 2>/dev/null) $zabbixSender -z $zabbixSrvAddr -p $zabbixSrvPort -s $baculaClientName -k "bacula.$level.job.time" -o $baculaJobTime >/dev/null 2>&1 if [ $? -ne 0 ] ; then return=$(($return+8)) ; fi # Get Job speed from database and send it to Zabbix server baculaJobSpeed=$($sql "select round(JobBytes/timestampdiff(second,StartTime,EndTime)/1024,2) from Job where JobId=$baculaJobId;" 2>/dev/null) $zabbixSender -z $zabbixSrvAddr -p $zabbixSrvPort -s $baculaClientName -k "bacula.$level.job.speed" -o $baculaJobSpeed >/dev/null 2>&1 if [ $? -ne 0 ] ; then return=$(($return+16)) ; fi # Get Job compression rate from database and send it to Zabbix server baculaJobCompr=$($sql "select round(1-JobBytes/ReadBytes,2) from Job where JobId=$baculaJobId;" 2>/dev/null) $zabbixSender -z $zabbixSrvAddr -p $zabbixSrvPort -s $baculaClientName -k "bacula.$level.job.compr" -o $baculaJobCompr >/dev/null 2>&1 if [ $? -ne 0 ] ; then return=$(($return+32)) ; fi # Exit with return status exit $return
Forneça as permissões para a execução do script.
chown bacula:bacula /opt/bacula/scripts/bacula-zabbix.bash chmod 700 /opt/bacula/scripts/bacula-zabbix.bash
Acrescente as seguintes diretivas no recurso Messages de configuração de seu Director que mandas as mensagens dos Jobs (/opt/bacula/etc/bacula-dir.conf, Messages de nome standard por padrão).
Messages { ... mailcommand = "/var/spool/bacula/bacula-zabbix.bash %i" mail = 127.0.0.1 = all, !skipped ... }
Reinicie o serviço do Director.
service bacula-dir restart
Monitoração dos Clientes Bacula
Edite seus hosts que configuraram tarefas de backup para usar o template do Zabbix. Não esqueça de editar as variáveis com os nomes dos processos do Bacula, e desabilitar nos hosts que são apenas clientes do Bacula os itens que checam os processos do Bacula Director e Storage.
Appliance DELL Bacula
15 de Outubro de 2018, 22:46 - sem comentários aindaA solução integrada entre o Bacula e servidores e storages DELL oferece um appliance de backup e recuperação de dados de alta performance para a sua organização. Toda a tecnologia do Bacula homologada em equipamentos exclusivos DELL que garantem a disponibilidade total do serviço, aumento da eficiência da infraestrutura de TI e redução significativa dos custos.
Seja em ambientes físicos, virtuais ou na nuvem; plataforma Windows ou GNU/Linux, o Bacula, em sua versão Enterprise ou Community, oferece as funcionalidades necessárias para garantir a facilidade de gerenciamento e a segurança dos dados armazenados. Além da garantia de 3 anos, instalação on-site e suporte; treinamento in-company do Appliance/Bacula (opcional) são diversos os benefícios:
- Economia de espaço de armazenamento e uso de banda de rede com a tecnologia de Deduplicação Global (Global Endpoint Deduplication). A deduplicação é fundamental para as empresas que possuem diversas unidades descentralizadas (com filiais em diferentes prédios) por apresentar uma economia de até 99% no trafego e no armazenamento de backup.
- Gravação dos dados backupeados em formato aberto (não proprietário) permitindo que a organização usuária não seja vítima de aprovisionamento tecnológico.
- Armazenamento do seu catálogo em formato aberto e em banco de dados padrão SQL, como PostgreSQL, MySQL e Oracle.
- Capacidade de armazenamento variável: de 10 GigaByte até 1 PetaByte.
- Descentralização de tarefas de backup e recuperação de dados com a interface BaaS.
- Controle de acesso para gerenciamento via Active Directory (LDAP).
- Rápida recuperação de desastres.
- Console de gerenciamento BWeb (interface gráfica exclusiva do Bacula Enterprise).
- Maior coleção de plugins do mercado, com integração para VMWARE, VSS, Hyper-V, KVM, XEN, MSSQL, MySQL, Postgresql, Oracle, SAP, Diretórios, Delta, NDMP, Bare Metal para Linux e Windows, e outros.
Quer saber mais? Entre em contato conosco: http://www.bacula.com.br/fale-conosco-geral/
Parceria SimplyTI e EBacula
12 de Outubro de 2018, 16:51 - sem comentários aindaA SimplyTI atua a mais de 15 anos no mercado de tecnologia da informação desenvolvendo projetos para implantação de redes, de soluções de monitoramento e de backup e também, no suporte e administração de banco de dados.
Não é por acaso que a SimplyTI tem grandes parceiras certificadas no mercado como a Dell, Lenovo, Microsoft, IBM e, para as soluções de backup, o Bacula Brasil - distribuidora exclusiva da Bacula Systems na América Latina. Utilizando o hardware HP com o EBacula, a SimplyTI dispõe de servidores, appliance, NAS (network attached storage), robôs de fita.
Além de ter licenças vitalícias e trabalhar com o padrão de gravação de dados aberto, o EBacula possui a interface Bweb que permite uma gestão 100% gráfica das operações do robô de fitas, tais como a rotulagem de fitas novas (label barcodes) e o inventário das fitas pelo bacula (update slots).
Quer saber mais? Entre em contato conosco: http://www.bacula.com.br/fale-conosco-geral/