LINUX.ORG.RU
решено ФорумAdmin

Bacula зависает после выполнения задания.


0

0

Bacula бэкапит две машины, если Job'ы запускать по очереди, то нормально работает, а если запустить одновременно, то одно заканчивается быстрее, а другое зависает без всяких ошибок. Вот то что при этом попадает в консоль:

15-Mar 23:53 camel-sd JobId 1: Spooling data again ...
15-Mar 23:53 camel-sd JobId 1: User specified spool size reached.
15-Mar 23:53 camel-sd JobId 1: Writing spooled data to Volume. Despooling 10,517,412 bytes ...
15-Mar 23:53 camel-sd JobId 1: Despooling elapsed time = 00:00:01, Transfer rate = 10.51 M bytes/second
15-Mar 23:53 camel-sd JobId 1: Spooling data again ...
15-Mar 23:53 camel-dir JobId 2: Bacula camel-dir 3.0.3 (18Oct09): 15-Mar-2010 23:53:09
  Build OS:               i686-pc-linux-gnu gentoo 
  JobId:                  2
  Job:                    backup-camel.2010-03-15_23.09.53_05
  Backup Level:           Full
  Client:                 "camel-fd" 3.0.3 (18Oct09) i686-pc-linux-gnu,gentoo,
  FileSet:                "Full Set" 2010-03-15 23:09:32
  Pool:                   "Default" (From Job resource)
  Catalog:                "MyCatalog" (From Client resource)
  Storage:                "File" (From Job resource)
  Scheduled time:         15-Mar-2010 23:09:51
  Start time:             15-Mar-2010 23:09:55
  End time:               15-Mar-2010 23:53:09
  Elapsed time:           43 mins 14 secs
  Priority:               10
  FD Files Written:       329,478
  SD Files Written:       329,478
  FD Bytes Written:       5,577,431,121 (5.577 GB)
  SD Bytes Written:       5,622,981,949 (5.622 GB)
  Rate:                   2150.1 KB/s
  Software Compression:   45.1 %
  VSS:                    no
  Encryption:             no
  Accurate:               no
  Volume name(s):         Volume-0001
  Volume Session Id:      2
  Volume Session Time:    1268682544
  Last Volume Bytes:      17,050,839,622 (17.05 GB)
  Non-fatal FD errors:    0
  SD Errors:              0
  FD termination status:  OK
  SD termination status:  OK
  Termination:            Backup OK

15-Mar 23:53 camel-dir JobId 2: Begin pruning Jobs.
15-Mar 23:53 camel-dir JobId 2: No Jobs found to prune.
15-Mar 23:53 camel-dir JobId 2: Begin pruning Files.
15-Mar 23:53 camel-dir JobId 2: No Files found to prune.
15-Mar 23:53 camel-dir JobId 2: End auto prune.
Первые 5 строк это как бы последнее что проходит нормально, spool заполняется, сбрасывается (despooling), заполняется, сбрасывается, так много раз для обоих job'ов. Но потом job 2 заканчивается, почему-то запускается prune (хотя retention period у меня больше месяца), а job 1 зависает со статусом R (running). FD на camelot (это где выполняется job 1) просто не посылает никаких данных, а SD ничего не пишет в Volume, хотя места там полно. Отчего такое может быть и как с этим бороться?

★★★★★

Не на один ли девайс Бакула пытается одновременно писать бекапы двух машин ?
С любыми хранилищами Бакула работает как с лентами, и если нужно одновременно писать на разные девайсы, то для каждого бекапируемого сервера лучше определить девайс отдельно.

Попытка prune в данном случае запускается для файлов и джобов, это определяется в настройках клиента:
File Retention
Job Retention

Steel901 ()
Ответ на: комментарий от Steel901

То же самое, но помедленнее.

Не на один ли девайс Бакула пытается одновременно писать бекапы двух машин ?

На один. И нормально пишет, пока одно из заданий не заканчивается.

С любыми хранилищами Бакула работает как с лентами,

Да, это так.

и если нужно одновременно писать на разные девайсы, то для каждого бекапируемого сервера лучше определить девайс отдельно.

А в документации вот что:

The Volume format becomes more complicated with multiple simultaneous jobs, consequently, restores may take longer if Bacula must sort through interleaved volume blocks from multiple simultaneous jobs. This can be avoided by having each simultaneous job write to a different volume or by using data spooling, which will first spool the data to disk simultaneously, then write one spool file at a time to the volume thus avoiding excessive interleaving of the different job blocks.

То есть simultaneous jobs возможные если включить spooling (у меня включен и работает). Или я неправ?

Секция Client в bacula-dir.conf у меня такая:

Client {
        Name = camel-fd
        Address = localhost
        FDPort = 9102
        Catalog = MyCatalog
        Password = "zq0oLYADFnGg0j0J"   # password for FileDaemon
        File Retention = 30 days        # 30 days
        Job Retention = 6 months        # six months
        AutoPrune = yes                 # Prune expired Jobs/Files
        Maximum Concurrent Jobs = 5
}
Не вижу, что заставляет делать prune после выполнения задания. Или я неправильно всё представляю, AutoPrune после каждого задания проверяет просроченность заданий и файлов, старые prune'ит. У меня prune запускается, но ничего не prune'ит, потому что ничего старого нет. Да может дело вообще не в prune.

