LINUX.ORG.RU
ФорумAdmin

Не использовать volume повторно ни при каких условиях

 ,


1

2

Задача:

При каждом Job'е забэкапленные файлы пишутся в один volume. Volume имеет уникальный label, состоящий из имени клиента, даты и т.д. Вот как-то так:

Pool {
  Name = LocalPool
  Pool Type = Backup
  Storage = LocalBackupStorage
  Use Volume Once = yes
  Maximum Volume Jobs = 1
  Label Format = "${Client}-${Job}-${Type}-${Level}-${Year}${Month:p/2/0/r}${Day:p/2/0/r}-${Hour:p/2/0/r}${Minute:p/2/0/r}-${JobId+}"
}
Таким образом я знаю, какие файлы где лежат, и могу восстановиться из бэкапа даже при мертвом каталоге.

Проблема:

Инкрементальный job может отработать так, что ни одного файла не забэкаплено, т.к. ничего не изменилось с момента выполнения предыдущего job'а (job bytes = 0). Следующий job в таком случае не создает новый volume, а пишет в предыдущий. Это нас приводит к тому, что содержимое volume не соответствует его названию.

Пробовал вот так вот подпереть костылем:

#!/bin/bash

# Usage: 
#
# Job {
#     ...
#   RunScript {
#     RunsWhen = After
#     RunsOnFailure = yes
#     RunsOnSuccess = yes
#     RunsOnClient  = no
#     Command = "/etc/bacula/scripts/delete_empty_volume.sh %b %v"
#   }
# }
#

