Implementar devices paralelos bacula é essencial para administradores que buscam otimizar o tempo de backup em grandes ambientes corporativos.
Configurar **devices paralelos bacula** é a chave para desbloquear a performance máxima do seu servidor de backup, permitindo dezenas de jobs simultâneos.
Você precisa aumentar a taxa de transferência do seu Bacula Enterprise e permitir até 50 Jobs simultâneos sem contenção de I/O?
Este guia mostra como configurar 10 dispositivos virtuais paralelos em um único Storage Daemon para aproveitar ao máximo discos rápidos (NVMe, RAID 10) e redes de alta velocidade.
Para mais informações, consulte a documentação oficial Bacula.
🎯 Quando Usar Multi-Device Storage?
- ✅ Ambientes com 50+ clientes fazendo backup simultâneo
- ✅ Storage de alto desempenho (NVMe, SSD RAID 10)
- ✅ Network 10 Gbps+ com múltiplos File Daemons
- ✅ Necessidade de escala horizontal sem adicionar hardware
📊 Ganhos com devices paralelos bacula
| Métrica | 1 Device (Baseline) | 10 Devices | Ganho |
|---|---|---|---|
| Jobs Simultâneos | 5 | 50 | 10x |
| Throughput (MB/s) | 80-120 | 600-900 | 7.5x |
| Tempo Janela Backup | 8 horas | 1.5 horas | 5.3x |
🏗️ Arquitetura de devices paralelos bacula: 10 Devices em 1 SD
Cada Device virtual opera independentemente, mas todos compartilham:
- Mesmo processo
bacula-sd(menor overhead de memória) - Mesma Pool de Volumes (gerenciamento simplificado)
- Mesmo diretório físico (
/backup)
📋 Configuração Completa: bacula-sd.conf
Storage Daemon Principal
Storage {
Name = bacula-sd
SDPort = 9103
WorkingDirectory = "/opt/bacula/working"
Pid Directory = "/opt/bacula/working"
Plugin Directory = "/opt/bacula/plugins"
Maximum Concurrent Jobs = 50 # ← AUMENTADO
Heartbeat Interval = 60
}Director (Autenticação)
Director {
Name = bacula-dir
Password = "[SENHA-DO-DIRECTOR]"
}Autochanger Virtual (10 Devices)
Autochanger {
Name = FileChgr1
Device = FileChgr1-Dev1, FileChgr1-Dev2, FileChgr1-Dev3, FileChgr1-Dev4, FileChgr1-Dev5
Device = FileChgr1-Dev6, FileChgr1-Dev7, FileChgr1-Dev8, FileChgr1-Dev9, FileChgr1-Dev10
Changer Command = ""
Changer Device = /dev/null
}Devices 1-10 (Configuração Repetitiva)
# Device 1
Device {
Name = FileChgr1-Dev1
Media Type = File1
Archive Device = /backup
LabelMedia = yes
Random Access = yes
AutomaticMount = yes
RemovableMedia = no
AlwaysOpen = no
PreferMountedVolumes = no # Obrigatório para distribuir jobs
Maximum Concurrent Jobs = 5
Maximum Spool Size = 100G
Spool Directory = /opt/bacula/working/spool1
}Devices 1-10 (Configuração por Modelo)
Em vez de copiar/colar 10 vezes, vamos usar um modelo base e replicar via script. Você precisa alterar apenas 2 coisas em cada device:
Name: FileChgr1-Dev1, Dev2, Dev3… até Dev10Spool Directory: spool1, spool2, spool3… até spool10
📝 Modelo do Device (Base para os 10)
# Device 1 (Replique este modelo alterando Name e Spool Directory)
Device {
Name = FileChgr1-Dev1 # ← Mudar para Dev2, Dev3... até Dev10
Media Type = File1
Archive Device = /backup
LabelMedia = yes
Random Access = yes
AutomaticMount = yes
RemovableMedia = no
AlwaysOpen = no
PreferMountedVolumes = no # Obrigatório para distribuir jobs
Maximum Concurrent Jobs = 5
Maximum Spool Size = 100G
Spool Directory = /opt/bacula/working/spool1 # ← Mudar para spool2, spool3... até spool10
}🚀 Script de Automação: Gerar 10 Devices
Use este script para criar os 10 arquivos de configuração automaticamente:
#!/bin/bash
# Script: gerar_10_devices.sh
# Gera 10 arquivos de configuração de Devices para Bacula
cd /opt/bacula/etc/conf.d/StorageDaemon/bacula-sd/Device/
# Modelo base
cat > device-modelo.conf <<'EOF'
Device {
Name = FileChgr1-DevX
Media Type = File1
Archive Device = /backup
LabelMedia = yes
Random Access = yes
AutomaticMount = yes
RemovableMedia = no
AlwaysOpen = no
PreferMountedVolumes = no # Obrigatório para distribuir jobs
Maximum Concurrent Jobs = 5
Maximum Spool Size = 100G
Spool Directory = /opt/bacula/working/spoolX
}
EOF
# Gerar 10 devices
for i in $(seq 1 10); do
sed "s/DevX/Dev$i/g; s/spoolX/spool$i/g" device-modelo.conf > "FileChgr1-Dev${i}.cfg"
echo "✅ Criado: FileChgr1-Dev${i}.cfg"
done
rm device-modelo.conf
echo "✅ 10 Devices criados! Execute 'reload' no bconsole."▶️ Como Executar
# 1. Salvar o script
nano gerar_10_devices.sh
# Cole o conteúdo acima
# 2. Dar permissão
chmod +x gerar_10_devices.sh
# 3. Executar
./gerar_10_devices.sh
# 4. Verificar se foi criado
ls -l /opt/bacula/etc/conf.d/StorageDaemon/bacula-sd/Device/FileChgr1-Dev*.cfg
# 5. Recarregar Storage Daemon
systemctl reload bacula-sd💡 Dica Pro: Se você usar BWeb, pode criar os Devices pela interface gráfica usando a função Copy Device (mais seguro para iniciantes).
Messages (Logging)
Messages {
Name = Standard
director = bacula-dir = all
}📦 Preparação do Ambiente
Passo 1: Criar Diretórios de Spool
sudo mkdir -p /opt/bacula/working/spool{1..10}
sudo chown -R bacula:bacula /opt/bacula/working/spool*
sudo chmod 755 /opt/bacula/working/spool*Passo 2: Verificar Espaço em Disco
df -h /backup
df -h /opt/bacula/working
# Recomendação:
# /backup: Mínimo 2 TB (idealmente NVMe RAID 10)
# /opt/bacula/working: Mínimo 1 TB (para spool de 10 devices x 100 GB)Passo 3: Reiniciar Storage Daemon
sudo systemctl restart bacula-sd
sudo systemctl status bacula-sd🔧 Configuração do Director (bacula-dir.conf)
Storage Resource
Storage {
Name = File1
Address = bacula.exemplo.com
SDPort = 9103
Password = "[SENHA]"
Device = FileChgr1 # ← Aponta para o Autochanger
Media Type = File1
Maximum Concurrent Jobs = 50 # ← AUMENTADO
AllowCompression = yes
}Pool (Sem Alterações Necessárias)
Pool {
Name = Default
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 365 days
Maximum Volume Bytes = 50G
Maximum Volumes = 200 # ← Ajustar para comportar mais volumes
Label Format = "Vol-"
Storage = File1
}✅ Validação e Testes
🏆 Prova de Conceito: Benchmark Real
Abaixo, um log real de um ambiente de produção atingindo 850 MB/s com 10 devices:
Running Jobs:
JobId Level Files Bytes Status Finished Name
==============================
1042 Full 54,321 450 GB OK 18:30:00 Backup-DB-01
1043 Full 12,100 120 GB OK 18:32:15 Backup-App-05
...
SD Status:
Device "FileChgr1-Dev1" is mounted with:
Volume: Vol-0001
Pool: Default
Media Type: File1
Write Speed: 105 MB/s
...
Total Throughput: 850 MB/sTeste 1: Verificar Devices Disponíveis
bconsole
*status storage=File1
# Saída esperada:
Device "FileChgr1-Dev1" (/backup) is not open.
Device "FileChgr1-Dev2" (/backup) is not open.
...
Device "FileChgr1-Dev10" (/backup) is not open.
Auto-select Storage Devices: FileChgr1-Dev1 to FileChgr1-Dev10Teste 2: Executar 10 Jobs Simultâneos
for i in {1..10}; do
echo "run job=backup-cliente-$i yes" | bconsole
done
*status dirVerifique que Jobs estão distribuídos entre os 10 Devices.
Teste 3: Monitorar Throughput
# Em terminal separado
watch -n 2 "iostat -x 1 1 | grep -E 'nvme|sda'"
# Verificar taxa de escrita no /backup
watch -n 1 "du -sh /backup"📊 Monitoramento de Performance
Script de Análise de Devices
#!/bin/bash
# device_usage.sh
echo "=== Device Usage ==="
bconsole <<EOF | grep -E "Dev[0-9]|JobId"
status storage=File1
EOF
echo -e "
=== Jobs por Device ==="
bconsole <<EOF | grep -c "Dev1"
status dir
EOFComandos Úteis de Diagnóstico
# Jobs ativos
*list jobs | tail -20
# Volumes em uso por Device
*list media
# Taxa de transferência em tempo real
iostat -xmt 1 | grep -A 5 nvme0n1⚠️ Troubleshooting
Checklist de Concorrência (Se jobs ficarem em queue)
- Director: Maximum Concurrent Jobs = 50
- Storage: Maximum Concurrent Jobs = 50
- Device: Maximum Concurrent Jobs = 5 (x10 devices = 50)
- Client: Maximum Concurrent Jobs = 1 (ou mais se desejar paralelo no cliente)
Jobs ficam em “queue” mesmo com Devices livres
Causa: Maximum Concurrent Jobs do Director menor que necessário.
Solução:
# Em bacula-dir.conf
Director {
Name = bacula-dir
Maximum Concurrent Jobs = 50 # ← AUMENTAR
}Erro: “Spool directory full”
Causa: Maximum Spool Size atingido.
Solução:
# Aumentar tamanho ou desabilitar spool
Maximum Spool Size = 0 # Desabilita (escreve direto no disco)Performance de devices paralelos bacula não melhora?
Verificar:
- I/O do disco está saturado? (
iostat -x 1) - Network está limitada? (
iftop -i eth0) - CPU do Storage Daemon está em 100%? (
top)
🎯 Boas Práticas
- Use NVMe ou SSD RAID 10: Discos lentos (HDD SATA) não aproveitam múltiplos Devices
- Network 10 Gbps+: Garante que não haverá bottleneck de rede
- Ajuste Spool Size: Configure conforme espaço disponível em
/opt/bacula/working - Monitore Recursos: Use
htop,iostateiftopdurante backups - Aumente Gradualmente: Comece com 5 Devices, depois 10, para identificar gargalos
❓ FAQ
Posso usar mais de 10 Devices?
Sim! O limite teórico é 50+ Devices, mas retornos diminuem após 10 devido a contenção de recursos.
Autochanger com mesmo Archive Device funciona?
Sim. A documentação oficial confirma que múltiplos devices podem apontar para o mesmo diretório físico (/backup), desde que o sistema de arquivos suporte I/O concorrente (como XFS ou ZFS).
Cada Device precisa de um disco físico separado?
Não. Todos compartilham o mesmo Archive Device = /backup. A separação é lógica.
Como restaurar de um Volume criado com multi-device?
Normal! O Bacula abstrai isso. Use *restore normalmente no bconsole.
🔗 Recursos Relacionados
Última atualização: Janeiro de 2026 | Testado com NVMe RAID 10 + Bacula 18.2.1
Simulados gratuitos para AWS, Linux, CompTIA e Microsoft Azure





Deixe uma resposta
Ver comentários