28 maio 2007

Tutorial Bacula: Infra-estrutura e Instalação

Volto aqui com a segunda parte do tutorial sobre o Bacula. Vou abordar nessa parte a explicação de como é a infra-estrutura na qual eu baseei o tutorial e a instalação do Bacula.

Infra-estrutura.

O tutorial é baseado na experiência que tive ao instalar o Bacula na empresa onde trabalho, por isso irei utilizar uma estrutura parecida para esse tutorial.

Para este tutorial teremos 1 servidor de arquivos com Linux instalado (acredito que a distribuição não seja importante) que o chamaremos d ServArq. Nesse servidor esta instalado uma unidade de fita para backup, com a qual, obviamente, iremos realizar os backups. Os arquivos a serem feito backup estão em somente 1 diretório, o diretório /arquivos. Será nesse servidor que iremos instalar o banco de dados e o Bacula, logo, teremos todos os módulos do Bacula concentrados em somente 1 servidor: o Bacula Director Daemon, o Bacula Storage Daemon, o Bacula File Daemon, o Database Server e o Console de Comandos. Apesar de estar instalando tudo em somente um servidor, eu poderia instalar cada módulo em um servidor diferente. Não estou utilizando vários servidores pois o volume de dados não é tão grande para justificar isso, porém é altamente recomendado uma configuração com vários servidores para quem tem muitos dados que precisam serem feito backup.

Além desse servidor de arquivo, teremos mais 2 servidores com dados que farão parte do backup. É um servidor de aplicações, que iremos chamar de ServApl, e um servidor de banco de dados, que chamaremos de ServBD, os 2 rodando Windows (acredito que a versão não seja importante, pois o Bacula roda em todas as versões). Nesses 2 servidores será instalado apenas o Bacula File Daemon, pois somente serão usados para buscar os dados que estão neles.

Acredito que com isso já se possa ter uma idéia melhor de como é a estrutura que será usada no backup. Saber como é a estrutura usada, na minha opinião, é fundamental para o entendimento da configuração do Bacula. Só mais um detalhe, todos os 3 estão na mesma rede física e lógica.

Como será realizado o backup

  • A partir da estrutura acima descrita, o backup será realizado da seguinte forma:

  • - Os dados de todos os 3 servidores estarão no backup;

  • - O servidor ServArq é o responsável pelo backup dos 3 servidores;

  • - Os backups serão realizados sempre durante a noite, iniciarão as 22 horas;

  • - Toda primeira segunda-feira de cada mês será realizado um backup completo, que será armazenado e não deverá ser apagado. Esse será nosso backup mensal;

  • - Será feito um backup completo toda segunda-feira (backup semanal, exceto na primeira segunda de cada mês), e backups incrementais de terça-feira à domingo (backup diário);

  • - O backup semanal será armazenado por 2 semanas, utilizando 2 fitas, alternando o uso (uma fita em uma semana, outra fita na semana seguinte), assim garantimos que sempre haverá um backup completo disponível;

  • - O backup diário utilizará apena 1 fita, que será utilizada todos os dias. Cada backup diário realizado será adicionado à fita sem sobrescrever o anterior, mantendo assim 6 backups incrementais na mesma fita;
Esse é o esquema de backup ideal, pelo menos para meu caso. Com esse esquema temos economia (pois usaremos somente 3 fitas durante o mês, sem contar com a fita mensal), praticidade (já que iremos trocar de fita apenas 2 vezes por semana) e segurança, já que teremos sempre um backup completo guardado e backups todos os dias.

Obs.: Para quem não sabe como funciona exatamente o backup incremental, vou colocar uma explicação rápida, mas aconselho que leia os links deste post, que contêm explicações mais detalhadas. Vamos à uma explicação rápida sobre os tipos de backup:

  • - Backup Completo ou Full – como o próprio nome diz, backup completo com todos arquivos existentes;

  • - Backup Diferencial – backup com as alterações realizadas desde o ultimo backup completo;

  • - Backup Incremental – backup com as alterações realizadas desde o ultimo backup, não importando que esse ultimo backup foi completo, diferencial ou incremental.
A instalação

Conforme as informações abordadas na parte de infra-estrutura, toda a instalação feita aqui será no mesmo servidor, no caso o ServArq. Então vamos começar.

Para a instalação, inicialmente você precisa ter instalado o MySQL ou algum outro servidor de banco de dados. Os bancos suportados na versão 2.0.3 são: MySQL, PostgreSQL, SQLite3, SQLite. No meu caso utilizei o MySQL. Como a maioria das distribuições atualmente já trazem o MySQL como padrão em sua coleção de pacotes, não irei abordar a instalação do mesmo, e vou considerar que todos saibam instalá-lo ou já o tenham instalado.

