A partir do Bacula Enterprise versão 8.2, é possível que os clientes façam backups automáticos de snapshots de sistemas de arquivos. Também é possível gerenciar snapshots dos sistemas através das interfaces do Bacula.
O plugin fornece restauração em nível de arquivo no estado da geração do snapshot, com toda a garantia de integridade. Esse recurso pode ser muito útil para o backup integrado com grandes bases de dados MySQL, PostgreSQL, MongoDB etc.
Os seguintes back-ends de snapshots são compatíveis atualmente:
- BTRFS
- ZFS
- LVM
Por padrão, os snapshots são montados (ou diretamente disponíveis) no diretório .snapshots no sistema de arquivos raiz. (No ZFS, o padrão é .zfs/snapshots).
O programa de back-end Snapshot é chamado bsnapshot e está disponível no pacote bacula-enterprise-snapshot. Para usar o recurso Gerenciamento de instantâneos, o pacote deve ser instalado no cliente.
O programa bsnapshot pode ser configurado usando o arquivo /opt/bacula/etc/bsnapshot.conf. Os seguintes parâmetros podem ser ajustados no arquivo de configuração:
- sudo = <yes∣no> Use sudo para executar comandos
- disabled = <yes∣no> Desativar suporte para instantâneos
- retry = Configurar o número de tentativas para algumas operações
- snapshot_dir = Use um nome personalizado para o diretório Snapshot. (.SNAPSHOT, .snapdir, etc.)
- lvm_snapshot_size = Especifique um tamanho de instantâneo personalizado para um determinado volume LVM
- mountopts = Especifique uma opção de montagem personalizada para um determinado dispositivo (disponível em 10.0.4)
- trace = Especifique um arquivo de rastreamento
- debug = Especifique um nível de depuração
Há um exemplo como segue:
# cat /opt/bacula/etc/bsnapshot.conf trace=/tmp/snap.log debug=10 lvm_snapshot_size=/dev/ubuntu-vg/root:5% mountopts=nouuid mountopts=/dev/ubuntu-vg/root:nouuid,nosuid
Quiesce de Aplicativo
Ao usar Snapshots, é muito importante desativar os aplicativos que estão sendo executados no sistema. A maneira mais simples de desativar um aplicativo é interrompê-lo. Normalmente, tirar o Snapshot é muito rápido e o tempo de inatividade dura apenas alguns segundos.
Se o tempo de inatividade não for possível e/ou o aplicativo fornecer uma maneira de desativar, um script mais avançado pode ser usado. Um exemplo é descrito adiante.
Novas Diretivas do Director
O uso do plugin Snapshot no FileDaemon é determinado pela nova diretiva Enable Snapshot FileSet. O padrão é no.
FileSet { Name = LinuxHome Enable Snapshot = yes Include { Options = { Compression = LZO } File = /home } }
Por padrão, os Snapshots são excluídos do cliente no final do backup. Para manter Snapshots no Cliente e gravá-los no Catálogo por um determinado período, é possível utilizar a diretiva SnapshotRetention nos recursos Client ou Job. O valor padrão é 0 segundos. Se, para um determinado trabalho, as diretivas Client e Job Snapshot Retention forem definidas, a diretiva Job será usada.
Client { Name = linux1 ... Snapshot Retention = 5 days }
Para remover Snapshots automaticamente, é possível usar o seguinte comando RunScript:
Job { ... Client = linux1 ... RunScript { RunsOnClient = no Console = "prune snapshot client=%c yes" RunsAfter = yes } }
Em RunScripts, a palavra-chave AfterSnapshot para a diretiva RunsWhen permitirá que um comando seja executado logo após a criação do Snapshot. AfterSnapshot é um sinônimo para a palavra-chave AfterVSS.
Job { ... RunScript { Command = "/etc/init.d/mysql start" RunsWhen = AfterSnapshot RunsOnClient = yes } RunScript { Command = "/etc/init.d/mysql stop" RunsWhen = Before RunsOnClient = yes } }
Informações de Saída do Job
A lista de todos os dispositivos usados pelo Plugin de Snapshot é exibida no log do Job e indica se existem Snapshots estavam disponíveis.
JobId 3: Create Snapshot of /home/build JobId 3: Create Snapshot of /home/build/subvol JobId 3: Delete snapshot of /home/build JobId 3: Delete snapshot of /home/build/subvol ... JobId 3: Bacula 127.0.0.1-dir 7.2.0 (23Jul15): Build OS: x86_64-unknown-linux-gnu archlinux JobId: 3 Job: Incremental.2015-02-24_11.20.27_08 Backup Level: Full ... Snapshot/VSS: yes ... Termination: Backup OK
Novos comandos snapshot do Bconsoles
O novo comando de Snapshot exibirá por padrão o seguinte menu:
*snapshot Snapshot choice: 1: List snapshots in Catalog 2: List snapshots on Client 3: Prune snapshots 4: Delete snapshot 5: Update snapshot parameters 6: Update catalog with Client snapshots 7: Done Select action to perform on Snapshot Engine (1-7):
O comando snapshot também pode ter os seguintes parâmetros:
[client=<client-name> | job=<job-name> | jobid=<jobid>] [delete | list | listclient | prune | sync | update]
Também é possível usar os comandos tradicionais list, llist, update, prune ou delete em Snapshots.
*llist snapshot jobid=5 snapshotid: 1 name: NightlySave.2015-02-24_12.01.00_04 createdate: 2015-02-24 12:01:03 client: 127.0.0.1-fd fileset: Full Set jobid: 5 volume: /home/.snapshots/NightlySave.2015-02-24_12.01.00_04 device: /home/btrfs type: btrfs retention: 30 comment: * snapshot listclient Automatically selected Client: 127.0.0.1-fd Connecting to Client 127.0.0.1-fd at 127.0.0.1:8102 Snapshot NightlySave.2015-02-24_12.01.00_04: Volume: /home/.snapshots/NightlySave.2015-02-24_12.01.00_04 Device: /home CreateDate: 2015-02-24 12:01:03 Type: btrfs Status: OK Error:
Para atualizar o catálogo com os snapshots do cliente (ou snapshot sync), o Diretor contata o FileDaemon, lista os snapshots do sistema e cria registros de catálogo dos snapshots.
*snapshot sync Automatically selected Client: 127.0.0.1-fd Connecting to Client 127.0.0.1-fd at 127.0.0.1:8102 Snapshot NightlySave.2015-02-24_12.35.47_06: Volume: /home/.snapshots/NightlySave.2015-02-24_12.35.47_06 Device: /home CreateDate: 2015-02-24 12:35:47 Type: btrfs Status: OK Error: Snapshot added in Catalog *llist snapshot snapshotid: 13 name: NightlySave.2015-02-24_12.35.47_06 createdate: 2015-02-24 12:35:47 client: 127.0.0.1-fd fileset: jobid: 0 volume: /home/.snapshots/NightlySave.2015-02-24_12.35.47_06 device: /home type: btrfs retention: 0 comment:
Restrições de Back-End LVM
Snapshots de LVM são bastante primitivos em comparação com ZFS, BTRFS, NetApp e outros sistemas. Por exemplo, não é possível usar Snapshots se o Grupo de Volume (VG) estiver cheio. O administrador deve manter algum espaço livre no VG para criar Snapshots.
A quantidade de espaço livre necessária depende da atividade do Volume Lógico (LV). O bsnapshot usa 10% do LV por padrão. Esse número pode ser configurado por LV no arquivo bsnapshot.conf.
[root@system1]# vgdisplay --- Volume group --- VG Name vg_ssd System ID Format lvm2 ... VG Size 29,81 GiB PE Size 4,00 MiB Total PE 7632 Alloc PE / Size 125 / 500,00 MiB Free PE / Size 7507 / 29,32 GiB ...
Também não é aconselhável deixar Snapshots no backend do LVM. Ter vários instantâneos do mesmo LV no LVM tornará o sistema mais lento.
Opções de Depuração
Para obter informações de baixo nível sobre o bsnapshot, a tag de depuração “snapshot” deve ser usada no comando setdebug.
*setdebug level=10 tags=snapshot client *setdebug level=10 tags=snapshot dir
Disponível em: PortuguêsEnglish (Inglês)Español (Espanhol)