LINUX.ORG.RU
ФорумAdmin

Параллельное выполнение нескольких job-ов от разных клиентов в Bacula

 


0

1

Есть много bacula-клиентов, бэкапящих большие объёмы данных.

Не получается заставить выполнять job-ы от разных клиентов параллельно. Пока одна выполняется, по поводу других пишет:

<job> waiting on Storage «FileStorage»

Вроде все настройки, которые нужны, сделал. Сейчас покажу выдержки из конфигов.

#bacula-dir.conf

Director { 
  Name = bacula1-dir
  DIRport = 9101
  QueryFile = "/etc/bacula/scripts/query.sql"
  WorkingDirectory = "/var/lib/bacula"
  PidDirectory = "/var/run/bacula"
  Maximum Concurrent Jobs = 40
  Password = "123"
  Messages = Daemon
  DirAddress = 0.0.0.0

}
JobDefs {
  Name = "Generic JobDef"
  Type = Backup
  Storage = "FileStorage"
  Messages = Standard
  Level = Differential
  Priority = 10
  Accurate = yes
  Write Bootstrap = "/var/lib/bacula/%c_%n.bsr"
}

Storage {
  Name = FileStorage
  Address = bacula1.example.com
  SDPort = 9103
  Password = "123"
  Device = FileStorage
  Media Type = File
  Maximum Concurrent Jobs = 40
}

Pool {
  Name = Bacula1Pool
  Pool Type = Backup
  Recycle = yes
  AutoPrune = yes
  Volume Retention = 28 days
  Maximum Volume Bytes = 100G
  LabelFormat = "Bacula1Vol"
  Volume Use Duration = 6h
}

Job {
  Name = "Client1_Job"
  Enabled = yes
  Client = Client1
  FileSet = "Client1FileSet"
  Schedule = "Generic Weekly Diff"
  JobDefs = "Generic JobDef"
  Pool = Bacula1Pool      # На всех клиентов один Pool. 
  Spool Attributes = yes
}

#bacula-sd.conf

Storage { 
  Name = bacula1-sd
  SDPort = 9103     
  WorkingDirectory = "/var/lib/bacula"
  Pid Directory = "/var/run/bacula"
  Maximum Concurrent Jobs = 40
  SDAddress = 0.0.0.0
}

Device {
  Name = FileStorage
  Media Type = File
  Archive Device = /var/bacula_archive
  LabelMedia = yes;
  Random Access = Yes;
  AutomaticMount = yes;
  RemovableMedia = no;
  AlwaysOpen = yes;
  Maximum Concurrent Jobs = 40;
}

Запускаю одновременно два разных job-а от разных клиентов. Одна выполняетя, а другая waiting on Storage «FileStorage».

☆☆☆☆☆

Опиши по одному storage для каждого клиента. И по девайсу на storage. И pool каждому клиенту отдельный. У меня только так оно в параллели работать начало. И файлы volumes желательно хранить для каждого клиента в своей директории.

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

Посмотрите внимательно вывод
show job=Client1_Job

Там уже будут эффективные, глаза правда сломать можно...

У меня Maximum Concurrent Jobs выставлено в:
bacula-dir.conf:
Director
Storage

bacula-sd.conf:
Storage
Device

Благополучно работает, что на лентах, что на дисковом хранилище.

PS reload случайно сказать не забыли после изменения конфигурации?

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

PS reload случайно сказать не забыли после изменения конфигурации?

Нет, даже перезапускал director и sd.

Ttt ☆☆☆☆☆
() автор топика
Ответ на: комментарий от oxumorron

show job=Client1_Job

Job: name=Client1_Job JobType=66 level=Differential Priority=10 Enabled=1
     MaxJobs=20 Resched=0 Times=0 Interval=1,800 Spool=0 WritePartAfterJob=1
     Accurate=1
Ttt ☆☆☆☆☆
() автор топика
Ответ на: комментарий от oxumorron

У меня Maximum Concurrent Jobs выставлено в: bacula-dir.conf: Director Storage

bacula-sd.conf: Storage Device

У меня там везде стоит.

Ttt ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Ttt

Странно как-то, по идее это всё, что требуется указать. Можете показать результат выполнения команды во время 2-х запущенных джобов?

status storage=FileStorage

oxumorron
()
Ответ на: комментарий от oxumorron
*status storage=FileStorage 
Connecting to Storage daemon FileStorage at bacula1.example.ru:9103

bacula1-sd Version: 5.2.6 (21 February 2012) x86_64-pc-linux-gnu debian 7.0
Daemon started 26-Dec-13 09:49. Jobs: run=0, running=1.
 Heap: heap=446,464 smbytes=243,354 max_bytes=243,548 bufs=142 max_bufs=144
 Sizes: boffset_t=8 size_t=8 int32_t=4 int64_t=8 mode=0,0

Running Jobs:
Writing: Differential Backup job Client1_Job JobId=2926 Volume="Bacula1Vol0254"
    pool="Bacula1Pool" device="FileStorage" (/var/bacula_archive)
    spooling=0 despooling=0 despool_wait=0
    Files=1 Bytes=11,665,515 Bytes/sec=1,944,252
    FDReadSeqNo=189 in_msg=187 out_msg=5 fd=5
Writing: Differential Backup job Client1_Job JobId=2927 Volume="Bacula1Vol0254"
    pool="Bacula1Pool" device="FileStorage" (/var/bacula_archive)
    spooling=0 despooling=0 despool_wait=0
    Files=0 Bytes=0 Bytes/sec=0
    FDSocket closed
====

Jobs waiting to reserve a drive:
   3610 JobId=2927 Volume max jobs exceeded on drive "FileStorage" (/var/bacula_archive).
====

Terminated Jobs:
...
====

Device status:
Device "FileStorage" (/var/bacula_archive) is mounted with:
    Volume:      Bacula1Vol0254
    Pool:        Bacula1Pool
    Media type:  File
    Total Bytes=11,612,367 Blocks=180 Bytes/block=64,513
    Positioned at File=0 Block=11,612,366
====

Used Volume status:
Bacula1Vol0254 on device "FileStorage" (/var/bacula_archive)
    Reader=0 writers=1 devres=0 volinuse=1
====

Attr spooling: 1 active jobs, 0 bytes; 0 total jobs, 0 max bytes.
====

Ttt ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Ttt

Несмотря на приведенные конфиги, посмотрите чему равно MaxVolJobs в выводе show pool=Bacula1Pool

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

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