Ferramentas do usuário

Ferramentas do site


infra-estrutura:linux:bacula:instalando_configurando_bacula_com_robo_backup_ts3100

Instalando e configurando Servidor Bacula com robô de backup(Tape Library TS3100)

Para a documentação proposta iremos utilizar o ambiente abaixo.

Instalando a placa HBA

Faremos uso da seguinte placa HBA.

Após instalar a placa no Linux Ubuntu 18.04 LTS verificamos se a mesma foi reconhecida.

lspci -nn |egrep -i "fibre|hba"

Visualizando detalhes da placa e driver.

Verifique o modulo do kernel

Verificar o fabricante

Verificar a descrição

Verificar o nome do módulo do kernel

Verificar a licença do módulo

Verifica a versão do módulo

Verificar as portas sfp da placa HBA.

Verificar o status da porta

Verificar o número WWN

Verificar nomes WWN

Verificar status porta.

Verificar mais detalhes

Verificando modelo da placa

Verificando descrição da placa

Verificar revisão, versão do firmware, versão da rom

Verificar tudo :P

Identificar os dispositivos criados no /dev para a HBA

Para descobrir quais os dispositivos foram criado no /dev utilizando o comando dmesg.

Para o nosso exemplo temos três dispositivos.

  • sg0 - Disco rigido / WDC WD800JD-75MS
  • sg1 - CDROM / HL-DT-ST DVD+-RW GH50N
  • sg2 - Emulex LPe12000 PCIe Fibre Channel Adapter
  • sg3 - Magazine(seria a “caixa” que guarda as fitas de backup)

Porém não temos a unidade de fita, para isso vamos verificar via comando lsscsi.

Neste comando verificamos o disco e a unidade de CD. Porém verificamos o driver(ou leitor) das fitas que esta como /dev/st0. Como mencionado anteriormente o robô de backup ou tape library consiste de um hardware que possue um braço mecânico que pega as fitas e coloca em um drive de fita(ou leitor de fita). O dispositivo /dev/st0 e o leitor de fita e o “braço” seria o /dev/sg3. Vamos verificar se os mesmos estão funcionando.

Verificando o magazine, visualizando os 24 slots.

verificando a unidade de fita.

Para o comando mtx status funcionar ele usa o dispositivo /dev/changer. Geralmente ele não existe ele é um link simbólico para o dispositivo da magazine. Sendo assim vamos criar este link simbólico.

As fitas de backup e como gerar as etiquetas barcode

Iremos utilizar as fitas de backup do tipo LTO-5, o robô que possuímos suporta vários tipos de fita para realizar o backup.

Cada fita irá ser identificada por um código de barras(barcode), podemos gerar esses códigos de barras de várias formas. Eu utilizo o seguinte site.

https://php.kelvin.nu/software/barcode/

Acessando o site teremos a seguinte tela.

No exemplo temos o tipo de fita(Tape Type) no caso esta selecionado LTO-3 selecione conforme sua necessidade no meu caso é LTO-5. O L3 é uma abreviação para LTO-3. O campo prefixo fica a seu critério também geralmente utiliza-se 2 caracter o recomendado apesar de permitir 6 caracter. O starting number o númeo de cada fita começando no caso em 0001. Abaixo tempos um exemplo de barcodes gerado.

Para colar os barcode tem que ser igual ao formato da imagem. A fita tem que ser colocada na mesa com a engrenagem para baixo e as letras para baixo.

Para não deixar dúvida a imagem abaixo esta incorreto.

Logo depois de colar os barcode em todas as fitas e necessário somente colocar as fitas no magazine(que é um slot para colocar as fitas e o braço do robô pegar fita na hora do backup). Tome cuidado na hora de colar os barcodes para ele não desprender e travar o leitor de fita, sempre abra o magazine e verifique se as etiquetas estão bem fixas. Eu utilizei a seguinte cola.

Trabalhando com as fitas e o magazine de fitas

Vamos trabalhar um pouco com o magazine e entender como o Bacula irá funcionar. Primeiro vamos visualizar o magazine.

Veja que temos 3 fitas no magazine repare que as mesmas ja são reconhecidas pelo robô pelo código de barras. São eles:

  • VolumeTag=BL0001L5
  • VolumeTag=BL0002L5
  • VolumeTag=BL0001L5

Vamos verificar o driver(leitor de fita).