Camel ★★★★★ ()
Ответ на: То же самое, но помедленнее. от Camel

Дело явно не в prune.
В данном случае prune запускается каждый раз, проверяя - ничего ли там не просрочено, и если обнаружится что да, выполнится удаление старых данных из БД.

По поводу simultaneous jobs - да, они вроде как возможны, но я стараюсь это не использовать. Народ на форумах писал, что оно странно работает, и использовать это следует лишь после тщательного тестирования.

Еще, как вариант, попробуй указать Heartbeat Interval в настройках стораджа. Существует вероятность, что где-то по пути маршрутизатор рвет установленное соединение, если какое-то время не было активности во время бекапа. Это конечно зависит от инфраструктуры сети.

Steel901 ()
Ответ на: комментарий от Steel901

Инфраструктура стола.

Еще, как вариант, попробуй указать Heartbeat Interval в настройках стораджа. Существует вероятность, что где-то по пути маршрутизатор рвет установленное соединение, если какое-то время не было активности во время бекапа. Это конечно зависит от инфраструктуры сети.

Маловероятно. Вся инфраструктура это пока что две ЭВМ у меня на столе соединённые через 1 коммутатор.

По поводу simultaneous jobs - да, они вроде как возможны, но я стараюсь это не использовать. Народ на форумах писал, что оно странно работает, и использовать это следует лишь после тщательного тестирования.

Хм. Как же тогда бэкапить офисную сетку из 50 вендовых машин? Если бэкапить по одной, то медленно, а если все сразу, то за выходные Full backup должно осилить, а за ночь Incremental.

Camel ★★★★★ ()
Ответ на: Инфраструктура стола. от Camel

Эксперименты в студию.

Надо бы попробовать бэкапы с очень маленькими spool'ами и очень большими. .

Camel ★★★★★ ()

Heartbeat Interval = 30 sec
в конфиг bacula-sd.

и еще, когда job завершается - начинается «Dir inserting Attributes», занесение в мускуль данных о забекапленых файлах.
иногда тормоза самого мускуля, или недостаток места на фс (в /tmp допустим) приводит к висякам.
в моменты когда начинается зависание - есть что-то в messages?

Komintern ★★★★★ ()
Ответ на: Инфраструктура стола. от Camel

Как вариант - для каждого клиента определять отдельный Storage и Device и Pool.
В настройках Storage Daemon`а указать например Maximum Concurrent Jobs = 5, в настройках Bacula director указать Maximum Concurrent Jobs = 5.
В клиентских джобах указать одинаковые приоритеты: например Priority = 10.
И бакула будет бекапить одновременно 5 клиентов, в данном случае.

Steel901 ()
Ответ на: Messages. от Camel

я про /var/log/messages.

к примеру я там находил:
Mar 15 05:58:28 backup kernel: pid 25912 (mysqld), uid 88 inumber 111
on /tmp: filesystem full
Mar 15 05:58:30 backup kernel: pid 25912 (mysqld), uid 88 inumber 184
on /tmp: filesystem full
Mar 15 05:58:35 backup kernel: pid 25912 (mysqld), uid 88 inumber 116
on /tmp: filesystem full

а бакула в это время паниковала по-своему, типа никуда ничего не может записать и вообще SD не видит.

Komintern ★★★★★ ()
Ответ на: комментарий от Steel901

> Как вариант - для каждого клиента определять отдельный Storage, Device и Pool.

это правильнее всего.
и Maximum Volume Jobs=1 естественно в конфиг пула.

Komintern ★★★★★ ()
Ответ на: комментарий от Komintern

Device'ы, тысячи их.

Как вариант - для каждого клиента определять отдельный Storage, Device и Pool.

это правильнее всего.
и Maximum Volume Jobs=1 естественно в конфиг пула.

Хм. На файловых системах каждого из сменных НЖМД по 50 директорий с Volume'ами (название файла соответствует label), каждая директория есть отдельный Volume, который состоит в отдельном Pool'е, связанном с отдельным Device'ом отдельного Storage'а, так получается? Как-то неаккуратненько, но если заработает, то пусть лучше так, чем никак.

Camel ★★★★★ ()
Ответ на: комментарий от Komintern

Вынос мозга.

Читал. В первый раз это был вынос мозга, со второй попытки наверное что-нибудь пойму.

Спасибо всем участникам обсуждения.

Camel ★★★★★ ()
Ответ на: комментарий от Komintern

Бажная Bacula.

Дело было в бобине. То ли это был баг в Bacula, то ли в gentoo'шной сборке, но у меня Director зависал после любого job'а. Передёрнешь его, и снова делает вид что работает. Решилось обновлением до bacula-5.0.1 из оверлея. Сейчас буду бэкапить пару машин одновременно на один Device.

Из первых впечатлений: bconsole была страшноватой и не совсем удобной, но bat тоже не сахар.

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