[[ $# -ne 2 ]] && echo "Wrong argv length!" && exit

job_bytes=$1
shift
volume_name=$@

echo "Job bytes: $job_bytes"
echo "Volume name: $volume_name"

if [[ $job_bytes -eq 0 ]]
then
    echo "Volume empty. Delete."
    bconsole <<- _EOF_
        delete volume="$volume_name"
        yes
        quit
_EOF_
fi
Однако, на практике выяснилось, что в %v не подставляется Volume Name, если job bytes = 0 и костыль, ясное дело, не работает.

Какие еще есть варианты решения проблемы?

Используется bacula 7.0.5

Ответ на: комментарий от kernelpanic

Внимательнее смотри ОП. Не помогает.

Дебилы опять поменяли синтаксис, поэтому проверил по совпадению поиском, не нашел и написал.

До выполнения нового backup'а посмотри в bconsole, какой статус у volume, в который «записывался» incremental job

zgen ★★★★★
()
Последнее исправление: zgen (всего исправлений: 1)
Ответ на: комментарий от zgen

Дебилы опять поменяли синтаксис

Ну судя по докам 'KeyString' и 'Key String' одно и то же и уже давно.

До выполнения нового backup'а посмотри в bconsole, какой статус у volume, в который «записывался» incremental job

Вот выдержки из писем с отчетами:

13-Oct 00:20 bacula-dir JobId 110: Start Backup JobId 110, Job=BackupJailDocroots.2014-10-13_00.20.00_55
13-Oct 00:20 bacula-dir JobId 110: Created new Volume="web2-fd-BackupJailDocroots-Backup-Incremental-20141013-0020-110", Pool="LocalPool", MediaType="File" in catalog.
13-Oct 00:20 bacula-dir JobId 110: Using Device "LocalBackupDevice1" to write.
13-Oct 00:20 bacula-sd JobId 110: Labeled new Volume "web2-fd-BackupJailDocroots-Backup-Incremental-20141013-0020-110" on file device "LocalBackupDevice1" (/backup/local/storage1).
13-Oct 00:20 bacula-sd JobId 110: Wrote label to prelabeled Volume "web2-fd-BackupJailDocroots-Backup-Incremental-20141013-0020-110" on file device "LocalBackupDevice1" (/backup/local/storage1)
13-Oct 00:20 bacula-dir JobId 110: Volume used once. Marking Volume "web2-fd-BackupJailDocroots-Backup-Incremental-20141013-0020-110" as Used.
13-Oct 00:20 bacula-sd JobId 110: Elapsed time=00:00:13, Transfer rate=0  Bytes/second
13-Oct 00:20 bacula-sd JobId 110: Sending spooled attrs to the Director. Despooling 0 bytes ...

<skipped>

  Scheduled time:         13-Oct-2014 00:20:00
  Start time:             13-Oct-2014 00:20:04
  End time:               13-Oct-2014 00:20:17
  Elapsed time:           13 secs
  Priority:               10
  FD Files Written:       0
  SD Files Written:       0
  FD Bytes Written:       0 (0 B)
  SD Bytes Written:       0 (0 B)
  Rate:                   0.0 KB/s
  Software Compression:   None
  VSS:                    no
  Encryption:             no
  Accurate:               no
  Volume name(s):         
  Volume Session Id:      101
  Volume Session Time:    1412281464
  Last Volume Bytes:      739 (739 B)
  Non-fatal FD errors:    0
  SD Errors:              0
  FD termination status:  OK
  SD termination status:  OK
  Termination:            Backup OK

<skipped>

13-Oct 00:20 bacula-dir JobId 110: shell command: run AfterJob "/etc/bacula/scripts/delete_empty_volume.sh 0 "
13-Oct 00:20 bacula-dir JobId 110: AfterJob: Wrong argv length!
13-Oct 01:00 bacula-dir JobId 111: Start Backup JobId 111, Job=backup_db.2014-10-13_01.00.00_56
13-Oct 01:00 bacula-dir JobId 111: There are no more Jobs associated with Volume "web2-fd-BackupJailDocroots-Backup-Incremental-20141013-0020-110". Marking it purged.
13-Oct 01:00 bacula-dir JobId 111: All records pruned from Volume "web2-fd-BackupJailDocroots-Backup-Incremental-20141013-0020-110"; marking it "Purged"
13-Oct 01:00 bacula-dir JobId 111: Recycled volume "web2-fd-BackupJailDocroots-Backup-Incremental-20141013-0020-110"
13-Oct 01:00 bacula-dir JobId 111: Using Device "LocalBackupDevice0" to write.

13-Oct 01:00 bacula-sd JobId 111: Labeled new Volume "web2-fd-BackupJailDocroots-Backup-Incremental-20141013-0020-110" on file device "LocalBackupDevice0" (/backup/local/storage0).
13-Oct 01:00 bacula-sd JobId 111: Wrote label to prelabeled Volume "web2-fd-BackupJailDocroots-Backup-Incremental-20141013-0020-110" on file device "LocalBackupDevice0" (/backup/local/storage0)
13-Oct 01:00 bacula-dir JobId 111: Volume used once. Marking Volume "web2-fd-BackupJailDocroots-Backup-Incremental-20141013-0020-110" as Used.
13-Oct 01:02 bacula-sd JobId 111: Elapsed time=00:02:21, Transfer rate=1.763 M Bytes/second
13-Oct 01:02 bacula-sd JobId 111: Sending spooled attrs to the Director. Despooling 303 bytes ...

<skipped>

  Scheduled time:         13-Oct-2014 01:00:00
  Start time:             13-Oct-2014 01:00:02
  End time:               13-Oct-2014 01:02:23
  Elapsed time:           2 mins 21 secs
  Priority:               10
  FD Files Written:       1
  SD Files Written:       1
  FD Bytes Written:       248,661,384 (248.6 MB)
  SD Bytes Written:       248,661,669 (248.6 MB)
  Rate:                   1763.6 KB/s
  Software Compression:   78.5% 4.7:1
  VSS:                    no
  Encryption:             no
  Accurate:               no
  Volume name(s):         web2-fd-BackupJailDocroots-Backup-Incremental-20141013-0020-110
  Volume Session Id:      102
  Volume Session Time:    1412281464
  Last Volume Bytes:      249,013,342 (249.0 MB)
  Non-fatal FD errors:    0
  SD Errors:              0
  FD termination status:  OK
  SD termination status:  OK
  Termination:            Backup OK

<skipped>

13-Oct 01:02 bacula-dir JobId 111: shell command: run AfterJob "/etc/bacula/scripts/delete_empty_volume.sh 248661384 web2-fd-BackupJailDocroots-Backup-Incremental-20141013-0020-110"
13-Oct 01:02 bacula-dir JobId 111: AfterJob: Job bytes: 248661384
13-Oct 01:02 bacula-dir JobId 111: AfterJob: Volume name: web2-fd-BackupJailDocroots-Backup-Incremental-20141013-0020-110

kernelpanic ★★★★★
() автор топика
1 апреля 2015 г.
Ответ на: комментарий от kernelpanic

вместо ${JobId+} попробуй ${JobId++} (у тебя не прибавляет еденицу) + настрой действие на удаление старых вольюмов. Мало ли.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.