Vamos colocar no drive(leitor de fita) a fita VolumeTag=BL0002L5 que esta no slot 16 conforme imagem o drive(leitor de fita) esta no índice 0.

Vamos visualizar o se a fita foi para o drive.

Com a fita no drive podemos realizar as operações básicas, tais como rebobinar, apagar, etc. Vamos verificar se a fita esta no drive realmente(obs: lembre-se que anteriormente constatamos que o dispositivo do leitor é o /dev/st0).

Repare que na imagem anterior o status estava OPEN agora esta ONLINE.

Vamos agora por segurança rebobinar a fita e apagar(formatar) a mesma

Agora vamos realizar um backup na fita do meu diretório pessoal /home/ricardobarbosa. Repare que informamos o drive da fita(/dev/st0) e não o drive do robô(/dev/sg3).

Agora vamos visualizar os arquivos que estão na fita.

Agora para deixarmos nosso teste completo vamos restaurar em outra pasta. Primeiro visualizamos o diretório corrente, depois criamos um diretório para restauração chamado restauracao dentro do /home/ricardobarbosa e depois por segurança rebobinamos a fita e entramos no diretório restauracao realizamos a restauração dos arquivos e visualizamos os arquivos restaurados.

Alguns comando úteis.

Para retornar a fita do drive para o magazine no slot número 4 que esta vago:

Repare que na imagem anterior o slot 4 estava como “vago(Empty)” depois do comando ficou com o status “(Storage Element 4:Full :VolumeTag=BL0002L5)”

Você também pode transferir a fita de um lugar do magazine para outro. Exemplo: Transferir do slot 4 para o 8:

Configurando o bacula

Antes de configurar o bacula propriamente dito preciso reconhecer e criar os volumes vamos as configurações do bacula.

bacula-dir.conf

Autochanger {
  Name = ibm-tape-library                 # nome do robô o parâmetro "Autochanger" significa o robô
  Address = 192.168.0.11                  # endereço ip do servidor bacula onde está instalada a HBA
  SDPort = 9103                           # porta de conexão 
  Password = "XXXXXXX"  # senha
  Device = Autochanger  # Nome do robô definido no arquivo bacula-sd.conf(tem que ser igual)
  Media Type = LTO-5    # Nome do leitor da fita que esta definido no arquivo bacula-sd.conf tem que ser igual.
  Maximum Concurrent Jobs = 10       
  Auto Changer = yes                
}

Além das configurações padrões precisamos definir o robô dentro do bacula-sd.conf

bacula-sd.conf

Autochanger {
  Name = Autochanger   # nome do robô 
  Device = TS3100Driver # nome da fita ou driver de fita(e o nome que esta no bacula-sd.conf no parametro Device)
  Changer Command = "/etc/bacula/scripts/mtx-changer %c %o %S %a %d"
  Changer Device = /dev/sg3
}
 
# unidade de fita(driver - leitor da fita)
Device {
  Name = TS3100Driver   # UTL3580-HH5 - Nome do dispositivo que será utilizado na definição do robô autochanger.
  Drive Index = 0
  Media Type = LTO-5   # nome que será utilizado no bacula-dir.conf
  Archive Device = /dev/st0
  AutomaticMount = yes;              
  AlwaysOpen = yes;
  RemovableMedia = yes;
  RandomAccess = no;
  AutoChanger = yes
}

Configurado o bacula vamos criar um job para backup. Criaremos um job para realizar o backup do nosso servidor zabbix.

Job {
        Name = "armazenar-zabbix-completo"
        Type = Backup
        Level = Full
        Client = zabbix-fd
        FileSet = "zabbix-fileset"
        Storage = ibm-tape-library
        Messages = Standard
        Pool = zabbix-pool
        Write Bootstrap = "/var/lib/bacula/zabbix.bsr"
}
 
FileSet {
        Name = "zabbix-fileset"
        Include {
            Options {
               signature=MD5
               compression=GZIP
            }
            File = /etc/network/interfaces
            File = /etc/bacula/bacula-fd.conf
            File = /etc/zabbix/zabbix_server.conf
            File = /etc/zabbix/zabbix_agentd.conf
            File = /etc/apache2/conf-available/zabbix.conf
            File = /usr/share/zabbix
        }
        Exclude {
        }
}
 
Client {
        Name = zabbix-fd
        Address = 192.168.0.22
        Catalog = MyCatalog
        Password = "XXXXXXXXXX"
        File Retention = 60d     
        Job Retention = 60d      
        AutoPrune = yes        
}
 
