Whitepaper técnico — PodHeitor Informix para Bacula

XBSA cdylib nativo substituindo TSM/ISP, fallback ontape STDIO, log shipping contínuo, PITR por LSN/timestamp, instant recovery via loop-device + FUSE, e conversão cross-version IDS 12.10 → 14.10 → 15.0 sob Bacula Community 15.0.3+.

Documento técnico complementar à página do plugin PodHeitor Informix.

1. Problema: backup de HCL Informix sob Bacula stock força TSM/ISP

O modelo nativo de Informix para backup é ON-Bar, que no IBM/HCL ships fala com IBM Spectrum Protect (TSM/ISP) via XBSA. Para integrar isso ao Bacula, a alternativa de mercado é:

  • Bacula Enterprise Informix plugin — disponível, mas funcionalidades limitadas a ON-Bar full + log archiving simples; sem PITR via LSN, sem instant recovery, sem conversão cross-version.
  • Scripts shell wrappers em torno de ontape — comuns em campo, mas frágeis: sem detecção de gap em log archiving, sem signal handling, sem timeouts, sem catalogação proper de manifests.
  • TSM/ISP licenciado — caro, fora do mundo Bacula, e cada renovação dói no orçamento.

O PodHeitor Informix entrega um XBSA cdylib nativo (libpodheitor_xbsa.so) que ON-Bar carrega no lugar de TSM/ISP, roteando os streams de dados diretamente para Bacula via Unix socket — substituindo TSM por completo.

2. Modelo arquitetural

bacula-fd
  └── podheitor-informix-fd.so   (cdylib Rust puro — crate plugin-informix;
        │                         metaplugin-rs / bacula-fd-abi; sem C shim)
        └── podheitor-informix-backend   (rlib Rust + binário CLI, dispatcher de engine)
              ├── XBSA engine: ON-Bar → libpodheitor_xbsa.so → Unix socket → Bacula
              ├── ontape engine: ontape -s -t STDIO → zstd → PTCOMM D-packets
              ├── log_shipper: onstat -l poll → ontape -a -l <uniq_id> → virtual file
              ├── PITR: replay de manifest chain → onmode -m
              ├── instant: imagem .raw → losetup → oninit -PHY (RTO < 60s)
              ├── table_level: sandbox Podman/Docker → dbexport → docker cp
              ├── snapshot: LVM lvcreate --snapshot / ZFS snapshot
              ├── replicate: bootstrap HDR/RSS/SDS/ER via transporte Bacula
              └── logical_dbexport: dbexport streaming para migração cross-version

O cdylib roda dentro do bacula-fd; o backend é processo separado per-job, comunicando-se via PTCOMM. O motivo é o de sempre: crash isolation, liberdade de paralelismo (XBSA stripes paralelos cross-dbspace), e license firewall — sem source AGPLv3 do Bacula linkado estaticamente.

3. Modos de operação suportados

Capability Detalhe
XBSA cdylib nativo libpodheitor_xbsa.so substitui TSM/ISP — ON-Bar roteia data direto para Bacula
ontape STDIO fallback Backups de instâncias IDS sem ON-Bar/XBSA configurado
Backup paralelo de dbspace XBSA stripes + modo onbar_psm — N-way per dbspace, M dbspaces paralelos
Log shipping contínuo SHA-256 per-log, polling de onstat -l, detecção de gap — RPO sub-minuto
PITR Recovery para qualquer LSN, timestamp ou ID de transação
HDR / RSS / SDS / ER bootstrap Seeding de replicação one-command via storage Bacula
Snapshot backup LVM, ZFS, checkpoint nativo IDS — janela de quiesce < 1s
Instant recovery Loop-device + FUSE mount → IDS queryable em < 60s
Extração de tabela única Sandbox Docker/Podman + dbexport — sem impacto produção
Conversão cross-version mode=logical_dbexport + mode=logical_import — migração IDS 12.10 → 14.10 → 15.0
Sidecar DBCRYPT Metadados de keystore (sem material de chave) persistidos no catálogo — restore transparente
Pre-backup ARD ransomware check Hook onstat -g ARD (IDS 14.10+) — aborta em anomalia
Compressão zstd / lz4 SHA-256 per-stripe + LOB content-defined chunking
Bare-metal DR onconfig + sqlhosts + ixbar empacotados como Bacula RestoreObject
Virtual Full Server-side chain merge — elimina cadeias longas no restore
Observability Prometheus /metrics + traces OpenTelemetry OTLP

