Ir para o conteúdo
ou

Software livre Brasil

Heitor Medrado de Faria

Tela cheia
 Feed RSS

Blog

27 de Maio de 2009, 0:00 , por Software Livre Brasil - | Ninguém está seguindo este artigo ainda.

Instalando o Bacula no FreeBSD [Installing Bacula on FreeBSD]

20 de Janeiro de 2010, 0:00, por Software Livre Brasil - 0sem comentários ainda

Inicialmente 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, por Software Livre Brasil - 0sem comentários ainda

Em 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:00

Run = 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, por Software Livre Brasil - 0sem comentários ainda

Trata-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, por Software Livre Brasil - 1Um comentário

Dependendo 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, por Software Livre Brasil - 0sem comentários ainda

Para 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 &