Bacula-users

[Bacula-users] Force serialization only for a subset of hosts ?

2010-03-05 11:05:38
Subject: [Bacula-users] Force serialization only for a subset of hosts ?
From: Matija Nalis <mnalis+bacula AT carnet DOT hr>
To: bacula-users AT lists.sourceforge DOT net
Date: Fri, 5 Mar 2010 16:40:33 +0100
Hi everyone,

we're having a bacula backup with an order of magnitude of 150 hosts,
and some of them are xen DomU virtual machines sharing same physical host.

Because of the number of hosts, we need the maximum parallelization possible
(so the backups can finish in allowed timeslot), which we achieve by setting
"Maximum Concurrent Jobs = 50" and "SpoolData = yes". That part works fine,
and Director/SD machine can handle the load quite well.

It however breaks down when the time comes to backup DomU virtual machines.
It tries to run all of them at the same time, which (while making no problem
for Director/SD) puts too big a load to xen physical host (whose I/O load
goes up to the skies and all DomU machines become unresponsive).

We could hand-tweak the start times for each of machines, of course, but it
is painful and prone to errors, and conditions change often so it would be
administrative nightmare.

We've tried using different priorities (with "Allow Mixed Priority = no" on
them) for DomU hosts, and that does serialize them ok, but has a
disadvantage that when any of the DomU hosts run, nothing else will run
until it finishes (what reduces our concurrency way down, and so makes a
problem as not all machines manage to run their daily backup in allowed
timeslots)

To make a clear picture, imagine the following groups of hosts:

Group A = hostA1, hostA2, hostA3, ... (those are on one xen physical machine)
Group B = hostB1, hostB2, hostB3, ... (those are on other xen phys. machine)
Group C = all other hosts. (those are all other [non-virtual] hosts).

What we want to do is to have absolute maximum concurrency possible (of up
to 50 hosts backing up at once), with only restriction that at any one time,
*at most* 1 host from group A will be running, and *at most* 1 host from group
B will be running. There is no limit on number of group C hosts that may be
running at the same time (other than global concurrency limit of 50 hosts,
of course)

So, for example, at any moment, having 48 backups running from group C, 1
from group A and 1 from group B is OK.
So is 49 from group C, and 1 from group A. 

But 48 from group C, and 2 from group A is NOT ok.

Does anybody have the idea how to do that (if it is possible at all with
bacula 5.0.x series) ?

The best I could come up with is run with global "Allow Mixed Priority = yes", 
and setup bacula with:

hostC* - priority=50, start=03:59

hostA1 - priority=20, start=04:00
hostA2 - priority=21, start=04:01
hostA3 - priority=22, start=04:02
...
hostB1 - priority=20, start=04:00
hostB2 - priority=21, start=04:01
hostB3 - priority=22, start=04:02
...

which would give us some head start of 50 parallel "C" hosts, and serialize
A and B groups (as host with prio21 will wait for host with prio20 to finish
first, and those for prio22 will wait for prio21 and prio20 etc)

But as soon as groups A and B start running, the "C" group would slowly
starve - the initial 50 C-hosts will end one by one, but new ones won't be
starting until both group A and B finish (which could take quite some time
in our situation -- so we would waste a good part of the backup window
running just one "A" host and one "B" host at the same time).

Anybody has a better idea ? Thanks!

-- 
Opinions above are GNU-copylefted.

------------------------------------------------------------------------------
Download Intel&#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Bacula-users mailing list
Bacula-users AT lists.sourceforge DOT net
https://lists.sourceforge.net/lists/listinfo/bacula-users