4. XBSA cdylib nativo — substituindo TSM/ISP

O XBSA (X/Open Backup Services API) é o ABI padronizado que ON-Bar usa para falar com servidores de mídia. IBM/HCL ships ON-Bar configurado para TSM/ISP. O libpodheitor_xbsa.so implementa o ABI XBSA inteiro em Rust e traduz cada chamada XBSA para frames PTCOMM, que viajam pelo Unix socket até o backend, que por sua vez fala com o cdylib do Bacula.

Configuração minimal em $INFORMIXDIR/etc/bar_act.cfg:

BAR_BSALIB_PATH=/opt/bacula/lib/libpodheitor_xbsa.so

ON-Bar nem precisa saber que está falando com Bacula — segue achando que é TSM/ISP. Resultado: zero mudança em scripts ON-Bar legados, zero retreinamento de DBA.

5. Log shipping contínuo e PITR

O log_shipper polla onstat -l para descobrir logs lógicos rotacionados. Cada novo log é ontape -a -l &#x3C;uniq_id&#x3E;-archived, hashado em SHA-256, e enviado como um virtual file separado dentro do mesmo job Bacula incremental. Detecção de gap é mandatória: se um log foi consumido por outro processo (ou se o polling perdeu um cycle), o plugin detecta via comparação de unique-id sequencial e aborta com mensagem clara.

RPO sub-minuto é alcançável com polling de 30s. PITR no restore aceita target em três formas:

  • restore_to_lsn=... — LSN exato
  • restore_to_time=2026-04-15T14:30:00Z — timestamp ISO 8601
  • restore_to_txid=... — ID de transação Informix

O backend computa a chain (Full + N logs) e dispara onmode -m para reabrir a instância no LSN target.

6. Instant recovery em < 60s

Para workloads que não toleram restore tradicional de horas, o modo instant exporta a imagem do dbspace como .raw, faz losetup em loop device, e chama oninit -PHY apontando o IDS para o loop. A instância sobe em < 60s, queryable. A migração de volta para storage local é background, sem janela de downtime adicional.

7. Conversão cross-version (logical_dbexport)

Migrar IDS 12.10 → 14.10 → 15.0 com downtime mínimo é caso recorrente. O modo logical_dbexport streama dbexport via PTCOMM — sem disco intermediário — e o lado destino faz dbimport direto do stream. Backup, migração e restore num único job Bacula.

8. Versões suportadas

  • HCL Informix Dynamic Server: 12.10.FC12+, 14.10, 15.0
  • Bacula Community: 15.0.3+
  • Linux: EL8/EL9 (RPM), Ubuntu 22.04 / Debian 12 (DEB), x86_64

9. Validação

E2E suite (T01–T18, lab 2026-04-29): PASS=22 / FAIL=0 / SKIP=0 / TOTAL=22 — todos os 22 cenários ativos. Lab: 4 VMs (primary, HDR, RSS, snapshot), IDS 15.0.1.0.3 Developer Edition, Bacula Community 15.0.3. Unit tests OL9: 80/80 PASS.

10. License posture

Proprietary — single license. Não vincula estaticamente nenhum source AGPLv3 do Bacula. O cdylib usa extern "C" independente via crate bacula-fd-abi in-house; libpodheitor_xbsa.so implementa o ABI XBSA padrão (X/Open) sem dependência de código IBM/HCL.

Pronto para avaliar?

Trial gratuito de 30 dias para instâncias Informix qualificadas (12.10+, 14.10, 15.0). Garantimos no mínimo 50% de desconto vs Bacula Enterprise, Veeam, Commvault ou TSM/ISP, com mais funcionalidades — incluindo XBSA nativo, conversão cross-version e instant recovery que nenhum competidor entrega.

Heitor Faria — Fundador, PodHeitor International
[email protected]
☎ +1 (789) 726-1749 · +55 (61) 98268-4220 (WhatsApp)
🔗 Página do plugin PodHeitor Informix

Disponível em: pt-brPortuguêsenEnglish (Inglês)esEspañol (Espanhol)

Deixe um comentário