22 maio 2007

Tutorial Bacula: Introdução ao Bacula

Bacula é um servidor para gerenciar, realizar e recuperar backup. É um sistema bem completo e flexível, o que também o torna bastante complexo, principalmente para configurá-lo. É baseado em plataforma cliente-servidor, o que quer dizer que um mesmo servidor pode fazer backup de vários clientes diferentes. O bacula também aceita vários tipos de dispositivos de armazenamentos, que vai desde arquivos em disco até modernas unidades de fitas (o que não é surpresa, já que qualquer tipo de dispositivo no Linux é tratado como arquivo:-).

Um ponto interessante no Bacula é que podemos usar vários servidores para o sistema de backup, isso por que o Bacula é dividido em vários “módulos” ou “servidores” (não sei qual a melhor terminologia para usar nesse caso). Segue abaixo uma esquematização do Bacula, que tirei do site oficial:

E aqui temos algo mais simples:

Conceitos do Bacula

Vou explicar o esquema acima, começando pela descrição de cada parte:

- Bacula Server (ou Bacula Director Daemon): é a parte principal do Bacula. Ele é o responsável por toda a administração dos backups e também pela recuperação dos dados em backup. É o “núcleo” do sistema todo. É ele que controla os demais servidores, sendo assim, tudo depende da configuração do Director. A configuração do Director é justamente a parte mais complexa do Bacula, porém as demais partes são extremamente simples.

- Storage Server (ou Bacula Storage Daemon): é servidor onde os dados serão armazenados. Não necessariamente necessita haver uma unidade de backup como uma unidade de fita ou gravador de DVD, pode ser somente um servidor com espaço em disco o suficiente para armazenar os arquivos de backup. Isso por ser uma característica do bacula realizar o backup em qualquer tipo de dispositivo como, por exemplo, Unidades de Fita, gravador de CD ou DVD, arquivos em HDs, penrives, disquetes (desde que o backup seja menor que a capacidade, claro), etc.

- File Server (ou Bacula File Daemon): é o cliente do bacula, ou seja, responsável por disponibilizar os arquivos que serão feito backup pelo servidor Bacula. Explicando melhor, no computador onde estão os dados que necessitam serem feito backup ficará instalado o programa cliente do Bacula, que permitirá ao servidor Bacula acessá-lo e copiar os dados para o backup.

- Database Server: esse na verdade é o banco de dados onde ficam armazenadas todas as informações gerenciadas pelo Bacula. É no banco de dados que ficam armazenados as informações sobre os dispositivos de armazenamentos, informações sobre os trabalhos de backup utilizados, a lista dos arquivos dos quais foram feitos backup em cada trabalho, etc. Os bancos de dados mais comuns de se utilizar é o mySQL e o PostgreeSQL. Nesse tutorial iremos utilizar o mySQL.

- Admin Workstation (Command Console): é a interface, ou console, pela qual se administrará o bacula. Existe a versão em linha de comando e também uma versão em modo gráfico (que na verdade é praticamente a mesma coisa, muda apenas algumas opções). Existe versões do console para Linux, BSD, Unix (e outros sistemas possix) e também para Windows.

Essa foi uma pequena descrição sobre cada parte do Bacula. Cada uma dessas partes pode estar em computadores diferentes, bem como todas em um mesmo computador. Aqui estão todas em um mesmo computador inclusive o File Daemon, e existem outros File Daemon na rede (em computadores diferentes).

Agora tentarei explicar de um modo simples como o Bacula funciona como um todo, bem como será a seqüência de configuração do sistema. A configuração de cada parte, apesar de ser comentada aqui, será detalhada em um post futuro (não sei se será no 2º ou 3º post sobre o assunto).

Para começar temos que ter instalado o banco de dados, no nosso caso o mySQL. Para configurar o mySQL, o Bacula traz alguns scripts para faze-lo, mas isso iremos ver no próximo post. Após isso configuraremos o Bacula Storage Daemon, com o arquivo /etc/bacula/bacula-sd.conf. Nele configuraremos o próprio Storage Daemon (claro), o Director que pode acessá-lo, o dispositivo que será utilizado e as mensagens do sistema.

Após isso iremos configurar o Bacula File Daemon, com o arquivo /etc/bacula/bacula-sd.conf. As configurações são: a configuração do File Daemon; o Director que pode acessa-lo; as mensagens do sistema.