Pool {
        Name = zabbix-pool
        Pool Type = Backup
        Recycle = yes                          
        Purge Oldest Volume = Yes
        Maximum Volume Bytes = 5G
}

Somente coloquei as informações que considero importante para realizar um exemplo de backup do arquivo bacula-dir.conf.

Com isso precisamos criar os volumes no bacula. Realizamos isso com o comando update dentro da console de comandos do bacula(comando bconsole).

Repare que pela imagem ele encontrou os volumes no robô(os códigos de barra) porém não encontrou no catalogo do bacula. Para isso precisamos criar os volumes(comando label na console do bacula) e vincular ao pool do zabbix(zabbix-pool).

Repare que obtemos uma mensagem de erro

3929 Unable to open device ""TS3100Driver" (/dev/st0)": ERR=tape_dev.c:170 Unable to open device "TS3100Driver" (/dev/st0): ERR=No medium found

Diz que não encontrou a mídia(fita) no driver(leitor da fita). Ainda ele dá uma dica para não esquecer de montar o drive.

Do not forget to mount the drive!!!

Aqui para colocar a fita podemos utilizar o comando mtx como já fizemos até aqui ou podemos utilizar um script criado pela equipe de desenvolvedores do Bacula. Qual a vantagem? ao meu ver é que com o mtx o link simbólico do dispositivo /dev/changer deve estar criado e vinculado ao dispositivo correto do robô, porém o script do Bacula você necessita informar o dispositivo evitando assim algum erro. Este script geralmente fica dentro do diretório de configuração do Bacula, o nome é mtx-changer.

Formato de execução

mtx-changer <dispositivo robô> <comando> <slot da fita> <dispositivo da fita> <indice da fita>

Exemplo do comando

root@tesla:~# /etc/bacula/scripts/mtx-changer /dev/sg3 load 1 /dev/st0 0
  • Dispositivo robô: /dev/sg3, caso você possua o link simbólico poderia ser utilizar /dev/changer.
  • Comando: load carregar a fita no driver
  • Slot da fita: Qual slot se encontra a fita no caso no slot 1
  • Dispositivo da fita: O dispositivo vinculado ao leitor de fita /dev/st0
  • Índice da fita: Seria o índice na fita no magazine, no caso sempre é 0.

Vamos utilizar o mtx-changer. Vamos visualizar como esta disposto o magazine.

Vamos jogar a fita do slot 1 para o driver 0(repare que o slot 0 Element 0 está vazio Empty).

O comando foi executado com sucesso.

Vamos visualizar se a fita VolumeTag=BL0001L5 está no slot 0.

Ótimo tudo certo. Agora vamos criar os volumes na console do Bacula através do comando Label.

Ótimo o volume foi criado dentro da fita. Vamos visulizar o volume através do comando list volume.

Tudo beleza. Agora vamos rodar o backup manual na console do Bacula.

Antes vamos verificar se o agente do Bacula está sendo executado no servidor zabbix.

Tudo certo vamos ao backup.

Vamos verificar as mensagens da console.

Veja que o backup esta rodando

Veja que o backup foi completado

Veja que verificando o backup está ok.

Agora vamos restaurar.

Utilizaremos o seguinte job

Job {
        Name = "restaurar-zabbix"
        Type = Restore
        Client = zabbix-fd
        FileSet = "zabbix-fileset"
        Where = "/restore/zabbix"
        Storage = ibm-tape-library
        Messages = Standard
        Pool = zabbix-pool
        Bootstrap = "/var/lib/bacula/zabbix.bsr"
}

Vamos acessar o servidor zabbix e verificar o diretório de restauração.

Vamos a restauração

Vamos verificar as mensagens do prompt do bacula.

Tudo ok, vamos ao servidor zabbix verificar se o backup foi restaurado no diretório /restore

Bom agora para e necessário criar os agendamentos, etc e automatizar o backup.

Esta implentação foi realizado no Laboratório de inteligência artificial da UFMS BATLAB. Quero agradecer ao Paulo Silvano por me ajudar a instalação da placa HBA e entender o conceito do robô e ao Luís Ferrari por me ajudar na montagem etiquetação das fitas e tudo mais. Obrigado pessoal :)

Qualquer dúvida ricardobarbosams@yahoo.com.br