Para a instalação do Bacula, primeiro precisamos baixar a versão mais recente (recomendo isso pois aqui utilizo a versão mais recente, e mesmo que sua distribuição já traga o Bacula em sua coleção de pacotes, pode ser que a versão que a distribuição traga seja mais antiga) do site oficial (www.bacula.org). Depois de baixado e descompactado os fontes, vamos compilá-lo:

# ./configure --with-mysql

# make

# make install

Obs.: Existe um programa chamado checkinstall que server para criar o pacote rpm, deb ou tgz para a instalação com o gerenciador de pacotes. Para utilizá-lo, basta, depois do comando make, utilizar o comando:

# checkinstall make install

Esse comando irá pedir algumas informações sobre o programa e após isso irá gerar o pacote. Depois é só instalá-lo como o gerenciador de pacotes de sua distribuição. Isso garante uma remoção mais fácil do pacote, caso seja necessário. Eu tenho o pacote rpm gerado para o openSuse 10.2, se encontrar algum lugar para disponibilizar o pacote eu coloco o link no blog.

Após a instalação do Bacula, temos que criar o banco de dados no MySQL, criar as tabelas no banco de dados e preencher as tabelas com os dados iniciais necessários para o correto funcionamento do Bacula. Mas calma, não precisamos fazer isso manualmente, o Bacula traz scripts para automatizar essa tarefa. Entre no diretório /etc/bacula, que é o diretório padrão onde ficam os arquivos de configuração do Bacula. Nesse diretório estão os scripts que irão preparar o banco de dados. Digite os seguintes comandos:

# ./create_mysql_database

# ./grant_mysql_privileges

# ./make_mysql_tables

# ./update_mysql_tables

Ates de executar essas scripts, porém, é necessário saber a senha do adminitrador do MySQL (que normanlmente é o usuário root). Por padrão, ao instalar o MySQL, a senha é em branco. Se a senha do MySQL da sua instalação for em branco, é só executar os scripts e tudo funciona. Caso a senha seja outra, e você saiba a senha, entre em casa um dos scripts e altere a linha

if $bindir/mysql $* -f < $* -f

para

if $bindir/mysql -p= $* -f < $* -f

Agora, caso a senha não esteja em branco e você não saiba a senha, então temos um problema. Será necessário forçar a troca de senha. Eu sei que isso é possível fazer, mas não tenho os comandos necessários para fazer, logo, recomendo uma busca no google, caso esse seja o seu problema.

Para quem executou todos os passos até aqui sem nenhum problema, temos agora o ambiente pronto para começar a configirar o Bacula, mas isso irei abordar na próxima parte do artigo. Paro os que não obtiveram sucesso em alguma parte, estejam livre para postar as dúvidas nos comentários. Também estejam livres a apontar os problemas e fazer críticas ao tutrial.

Até a próxima.

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.

Tutorial sobre Bacula

Conforme prometido irei postar aqui um tutorial sobre Bacula. Ou melhor, uma série de post que juntos se tornarão um tutorial mais completo. Decidi fazer dessa forma, dividindo em várias partes, pois o assunto é muito complexo e grande, e colocar tudo em um post só seria complicado. Quando terminar tentarei unir o tutorial em um só, e para ficar melhor gostaria de receber dicas, criticas, correções... nos comentários para fazer devidas alterações. Para começar, vamos a uma introdução sobre o que exatamente é o Bacula e suas principais funções. Essa parte já esta pronta, somente irei fazer correções e algumas alterações para melhora-lo, e, hoje ou no máximo amanhã, irei postar aqui. Mas antes de ler (ou depois de ler, você é quem decide), sugiro que leiam os seguintes links:


Conceitos importantes sobre backup - É sobre um sistema de backup diferente, mas os conceitos são os mesmo do Bacula. Aqui você encontra o menu completo desse outro sistema de backup.

Tutorial sobre Bacula

Tutorial sobre Bacula

Conceitos sobre Tipos, Utilização e Gerenciamento de Backups

Esses links são informações e tutoriais sobre Bacula e backup em geral. Será muito bom se esses artigos forem lidos antes de ler meus posts sobre o Bacula, assim terão mais base para comentarem sobre o que escrevo. Assim que possível irei postar o primeiro da série. Aguardem.

11 maio 2007

Bacula (comentário rápido)

Ainda sobre o bacula, estou pesquisando sobre as dúvidas que ainda me restam quanto a configuração do sistema. Assim que todas minhas duvidas forem sanadas eu irei desenvolver um tutorial sobre o bacula.