Após, configuraremos o console, com o arquivo /etc/bacula/bacula-sd.conf. Para o console iremos apenas configurar qual o Director que será acessado pelo console. E só isso.

Agora a parte mais complexa, o Bacula Director Daemon, onde detalharei um pouco mais (apesar de não entrar na parte de configuração ainda). O arquivo de configuração é o /etc/bacula/bacula-dir.conf , onde iremos configurar as seguintes “seções”: (nota: o termo “seção” esta sendo utilizado por mim para tentar simplificar a explicação. Dentro de cada seção podemos dividir as informações em “itens”. Originalmente os arquivos de configuração do Bacula não esta dividido claramente em seções)

- Director: são as configurações globais do Bacula, one são definidos o nome do servidor, porta de acesso, etc.

- Messages: é o responsável de tratar as mensagens do sistema Bacula.

- Catalog: define qual é o nome do banco de dados, usuário e senha para acessar o banco de dados. Está ligado ao banco de dados propriamente dito.

- Client: configura os clientes de onde os arquivos serão feito backup. Cada computador onde esteja instalado o File Daemon deverá ser configurado aqui e no File Daemon deve ser configurado esse Director para poder ser acessado por ele, ou seja, essa configuração depende da configuração que esta no arquivo bacula-fd.conf, que é o arquivo de configuração do File Deamon.

- FileSet: aqui é configurado quais arquivos e diretórios serão e quais não serão feito backup. Caso seja informado uma pasta, todos os arquivos e subdiretórios desta pasta estará incluído no backup. Esta diretamente ligado ao Client.

- Pool: Pool pode ser entendido como um agrupamento de dispositivos de backup, que no bacula é chamado de Volume. Um agrupamento de volumes é utilizado para definir propriedades iguais, dentro do Babula, para vários dispositivos. Por exemplo, dispositivos que serão usados em backups mensais são agrupados em um pool diferente de dispositivos que são usados em backups diários, pois eles devem ser mantidos por tempos bem diferentes.

- Schedule: É utilizado para agendar backup, definindo qual o tipo de backup e quando deve ser executado (sim, o Bacula tem uma agenda de backup própria).

- Storage: define o Storage Daemon e o dispositivo que será usado. Pode haver mais de um Storage e também mais de um dispositivo de cada storage. Esta ligado com as configurações do Storage Daemon no arquivo bacula-sd.conf.

- Job: define os “trabalhos” de backup. O Job é o que realmente realiza o backup, utilizando outras configurações do arquivo bacula-dir.conf. Dentro de um Job é utilizado “itens” da seção Client, Pool, Schedule, FileSet e Storage, ou seja, usa praticamente todas as seções.

Abaixo segue a esquematização dos arquivos de configuração do Bacula:

Acredito que com essas explicações já se possa ter uma visão básica sobre o Bacula. Continuarei com esse tutorial nos próximos post, até lá gostaria que fosse comentado sobre como melhorar esse tutorial, com dicas, críticas, correções, etc. Espero que este tutorial possa ser bastante útil.

4 comentários:

Andre Guilhon disse...

O tutorial está muito bom até agora e me será muito útil, já que pretendo implementar esta solução em meu trabalho.
Sugiro apenas que faças uma revisão ortográfica no texto, já que existem alguns erros de digitação principalmente.

tiago_stos disse...

Os erros de digitação eu vou procurar alguém que possa fazer isso para mim, eu sou péssimo para isso. Valeu pelo comentário, e aguarde os próximos posts onde irei continuar o tutorial.

Paulo disse...

Olá, parabéns pela iniciativa de escrever o tutorial. Tenho certeza que será muito útil.

Apenas uma observação:
Na parte "Database Server" achei que a descrição ficou muito superficial. Não consegui visualizar muito bem o que vai fazer o banco de dados.
Provavelmente nos próximos posts deve ficar mais claro, mas por hora, achei que ficou com poucas informações. Seria bom se vc pudesse detalhar um pouco mais, mesmo sem entrar em detalhes de configurações.

Abraços

tiago_stos disse...

Paulo,
Fiz uma pequena alteração nessa parte. Não sei se vai ajudar muito, mas nos próximos posts, principalmente sobre execução e gerenciamento do bacula, ficará bem claro para que serve o Database Server.
Obrigado pelo comentário.