Backup profissional

Propaganda
Instalação, configuração e uso do Bacula
CAPA
Backup profissional
Stephen Gibson – www.sxc.hu
Gravar arquivos de um local em outro é muito fácil, mas só o
Bacula é capaz de fazer backups em escala industrial sem perder
a praticidade necessária para os modernos administradores.
por Gerd Müller
A
segurança de dados, de PDAs
a grandes mainframes, incluindo versões futuras dos
softwares e das mídias de armazenamento, é o objetivo do projeto
de backups Bacula [1] desde o início. Desenvolvedor-líder do projeto desde 2000, Kern Sibbald optou
pelo modelo do Código Aberto por
acreditar ser essa a melhor forma de
se obter um software seguro e competente na geração e recuperação
de backups. Atualmente, o Bacula
já é uma alternativa às custosas soluções proprietárias.
Componentes
O Bacula é composto por várias
partes, sendo as mais importantes:
Catálogo (banco de dados SQL)
Linux Magazine #60 | Novembro de 2009
Director (bacula-dir)
Armazenamento (bacula-sd)
Arquivos (bacula-fd)
Console
Estes componentes permitem
dividir o servidor em múltiplos
“pedaços”, de forma a facilitar instalações distribuídas. À exceção do
director e do catálogo, os demais
componentes podem ser utilizados somente quando necessários.
A comunicação entre as peças é
feita por meio de portas definidas
pelo IANA (figura 1), o que facilita
a instalação do Bacula através de
firewalls. Evidentemente, o software também permite a criptografia
de todas as conexões usadas. Cada
componente se autentica por meio
de uma senha, conhecida pelos dois
lados da autenticação.
Memória do Bacula
O catálogo é a memória principal
do Bacula. Nele ficam os dados mais
importantes para a operação do software, gerenciados por um banco de
dados SQL. Atualmente, os bancos
de dados suportados são MySQL,
PostgreSQL e, para exigências pouco
sofisticadas, SQLite. O back-end do
Bacula é um de seus pontos fortes.
Por isso, existem certos scripts livres
para permitir seu monitoramento por
soluções específicas. No caso do Nagios, o Bacula até já traz um script
por padrão. Os scripts costumam ser
usados para informar o sucesso do
último backup. Com isso, o adminis45
CAPA | Bacula
trador só precisa intervir na solução
de backup quando for necessário.
Centro de controle
O director é o centro de controle
do sistema de backup. Ele coordena
os componentes, analisa os dados e
os guarda no catálogo. Além disso,
ele gerencia os backups de acordo
com as configurações determinadas
pelo administrador.
Com relação à segurança, não há
diferença entre o Bacula e as demais
soluções proprietárias dos mais variados tamanhos.
O Bacula é capaz de fazer backups
das formas mais comuns: completo,
diferencial e incremental. Um backup
diferencial engloba todos os dados
alterados desde o último backup
completo. O backup incremental,
por sua vez, grava somente os arquivos que tenham sido alterados após
o último backup.
Para garantir a confiabilidade dos
backups, o Bacula sempre verifica
se estão presentes o último backup
completo e os incrementais posteriores a ele. Em caso negativo, o
programa realiza automaticamente
um backup incremental com base
no último completo. O catálogo documenta as sequências de backups
e os arquivos incluídos. É possível
definir quais arquivos salvar por meio
dos file sets e agendar as tarefas de
backup no servidor.
desde simples diretórios
até discos rígidos inteiros,
CDs, DVDs e fitas em
grandes bibliotecas (incluindo leitores de código
de barra), para os quais
utiliza o projeto MTX [2].
O formato do backup é
idêntico em todos os casos
e – embora proprietário
– é muito flexível e bem
documentado.
No Bacula, o tamanho
dos backups não está limitado ao do volume onde
ele se localiza. Da mesma Figura 1Funcionamento dos componentes do
Bacula. Todos os componentes se
forma, um mesmo volucomunicam com o director, o sistema
me pode conter dados de
é operado por meio do console e
múltiplos backups. Com
todas as tarefas de leitura e escrita
isso, não é preciso acressão realizadas pelos daemons de
centar novos volumes o
arquivos e armazenamento.
tempo todo, já que o programa permite aproveitar
ao máximo o espaço disponível. Se
um backup for apagado e deixar O daemon de arquivos (file-daemon)
de ocupar um determinado es- é o agente usado pelo Bacula para
paço, esse mesmo espaço poderá acessar os dados no sistema a ser lido.
ser ocupado logo em seguida. Os Ele lê os dados do backup e grava-os
volumes podem ser agrupados nos na mídia do servidor de backup. Ele
chamados pools para permitir uma registra no director todas as tarefas de
melhor organização dos backups e backup e restauração, assim como
também a reserva de espaço, caso seus respectivos arquivos, volumes e
necessário. Os pools associam vo- pools. O director, por sua vez, armalumes a tarefas de backup.
zena essas informações no catálogo.
Agentes
Armazenamento
O componente seguinte é o daemon
de armazenamento. Ele fornece
acesso do director aos meios (ou
volumes) de armazenamento e se
encarrega da gravação e da leitura
dos dados no momento da restauração destes. Nas tarefas de backup, o
daemon de armazenamento recebe
os dados diretamente do daemon
de arquivos e os repassa ao meio de
armazenamento.
Para gravar, o Bacula consegue
utilizar várias mídias diferentes,
46
Figura 2Versão do console do Bacula para sistemas Windows.
http://www.linuxmagazine.com.br
Bacula | CAPA
O daemon de arquivos troca os arquivos diretamente com o daemon
de armazenamento.
O Bacula suporta vários sistemas
no papel de daemon de arquivos,
como Unix (Linux, Solaris, FreeBSD, OpenBSD, Mac OS X, Tru64,
Irix, AIX, BSDI, HPUX, NetBSD e
outros) e também Windows (Windows 98, Me, XP, NT, 2000 e 2003). A
restauração de dados de um sistema
para outro diferente não é nenhum
problema, pois cada uma das tarefas
é realizada por um agente específico
em cada máquina – e cada agente
possui todas as permissões necessárias
em seu sistema local. Evidentemente, também é possível gravar e ler
compartilhamentos NFS e Samba.
Vale a pena mencionar que o
Bacula no Windows permite fazer
backup de arquivos abertos e interage com os aplicativos para garantir cópias consistentes de bancos de
dados. Para isso, o programa utiliza
há tempos o serviço Microsoft Volume Shadow Copy Service (VSS),
utilizando uma pequena parte do
concorrente também livre Amanda.
Porém, no Amanda essa função está
apenas no planejamento.
O Bacula ainda oferece a possibilidade de executar, em cada plataforma, algumas ações antes e após cada
atividade de backup. Esse recurso é
especialmente útil no caso de bancos de dados, que podem fazer um
dump para o disco logo antes de o
backup ser realizado, de forma a
conservar efetivamente todo o conteúdo do banco.
Console
administrativo
O último componente do Bacula
– o console – é a interface do administrador. Se for desejável controlar
manualmente o Bacula, o console administrativo é a ferramenta
ideal. Além do Bconsole, baseado
em shell, há também um console
Linux Magazine #60 | Novembro de 2009
Figura 3O console gráfico do Bacula oferece as mesmas funções do console
de texto.
gráfico para Windows e Gnome
(figuras 2 e 3). Sua principal diferença para o console gráfico é a
organização dos menus. No entanto, todos os consoles oferecem as
mesmas – e muito úteis – funções
administrativas.
O exemplo detalhado a seguir
ilustra a instalação do Bacula com
base numa configuração mínima
com um único servidor que age
como catálogo, director e daemon
de armazenamento. Além disso, esse
mesmo sistema é o alvo do backup, o
que significa que é preciso ter ainda
o daemon de arquivos. O catálogo
utiliza o MySQL.
Instalação
A versão atual do Bacula está disponível no site do projeto [1]. Após
descompactá-la, bastam os comandos
tradicionais para instalar o servidor
de backup:
./configure --with-mysql
make
make install
Se um determinado servidor precisar apenas dos componentes para
gravação ou restauração, o melhor
é usar o comando ./configure--enable-client-only.
Em seguida, é preciso preparar o
catálogo (leia-se banco de dados) no
servidor de backup. Há scripts específicos em /etc/bacula/ para realizar
essa tarefa:
./create_bacula_database
./make_bacula_tables
./grant_bacula_privileges
Com isso, a instalação já está terminada. Resta apenas criar o link
simbólico dos scripts de inicialização bacula-ctl-dir (para o director),
bacula-ctl-sd (daemon de arma-
Listagem 1: Configuração do console
01 Director {
02 Name = dir-backup
03 DIRport = 9101
04 address = backup
05 Password = “d87Y2YQsX0PQLyDaUHTg5kVoWmk7io52”
06 }
47
CAPA | Bacula
Listagem 2: Configurações do daemon de arquivos
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Director {
Name = dir-backup
Password = “suefheKt70tSOz29JUGwSxPZrVrH”
}
Director {
Name = backup-mon
Password = “iDD6sy05efsfNsNjZflTkedwMpdJ”
Monitor = yes
}
FileDaemon {
Name = backup-fd
FDport = 9102
WorkingDirectory = /var/bacula/working
Pid Directory = /var/run
Maximum Concurrent Jobs = 20
}
Messages {
Name = Standard
director = dir-backup = all, !skipped, !restored
}
Listagem 3: Configuração do daemon de armazenamento
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
48
Storage {
Name = backup-sd
SDPort = 9103
WorkingDirectory = “/var/bacula/working”
Pid Directory = “/var/run”
Maximum Concurrent Jobs = 20
}
Director {
Name = backup-dir
Password = “zLsrudRETNgNMSmyE0ZcNvHgI8yW”
}
Director {
Name = backup-mon
Password = “KmAQ2EK0KEeE5j5gXLVLpVvyak/Z”
Monitor = yes
}
Device {
Name = FileStorage
Media Type = File
Archive Device = /tmp
LabelMedia = yes;
Random Access = Yes;
AutomaticMount = yes;
RemovableMedia = no;
AlwaysOpen = no;
}
Messages {
Name = Standard
director = dir-backup- = all
}
zenamento) e bacula-ctl-fd (daemon de arquivos) de seu local atual
(/etc/bacula/) para o local correto
no seu sistema.
O Bacula sempre instala o daemon de arquivos no próprio servidor
de backup. Ele oferece não apenas
para fazer backups nesse servidor,
mas também para gravar o catálogo
sempre que necessário.
Terminada a instalação, podemos
proceder aos arquivos de configuração.
Configuração
A configuração dos componentes é
feita nos arquivos bacula-dir.conf,
bacula-fd.conf, bacula-sd.conf e bconsole. Para o exemplo deste artigo,
bastam as configurações padrão
desses componentes, o que significa que não precisaremos alterar tais
arquivos. O arquivo mais fácil de
entender é o do console. Ele controla somente a comunicação com
o director (listagem 1).
O daemon de arquivos, o único
que requer alterações no arquivo de
configuração padrão (listagem 2),
requer muita atenção no uso profissional. Além da comunicação
com o director, é preciso definir
quais mensagens de status devem
ser transmitidas ao director.
O caso do daemon de armazenamento é bastante diferente. Suas opções de configuração são semelhantes
às do daemon de arquivos, mas ele
dispõe de um script de instalação
que resolve os problemas. No nosso
exemplo, temos um dispositivo que
é montado em /tmp/ (listagem 3) –
isto serve para demonstração, mas
não para uso em produção. O arquivo bacula-sd.conf contém diversos
exemplos para outros casos, como
unidades de DVD e fitas, bibliotecas
e muito mais.
A configuração do director (listagem 4) é um pouco mais complexa.
Todos os componentes se encontram
novamente aqui e contêm links para
seus nomes. Além disso, ele contém
http://www.linuxmagazine.com.br
Bacula | CAPA
as definições de tarefas de backup,
agendamentos, conjuntos de arquivos e pools.
Todos os componentes do Bacula
já podem ser iniciados neste momento. Se a instalação e a configuração
tiverem sido feitas corretamente, o
administrador pode abrir o console
com o comando bconsole. Nele, o
comando status all oferece um panorama do status de todos os componentes. Se o teste tiver sido realizado
com sucesso, já será possível realizar
o primeiro backup.
Primeiro backup
Para iniciar o primeiro backup, basta
usar o comando run no console administrativo, selecionando em seguida o servidor a ser lido para fazer o
backup. No nosso exemplo, trata-se
da máquina cliente1.
Nesse momento, o console exibe as configurações dessa tarefa de
backup e pergunta se pode mesmo
ser executado imediatamente. Após
a resposta yes, ele inicia o backup e o
console mostra uma mensagem informando que há novas mensagens.
Para ler as mensagens, é possível
escolher o método automático (autodisplay on) ou o manual (messages).
Ao final do backup, o Bacula emite
um relatório com todos os detalhes
mais importantes da tarefa que acabou de executar.
Restauração
A restauração do backup é igualmente fácil e pode ser iniciada com
o comando restore no console administrativo. Em seguida, é possível
selecionar quais dados restaurar. No
momento, são oferecidas onze opções,
começando pelos arquivos mais recentemente gravados e terminando
com a possibilidade de selecionar
os dados a restaurar por meio de
comandos SQL no catálogo. Após
escolher um método, basta marcar
os arquivos desejados e informar o
destino dos dados restaurados, além
Linux Magazine #60 | Novembro de 2009
Listagem 4: Configuração do director
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
Director {
Name = dir-backup
DIRport = 9101
QueryFile = “/etc/bacula/query.sql”
WorkingDirectory = “/var/bacula/working”
PidDirectory = “/var/run”
Maximum Concurrent Jobs = 1
Password = “4V60qoOSZgEBrirJBNAXbUUmAcM8”
Messages = Daemon
}
JobDefs {
Name = “DefaultJob”
Type = Backup
Level = Incremental
Client = backup-fd
FileSet = “Full Set”
Schedule = “WeeklyCycle”
Storage = File
Messages = Standard
Pool = Default
Priority = 10
}
Job {
Name = “Client1”
JobDefs = “DefaultJob”
Write Bootstrap = “/var/bacula/working/Client1.bsr”
}
Job {
Name = “BackupCatalog”
JobDefs = “DefaultJob”
Level = Full
FileSet=”Catalog”
Schedule = “WeeklyCycleAfterBackup”
RunBeforeJob = “/etc/bacula/make_catalog_backup bacula bacula”
RunAfterJob = “/etc/bacula/delete_catalog_backup”
Write Bootstrap = “/var/bacula/working/BackupCatalog.bsr”
Priority = 11
}
Job {
Name = “RestoreFiles”
Type = Restore
Client=backup-fd
FileSet=”Full Set”
Storage = File
Pool = Default
Messages = Standard
Where = /tmp/bacula-restores
}
FileSet {
Name = “Full Set”
Include {
Options { signature = MD5 }
File = /usr/local/src/bacula-2.0.3
}
Exclude {
File = /proc
File = /tmp
49
CAPA | Bacula
Listagem 4 (continuação)
63
File = /.journal
64
File = /.fsck
65 }
66 }
067
068 Schedule {
069 Name = “Semanal”
070 Run = Full 1st sun at 23:05
071 Run = Differential 2nd-5th sun at 23:05
072 Run = Incremental mon-sat at 23:05
073 }
074
075 Schedule {
076 Name = “SemanalAposBackup”
077 Run = Full sun-sat at 23:10
078 }
079
080 FileSet {
081 Name = “Catalogo”
082 Include {
083
Options { signature = MD5 }
084
File = /var/bacula/working/bacula.sql
085 }
086 }
087
088 Client {
089 Name = backup-fd
090 Address = backup
091 FDPort = 9102
092 Catalog = MyCatalog
093 Password = “w4Usp8cV18pitA56WhtUHYSbNat83NgvesmiH”
094 File Retention = 30 days
095 Job Retention = 6 months
096 AutoPrune = yes
097 }
098
099 Storage {
100 Name = Arquivo
101 Address = backup
102 SDPort = 9103
103 Password = “0KaQ38vP8E8R2jKERde1BIZH5p27jimk62MXl1kZ”
104 Device = FileStorage
105 Media Type = File
106 }
107
108 Catalog {
109 Name = MeuCatalogo
110 dbname = bacula; user = bacula; password = “”
111 }
112
113 Pool {
114 Name = Default
115 Pool Type = Backup
116 Recycle = yes # O Bacula consegue reciclar volumes
automaticamente
117 AutoPrune = yes # Remover volumes expirados
118 Volume Retention = 365 days # Um ano
119 }
120
121 Console {
122 #...
123 }
50
de confirmar se é desejável sobrescrever os arquivos que já estiverem
presentes no destino. Esta tarefa
também gera um relatório.
O exemplo utilizado neste artigo explora somente uma pequena
parcela das inúmeras possibilidades
oferecidas pelo Bacula. Embora ele
demonstre o backup de apenas um
diretório, o procedimento é praticamente o mesmo para gravar os
backups em fitas, por exemplo. As
tarefas importantes, como o rótulo
da fita, são resolvidas de forma automática pelo Bacula por meio dos
parâmetros já fornecidos, ou então
informadas pelo administrador de
forma manual.
Conclusões
Este exemplo mostra que o Bacula
é uma solução completa de backup
que não deixa a desejar em comparação com as soluções proprietárias.
Além de gratuito, oferece o poder do
Software Livre.
Não é preciso temer o uso do
Bacula. Com a documentação
exemplarmente bem detalhada –
mesmo em comparação com outros
projetos livres –, praticamente não
restam dúvidas para o administrador. É fácil perceber que o líder do
projeto Kern Sibbald lhe dedicou
muito tempo. n
Mais informações
[1]Bacula:
http://www.bacula.org
[2]Compatibilidade com o MTX:
http://mtx.opensource-sw.
net/compatibility.php
Gostou do artigo?
Queremos ouvir sua opinião.
Fale conosco em
[email protected]
Este artigo no nosso site:
http://lnm.com.br/article/3101
http://www.linuxmagazine.com.br
Download