Hi all,

As mentioned in -users, I am beginning my adventure with getting Bacula
to use tapes instead of disk.

Since I am just a home user, my storage method is cheap and so my disks
can't always keep up with the tape.  For partitions with many small
files the disks are much slower, and for partitions with a few large
files the same disks are more than twice as fast as tape.

This means that I can't write directly to tape, otherwise it will
shoe-shine when it gets to the many small files on the slow disks.  So
I have set up a spool file to avoid this.

However the spool file has two drawbacks.  One is that I don't have
enough free space to make it large enough to cover an entire tape, so I
am forced to use a small 8GB spool file.  Unfortunately, when I am
backing up the large fast files, this causes *more* shoe-shining
because the tape stops every 8GB while the next spool file is
built, even though the disks can run fast enough to keep up with the
tape.

The second drawback is that the drive is idle during spooling, and the
network is idle during despooling, which makes the backups take a very
long time to complete.  I started a full backup two days ago and it has
still not completed.

Before I set up Bacula, I tried a full backup using 'tar' and the
'mbuffer' program, and I had little to no shoe-shining and the whole
backup completed in approx 12 hours.  So Bacula is considerably slower.

I would like to try to address this, which is why I am posting in
-devel.  I am wondering whether the spool/despool process can be
changed, so that instead of writing a full spool file and then
despooling in full, the processes could happen simultaneously.

I am thinking that mbuffer-style logic would work well, where the spool
file is constructed until it reaches 80% of its maximum size, then the
despool operation starts writing data to tape (but still reading data
over the network) with the fd-read and sd-write happening in parallel
until the spool file becomes empty.  At this point the tape is stopped
until the spool file reaches 80% again.

I am willing to attempt to implement this myself, however I'm not
really sure where to start.  It looks like it might be possible to do
this by modifying only spool.c however some advice on this would be
greatly appreciated.  I am also wondering whether patches for this
would be accepted, as there is little point adding this functionality
if it would not make it into the official distribution.

Any advice about how one might best insert this function into the
Bacula codebase would be greatly appreciated!

Many thanks,
Adam.


_______________________________________________
Bacula-devel mailing list
Bacula-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bacula-devel

Reply via email to