Bacula - dividindo volumes?

3

Eu tenho usado o Bacula para backups. Eu implementei o sistema e ele funciona muito bem! No entanto, uma das coisas que fiz foi ter tudo dentro de um volume. Decidi que queria complicar um pouco para que Incrementals só fossem mantidos por uma semana e depois limpasse e reescrevesse aqueles naquele volume, garantindo assim que o espaço não se tornasse um problema, pois ficamos com 30 dias de valor. de incrementos.

Então, o que tentei fazer foi ter um volume chamado DAILY, um volume chamado WEEKLY e um volume chamado MONTHLY. O Daily é incremental, o semanal é diferencial e o mensal é um full. Nós manteríamos diariamente durante 7 dias, mensalmente durante 30 dias e cheio durante um ano (porque nós precisamos!).

Agora, sei que isso pode ser feito com fitas. O problema é que eu uso discos ... e se eu tentar fazer o acima, ou a) falha (se os Trabalhos Completos / Incrementais estão sob o mesmo Planejamento) ou b) não funciona (cria um backup completo no volume diário, etc.).

Alguém tentou isso? Ou pode me dar uma ideia de como eles estão configurados? Eu só não tenho certeza porque está tendo problemas com isso ...

Exemplo de Bacula;

As piscinas

Pool {
   Name = Daily
   Pool Type = Backup
   Volume Retention = 3 days
   Recycle = yes
   AutoPrune = yes
   LabelFormat = DAILY
   Maximum Volume Bytes = 50G
}

Pool {
   Name = Weekly
   Pool Type = Backup
   Volume Retention = 30 days
   Recycle = yes
   AutoPrune = yes
   LabelFormat = WEEKLY  
   Maximum Volume Bytes = 100G
}

Pool {
   Name = Monthly
   Pool Type = Backup
   Volume Retention = 365 days
   Recycle = yes
   AutoPrune = yes
   LabelFormat = MONTHLY
}

O trabalho / cliente / agenda

Client {
   Name = centos13
   Password = *IMAHAPPYLITTLEPASSWORD*  
   Address = centos13
   FDPort = 9102
   Catalog = MyCatalog
   File Retention = 30 days
   Job Retention = 6 months
}

FileSet {
   Name = centos13
   Include {
     File = /etc/bacula/bacula-fd.conf
     Options {}
   }
}

Schedule {
   Name = centos13
   Run = Level=Full Pool=Monthly 1st sat at 00:05
   Run = Level=Differential Pool=Weekly sat at 00:05
   Run = Level=Incremental Pool=Daily mon-fri at 00:05
}


Job {
   Name = centos13
   Type = Backup
   Client = centos13
   FileSet = centos13
   Schedule = centos13
   Storage = File
   Messages = Standard
   Full Backup Pool = Monthly
   Incremental Backup Pool = Daily
   Differential Backup Pool = Weekly
}
    
por Ethabelle 27.07.2012 / 16:38

1 resposta

3

Para fazer com que o Bacula faça o que você quer, você precisa de mais do que apenas volumes - você precisa colocar esses volumes em pools separados e deixar seus trabalhos saberem que você deseja usar diferentes pools para diferentes níveis de backup.

A sintaxe mágica é:

Job {
        Name = "Test"
        Type = Backup
        Client = backup-fd 
        FileSet = "FileSetTest"
        Storage = SomeStorage
        Schedule = "ScheduleTest"
        Pool = Default
        Full Backup Pool = FullTest 
        Incremental Backup Pool = IncrTest
        Differential Backup Pool = DiffTest
}

(descaradamente ladrões de link - Verifique os documentos do bacula, pois acho que provavelmente existem outros lugares você pode especificar os pools por nível, como JobDefs e possivelmente Client )

Você definiria períodos de retenção no pool (ou volumes constituintes) para atender aos requisitos descritos anteriormente.

Sobre o tema do espaço em disco, descobri que é melhor usar backups em disco para tratá-los como se fossem fitas.
Sugiro que você defina um Bytes de Volume Máximo "razoável" no seu recurso Pool (e atualize todos os volumes existentes para refleti-lo) e, em seguida, crie vários volumes que o Bacula percorrerá por conta própria ao "preencher" cada volume, e reciclar de acordo com as políticas de retenção que você configurou.
No meu caso, tenho 200G de espaço para backups, divididos em 100 arquivos de 2GB.

Isso tem algumas vantagens:

  • Os volumes de backup cabem em um DVD
    (por isso, se eu precisar arquivá-los para sempre, posso apenas jogá-los em um disco)

  • A sincronização fora do local só precisa enviar os arquivos que foram alterados. (menor que um volume de 200G)

  • Recuperação de desastre mais rápida
    (Se eu precisar recuperar um servidor usando o meu arquivo remoto, só preciso fazer o download do bootstrap (.bsr) e dos volumes necessários para restaurá-lo.)

  • Se meu disco rígido morrer, espero que ele mate apenas alguns dos arquivos.

por 27.07.2012 / 17:21

Tags