Instalando o Bacula no FreeBSD [Installing Bacula on FreeBSD]
20 de Janeiro de 2010, 0:00 - sem comentários aindaInicialmente iremos precisar do FreeBSD 7.2 instalado e com a rede configurada corretamente e com acesso internet para instalar-mos os pacotes.
Ps.: Estarei documentando a instalação dos pacotes de 2 formas: via ports e via pkg_add. Procure informações no Handbook(pt-BR) para mais informações.
Via “Ports”:
entre no diretorio
cd /usr/ports/sysutils/bacula2-server
Configure as opções de compilação do bacula-server com o comando:
make config
…marque as opções conforme descrito abaixo:
[X] SQLITE3 Use SqLite-3 database instead of SqLite-2
[ ] MYSQL Use MySQL database instead of SqLite
[ ] POSTGRESQL Use PostgreSQL database instead of SqLite
[X] MTX Install mtx for control of autochanger devices
[X] OPENSSL Enable OpenSSL for encrypted communication
…execute o comando de compilação e instalação
make install all
Agora faça a instalação do bacula-client
cd ../bacula2-client
make config
Marque as opções apropriadas para sua necessidade:
[X] WXCONSOLE Build with wxGTK based GUI console
[ ] GNOMECONSOLE Build with GNOME based GUI console
[ ] DOCS Install documention
[X] OPENSSL Enable OpenSSL for encrypted communication
Execute a compilação e instalação:
make install all
Via “pkg_add”:
Para instalar o bacula-server através do pkg_add, basta executar o comando abaixo:
pkg_add -vr bacula2-server
pkg_add -vr bacula2-client
Configurando o “Bacula”:
Vá para o diretorio
cd /usr/local/share/bacula/
e execute os seguintes comandos para criar a estrutura de banco de dados
./create_sqlite_database
make_sqlite_tables
Agora vamos para o diretorio de configuração userland
cd /usr/local/etc
e vamos configurar inicialmente o Director daemon.
Faça uma cópia do arquivo sample para a produção e abra o arquivo:
cp bacula-dir.conf.sample bacula-dir.conf
vi bacula-dir.conf
Altere as opções conforme suas necessidades.
Aconselho à você dar uma lida na documentação do Bacula, ela esta bem completa e explicativa, estarei aqui somente exemplificando o uso do Bacula, mas isso depende de cada um em criar uma politica de backup viavél, por isso, volto a insistir em consultar a documentação do Bacula para você mesmo criar a politica de backup que seja viavél para sua rede.
Copie agora o arquivo sample de configuração do Storage Daemon:
cp /usr/local/etc/bacula-sd.conf.sample /usr/local/etc/bacula-sd.conf
vi /usr/local/etc/bacula-sd.conf
Configure o arquivo de acordo com a configuração do Director daemon e de acordo com o tipo de midia que você vai usar para guardar seus backups.
O arquivo contém vários exemplos de utilização de midias.
Configure agora o arquivo de configuração do Console Manager
cp /usr/local/etc/bconsole.conf.sample /usr/local/etc/bconsole.conf
vi /usr/local/etc/bconsole.conf
Configure o arquivo para conectar o console ao seu Director Daemon.
Configure a inicialização do daemons no seu freebsd
echo ‘bacula_dir_enable=”YES”‘ >> /etc/rc.conf
echo ‘bacula_sd_enable=”YES”‘ >> /etc/rc.conf
Vamos agora configurar a parte cliente (File Daemon) de onde serão obtidos os arquivos a serem guardados no backup.
Configure o arquivo de configuração de acordo com seu Director Daemon, lembrando de manter a senha a mesma entre os arquivos.
cp /usr/local/etc/bacula-fd.conf.sample /usr/local/etc/bacula-fd.conf
vi /usr/local/etc/bacula-fd.conf
Configure a inicialização do client
echo ‘bacula_fd_enable=”YES”‘ >> /etc/rc.conf
Agora faça este mesmo procedimento em todas as máquinas que você quer proteger no seu backup, baixe do site do bacula (http://sourceforge.net/project/showfiles.php?group_id=50727) de acordo com o sistema operacional da máquina.
Vamos iniciar os daemons !
/usr/local/etc/rc.d/bacula-dir start
/usr/local/etc/rc.d/bacula-sd start
/usr/local/etc/rc.d/bacula-fd start
Para gerenciar o Bacula você podera executar o Console Manager de qualquer máquina.
Extraído de : http://www.luizgustavo.pro.br/blog/2009/09/30/bacula-breve-introducao/
Exemplo de “GFS” no “Bacula”
19 de Janeiro de 2010, 0:00 - sem comentários aindaEm resposta às pessoas que tem procurado esta informação na busca do “site”, segue:
Primeiramente, quem não sabe o que é GFS, leia aqui.
A implementação da estratégia GFS clássica no “Bacula” se dá através de duas configurações:
1. Ao menos 03 (três) “pools” distintas.
“Pools” diaria, semanal e mensal. Obviamente você pode chamar de outra maneira (ex.: daily, weekly, monthly), mas a função delas deverá ser a mesma: hospedar os “backups” para cada hierarquia (diferenciais ou incrementais diários, “full” semanais e “full” diários).
Variações:
1. Quem desejar GARANTIR que o “Bacula” sempre utilize a mesma fita para determinado dia do mês (ex.: VOL1 sempre ser gravado às segundas-feiras), deve criar “pools” específicas para cada dia da semana (ex.: diario_seg, diário_ter, etc.), e assim sucessívamente. Observer que, isso só é útil se estiver trabalhando com um drive de fitas manual e o operador não tiver acesso á console do “Bacula”, para saber qual fita deve inserir.
2. Você pode desejar criar uma “pool” para fitas que estão fora do seu robô de fitas, para evitar que o “Bacula” as procure durante a operação de “backup” – e para melhor organizá-las.
Para criar uma nova pool, basta duplicar as configurações de uma “pool” qualquer (incialmente a “default”), e alterar seu nome. Não esqueça de configurá-la (tempo de retenção, tempo de uso do volume, reciclagem – “yes/no”, etc.) —> tudo isso lá no bacula-dir.conf.
2. Agendamento.
O “schedule” ou agendamento, também é configurado no bacula-dir.conf. Você deve associar um “Job” criado neste arquivo a um agendamento. Portanto, aconselhamos criar um novo “schedule” (ex.: agenda_gfs), e ir associando os “Jobs”.
Schedule {
Name = agenda_gfs
Run = Level=Differential Pool=Diaria Monday-Thursday at 19:00Run = Level=Full Pool=Semanal 2nd 3rd 4th 5th Friday at 19:00
Run = Level=Full Pool=Mensal 1st Friday at 19:00
}
No exemplo, teremos “backups” diários de “segunda às quinta-feiras“, semanais nas “segundas, terças, quartas e quintas sextas-feiras dos mês“, e mensais na “primeira sexta-feira do mês“.
Abracetas,
Heitor Faria
www.bacula.com.br
O que é retenção (ou “retention”)?
18 de Janeiro de 2010, 0:00 - sem comentários aindaTrata-se de um conceito muito importante para quem precisa trabalhar com “backups”. Ainda, esta expressão se encontra presente em quase toda ferramenta do gênero.
Retenção consiste no período de tempo no qual os dados gravados em um “backup” não podem ser apagados, nem pelo sistema nem por intervenções humanas convencionais. A única forma para apagar as informações seria explicitamente indicando que a ferramenta o fizesse (no caso do “Bacula” com o comando “purge”).
Esta proteção visa ainda evitar erros de um operador (ex.: colocar a fita errada no drive), ou do administrador através da console. Em linhas gerais: a retenção é “o segurança” dos seus dados.
Depois de terminado o tempo de retenção, se diz que ele “expirou” e, dessa forma, o volume poderá ser sobrescrito em um próximo trabalho de “backup”.
No sistema GFS clássico, a retenção para os “backups” diários deve ser de aproximadamente 7 dias. No semanal de aproximadamente um mês. E do mensal de aproximadamente um ano. Geralmente pode ser um pouco menos, para evitar a sobreposição do tempo de retenção com a data na qual o volume deve ser sobrescrito.
No “Bacula”, a retenção é definida nas configurações de “pool” (bacula-dir.conf), e você pode verificar seu tempo, para os volumes, através do comando “list media”.
Observe que o tempo de retenção só começa a ser contado quando o volume é encerrado – ou seja, quando ele enche (status “full”) ou quando foi previamente configurada uma “limitação” em sua gravação (para que ele não fique “gravando de onde parou” – ou “append”, simplesmente até que o volume encha).
Uma boa maneira de configurar isso é através da opção “Volume Use Duration”. Durante este tempo, o “Bacula” poderá gravar num volume específico e, depois, ele será automaticamente encerrado (passará para o status “used”). Só então o tempo de retenção começará a contar.
Por exemplo: para “backups” diários você pode usar 22 horas de “VolumeUseDuration” e 6 dias de retenção. Dessa forma a retenção “real” será de 6 dias + 22 horas e, satisfazendo a necessidade de reciclar o volume semanalmente (um volume de segunda-feira ser utilizado na segunda-feira seguinte).
Existem também outros limitadores de uso do volume, mas considero este o mais prático.
Ainda, o “Bacula” ainda conta com retenções de informação no catálogo (”jobs” e “files”), que servem como “limitadores” do tamanho do banco e podem ser apagadas automaticamente se a opção “auto prune” estiver ativada.
Mas eu já escrevi sobre isso em outro post… [clique aqui]
Abracetas,
Heitor Faria
Encontrando seu dispositivo do robô de fitas [Finding Autochanger Device]
18 de Janeiro de 2010, 0:00 - Um comentárioDependendo do seu sistema, o robô de fitas pode, nem sempre, ser criado como /dev/st0, já que a ordem dos dispositivos SCSI pode mudar quando o servidor é reinicializado. Por exemplo, o robô pv132t (Dell Tape Library) estava representado por /dev/sg10, mas, agora, está no /dev/sg7, devido à ordem de descobrimento de dispositivos na SAN.
Apesar de não acontecer sempre, é inconveniente e difícil de rastrear. Existe um script que pode solucionar este problema. Segue:
#! /bin/bash -x
# Shell script to create the /dev/changer symlink to the correct device. This
is necessary
# because the /dev/sg* devices can (and do) change their targets upon reboot.
if [ -z $CREATECHANGERATTEMPTS ] ; then
CREATECHANGERATTEMPTS=0
fi
if [ $CREATECHANGERATTEMPTS -gt 1 ] ; then
echo "$0: error. Could not determine the /dev/sg\* device connected to
the autochanger. /dev/changer not created."
exit 1
else
CREATECHANGERATTEMPTS=$((CREATECHANGERATTEMPTS + 1))
export CREATECHANGERATTEMPTS
if [ -e /dev/changer -a ! -h /dev/changer ]; then
echo "$0: error. /dev/changer exists but is not a symlink"
exit 1
fi
rm -f /dev/changer
# Walk through the /dev/sg* devices, running the mtx command. Upon
success, create
# the link
for device in /dev/sg*
do
mtx -f $device status 1> /dev/null 2>&1
# mtx -f $device status 1> /tmp/create_changer.out 2>
/dev/create_changer.errs
if [ $? = 0 ] ; then
ln -s $device /dev/changer
exit 0
fi
done
# We can only get here if the attempt failed...in that case...try:
#
# force the HBA to rescan the devices
#
# adding any devices that aren't registered with the OS
#
# do a SCSI reset on those devices
# Collect the initial sg_map, so that we can determine any new devices
sgmapBEFORE=`sg_map | cut -f1 -d" "`
# Find the correct host number for the HBA:
hostnum=`cd /proc/scsi/qla2300; ls [0-9]*`
bus=0
# force a rescan
echo "scsi-qlascan" > /proc/scsi/qla2300/$hostnum
# Find all the devices that are not registered with the OS:
grep "\*" /proc/scsi/qla2300/$hostnum | grep flags | while read line
do
id=`echo $line | sed -e "s/:.*//" -e "s/.* //"`
lun=`echo $line | sed -e "s/).*//" -e "s/.* //"`
echo "scsi add-single-device $hostnum $bus $id $lun " >
/proc/scsi/scsi
done
sgmapAFTER=`sg_map | cut -f1 -d" "`
sgmapADDL=`echo $sgmapBEFORE $sgmapAFTER | tr " " "\012" | sort | uniq
-u`
if [ -z $sgmapADDL ] ; then
echo "No new /dev/sg devices created"
exit 1
fi
for dev in $sgmapADDL
do
sg_reset $dev
done
# Now, re-run this script
$0
fi
Depending on your system, the changer device may not always be at /dev/sg0, as the SCSI device ordering can change each time the system is booted. For example, pv132t (Dell Tape Library) was on /dev/sg10, but it’s on /dev/sg7 now (for exemple), due to the device discovery order on SAN.
While this doesn’t happen all the time, it’s very inconvenient and difficult to catch. There is a script to help with this issue, right above.
Restaurando catálogo MySQL [MySQL catalog restore]
18 de Janeiro de 2010, 0:00 - sem comentários aindaPara restaurar o catálogo do Bacula (MySQL), de um arquivo de “dump” (*.sql):
To restore MySQL Bacula Catalog, from a dump file (*.sql):
mysql (comando para entrar na console do MySQL [command to enter MySQL console])
create database bacula (se ainda não criado [if still not created])use bacula (seleciona a database do Bacula [select bacula da tabase])
\. bacula.sql (faz o restore [does the restore])
Ainda, podemos fazer desta outra maneira:
We also can do that another way:
mysql bacula < bacula.sql
Você pode também querer utilizar “nohup” e em “background…
Also, you should want to use nohup and run in background…
nohup mysql bacula < bacula.sql &