Entendendo o Bacula
August 18, 2008
Uma das grandes dores de cabeça de qualquer administrador de redes é o Backup (na verdade o restore destes backups). Já fiz backups criando scripts de gerenciamento de cópias (tar via SSH), e até algumas soluções robustas e escaláveis. E quando o backup não é bem planejado na hora que precisamos do restore começam os problemas.
Recentemente resolvi implementar o Bacula, me baseei em um tutorial do Viva o Linux: http://www.vivaolinux.com.br/artigo/Montando-um-completo-servidor-de-backup-usando-Bacula/ e um dos meus grandes problemas sempre foi entender o funcionamento de Jobs, Pools, Volumes e toda aquela nomenclatura que toda ferramenta de backup possui.
O Bacula não deve nada à soluções corporativas e que custam uns belos trocados, o único senão dessa ferramenta, é a falta de amigabilidade de sua interface (em relação à outras soluções), mas isso é algo que eu espero que você esteja acostumado a lidar.
Não vou me ater nesse texto à instalação ou configuração do Bacula, mas sim as nomenclaturas existentes. Algumas são bem óbvias como os Schedules e Jobs mas outras deixam um pouco de dúvida e geram algumas incertezas de como realmente funcionam.
Entendendo Jobs e Schedules
A principal instrução do backup é o Job. Um job consiste, principalmente, de:
- FileSet: lista dos arquivos e diretórios que serão backupeados;
- Client: a origem do backup. O servidor de onde o Bacula irá buscar os arquivos. O Client pode ser o próprio servidor do Bacula, mas um bom exemplo é todos os servidores do seu datacenter;
- Schedule: é o agendamento, especifica quando o backup será realizado, desde o dia da semana até a hora em que o backup será realizado (algo semelhante ao cron). Também especifica qual o nível de backup que será feito: Full, Incremental etc;
- Pool: será explicado mais abaixo.
Claro que essas não são as únicas opções, mas são as essenciais.
Geralmente o par FileSet/Client combinam-se em um Job. A maioria das diretivas, como FileSets, Pools, Schedules, podem ser combinadas entre os Jobs, ou seja, você poderá ter em 2 Jobs diferentes o backup de diferentes servidores (Client) usando o mesmo Schedule, o mesmo FileSet e talvez até o mesmo Pool. O Schedule irá definir que tipo de backup irá rodar e quando – por exemplo Full na Segunda e incremental no restante da semana. Quando mais de um Job usa o mesmo Schedule, a prioridade do Job determina quem irá rodar primeiro. Se você criar vários Jobs, pode usar a diretiva JobDefs para definir os parâmetros defaults para todos os Jobs. Isso pode ser alterado na configuração propriamente dita do Job, mas pode economizar um bom tempo e deixar a manutenção mais fácil.
Além dos Jobs para backup ainda existem Jobs para Restore, Verify (verificação) e admin jobs, que possuem requisitos diferentes.
Entendendo Pools, Volumes e Labels
Se você costuma usar programas como o tar para fazer seus backup, Pools, Volumes e Labels podem parecer bem confusos num primeiro momento. Um Volume é uma única fita física (ou um único arquivo) onde o Bacula irá gravar seus backups. Os Pools são grupos de Volumes.
Na configuração de um Job você nunca irá especificar um Volume mas sim um Pool. Caso o backup definido no seu Job ocupe mais do que o espaço físico de um (1) Volume o Bacula irá pedir para que você monte o próximo Volume para que o backup possa terminar (se você utilizar arquivos como Volumes pode configurar para que estes sejam montados automaticamente, e o tamanho máximo de um arquivo, arquivos grandes demais podem ser uma dificuldade na hora do restore).
Apesar das opções do Pool serem definidas no Director, o Pool é mantido no catálogo do Bacula, que contém informações retiradas da configuração do Pool (bacula-dir.conf) bem como informações de todos os Volumes que foram adicionados ao Pool. Adicionar Volumes em um Pool normalmente é feito de forma manual, através do programa de Console do backup usando o comando Label.
Para cada Volume, o Bacula mantêm uma série de informações no catálogo, como por exemplo, a data/hora da primeira escrita, data/hora da última escrita, o número de arquivos do Volume, o número de bytes e o número de montagens, entre outras informações.
Antes que o Bacula leia ou escreva em um Volume, ele nomeia (Label) esse Volume, para que ao montá-lo tenha certeza de que está com o Volume correto. Isso é feito com o comando Label no programa de Console.
Os passos para criar um Pool, adicionar Volumes à ele, e escrever o Label nesses Volumes, podem parecer tediosos, mas são bem simples de executar e sua principal finalidade é que ao necessitar de um restore o Bacula irá requisitar o Volume(s) correto, agilizando o processo de restore. Você não precisará ficar abrindo fita por fita ou CD-R por CD-R no seu computador para saber onde está aquele arquivo que você acha que fez backup no ano passado, basta encontrá-lo no Bacula que ele praticamente faz todo o resto pra você.
Também com os Pools você pode criar suas próprias organizações. Você pode ter Pools “Diários” que gravam backups incrementais e Pools “Semanais” que só gravam backups Full. Como dito mais acima vários Jobs podem ter um mesmo Pool, assim no dia que você precisar de um restore, ou de algumas versões talvez sejam necessário 1 ou 2 fitas para fazer esse restore.
Fazendo a lição de casa
Ao configurar um sistema de Backup, seja ele qual for, tenha em mente que sua principal preocupação é o restore, e não o backup em si. Algumas preocupações que você deve ter são:
- Defina uma política de backup, e tenha certeza que as pessoas na sua empresa conheçam essa política;
- Ao definir sua política, monte um esquema sempre pensando no restore. Leve em conta as limitações de hardware (unidades de fitas LTO, CD-R) para definir o melhor esquema com o melhor custo benefício para sua empresa. Não tente fazer backup full de tudo, além de provavelmente não precisar, você irá gastar muito com fitas e o sistema de backup ficará caro demais. Lembre-se que embora você consiga justificar os custos do backup na sua empresa, seus superiores só entenderão o real valor dele quando precisarem (e se precisarem) do restore.
- Arrume um tempo para, de tempos em tempos, rever sua estratégia de backup, talvez você encontre uma forma que gaste menos fitas do que você pensou originalmente.
- Faça de vez em quando o restore de algum arquivo.
- No caso do Bacula, preocupe-se demais com o catálogo (que fica no mysql), sem ele você não fará restore dos seus arquivos.
7 Comments Add your own
Leave a Comment
Some HTML allowed:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
Trackback this post | Subscribe to the comments via RSS Feed
1. Backup: Entendendo as nomenclaturas do Bacula | August 21, 2008 at 4:33 pm
[...] por Eduardo Ukstin (ukstinΘgmail·com) – referência [...]
2.
Enderson | August 21, 2008 at 11:02 pm
Ótimo artigo, ajudou bastante a compreender melhor o Bacula, a documentação do bacula é imensa, e artigos como este ajudam a desmistificá-lo.
3.
Giorgio | August 21, 2008 at 11:17 pm
Bacana ! Bem explicado amigo
… eu bati foi muita cabeça com o bacula até descobrir o backuppc…. nossa é muito mais fácil que o bacula e muito professional; vem com interface em cgi pra configurar tudo e muito mais.
Tenho um servidor rodando ubuntu server 8.04.1 + BackupPC 3.1 fazendo backup em um pool de 4 discos de 250gb em raid5
to com 850 GB de dados que comprimidos no pool dão 75 GB
4.
Diogo | August 22, 2008 at 8:16 am
Parabéns por esta postagem!
Já utilizo a muito tempo o Bacula e não tenho do que reclamar…
Uma excelente ferramenta!
Valeu!
5. Backup: Entendendo as nomenclaturas do Bacula | Abiyaa | August 22, 2008 at 8:50 am
[...] por Eduardo Ukstin (ukstinΘgmail·com) – referência (internethacks.wordpress.com). [...]
6.
Jeronimo Zucco | August 22, 2008 at 9:39 am
Em qualquer software de backup, e não somente o bacula, você deve saber o que significa Pools, Jobs, Volumes, Sets, etc. Essas definições se aplicam a todos os softwares de backup.
E sobre a interface não ser amigável, já tentou usar o BAT ?
[]’s
7.
ukstin | August 22, 2008 at 10:23 am
Com certeza Jeronimo, tanto que no início do texto eu falo que esses conceitos valem para qualquer ferramenta de backup.
Vou dar uma olhada no BAT mais de perto, obrigado pela dica.