Bacula-users

[Bacula-users] LTO-4 tape: only 20mb/sec when used with bacula

2010-06-20 16:41:18
Subject: [Bacula-users] LTO-4 tape: only 20mb/sec when used with bacula
From: Lukas Kolbe <l-lists AT einfachkaffee DOT de>
To: bacula-users <bacula-users AT lists.sourceforge DOT net>
Date: Sun, 20 Jun 2010 22:36:26 +0200
Hi!

We use a Tandberg autochanger with two IBM Ultrium LTO-4 drives behind a
24-disk RAID50. When used with with testdata and dd or tar (in dd's case
with bs=1M), both drives get acceptable rates of around 170MiB per
second. However, when used with bacula for a copy job (Our default pool
is the diskpool, the jobs get copied to tape during the day), only
20MiB/second get written to the tape, while bacula-sd consumes a full
cpu.

Here's a vmstat 1 during  "dd if=/var/bacula/dp/fs1/Vol0194 of=/dev/nst1 bs=1M":

procs -----------memory---------- ---swap-- -----io---- --system-- 
-----cpu------
  r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa 
st
 1  1    168  44876   6248 7198984    0    0 172544     0 2516 8141  0  7 93  0 
 0
 1  0    168  46916   6156 7197192    0    0 172552    20 2529 8040  6  7 83  5 
 0
 0  0    168  49376   6060 7194836    0    0 172044     0 2516 7764  1  7 91  1 
 0
 0  0    168  47344   6044 7196284    0    0 173056     0 2532 8036  0  6 93  0 
 0
 1  0    168  47704   6052 7196020    0    0 172544    40 2518 8316  0  7 93  0 
 0
 0  0    168  45904   6044 7198228    0    0 172544    16 2533 8217  0  7 93  0 
 0
 0  0    168  48664   6008 7195592    0    0 172036    20 2511 8252  0  7 92  1 
 0
 0  0    168  45068   6008 7199200    0    0 153600     0 2360 7762  0  6 94  0 
 0

CPU load is negligable, speed is impressive

And the same during bacula's copy job:
procs -----------memory---------- ---swap-- -----io---- --system-- 
-----cpu------
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0    168  46956  25364 7165604    0    0 11136     0 1090 6833 25  1 75  0  0
 1  0    168  47616  25360 7165012    0    0 22400     0 1187 7637 24  1 75  0  0
 1  0    168  44496  25360 7168308    0    0 18432     0 1148 7444 29  1 70  0  0
 1  0    168  44796  25360 7167940    0    0 18944     0 1159 7948 25  1 75  0  0
 3  0    168  45156  25388 7167472    0    0 14976    32 1139 7584 25  1 72  2  0
 1  0    168  46416  25388 7166288    0    0 21760     0 1182 7636 24  1 75  0  0
 3  0    168  45156  25388 7167644    0    0 20480     0 1164 7749 24  1 75  0  0
 1  0    168  45756  25380 7166776    0    0 22400     0 1189 7689 29  1 71  0  0

CPU load is 25%, equates to one of the four cores, there's no I/O-wait
yet the system only reads with 20MiB from the harddisk.

If I try to set a fixed blocksize for bacula-sd (Minimum and Maximum
Blocksize both to 1MiB), nothing changes. When I set no blocksize in
bacula-sd, writing to tape is not possible and gives me this error:

20-Jun 22:34 sd1.techfak JobId 882: Error: block.c:1016 Read error on fd=3 at 
file:blk 0:0 on device "drv1" (/dev/nst1). ERR=Cannot allocate memory.
20-Jun 22:34 sd1.techfak JobId 882: Error: block.c:1016 Read error on fd=3 at 
file:blk 0:0 on device "drv1" (/dev/nst1). ERR=Cannot allocate memory.
20-Jun 22:34 sd1.techfak JobId 882: Error: block.c:1016 Read error on fd=3 at 
file:blk 0:0 on device "drv1" (/dev/nst1). ERR=Cannot allocate memory.
20-Jun 22:34 sd1.techfak JobId 882: Error: block.c:1016 Read error on fd=3 at 
file:blk 0:0 on device "drv1" (/dev/nst1). ERR=Cannot allocate memory.
20-Jun 22:34 sd1.techfak JobId 882: Please mount Volume "AAA529" or label a new 
one for:

I suppose it has something todo with the tapes' maximum blocksize being
higher than what Linux supports.

I'd really appreciate any help here. Have I overseen anything in
configuring bacula?

The system btw is RHEL 5.4, but we had Debian Lenny with Kernel 2.6.32
before and it exhibited the same behaviour.
The relevant part of the sd's configuration:

#
# Disk pool (stage 1)
#
Device {   
        Name                            = dp1
        Media Type                      = File
        Archive Device                  = /var/bacula/dp/fs1
        LabelMedia                      = yes
        Random Access                   = yes
        AutomaticMount                  = yes
        RemovableMedia                  = no
        AlwaysOpen                      = no
        Maximum Concurrent Jobs         = 20
}

#
# Tandberg StorageLibrary T80+ (stage 2)
#
Autochanger {
        Name                            = lib1
        Device                          = drv1
        Device                          = drv2
        Changer Command                 = "/etc/bacula/scripts/mtx-changer %c 
%o %S %a %d"
        Changer Device                  = /dev/sg34
}

Device {   
        Name                            = drv1
        Drive Index                     = 0
        Media Type                      = LTO-4
        Device Type                     = Tape
        Archive Device                  = /dev/nst1
        AutomaticMount                  = yes
        AlwaysOpen                      = yes
        RemovableMedia                  = yes
        RandomAccess                    = no
        AutoChanger                     = yes
        Autoselect                      = yes
        Minimum block size              = 65536
        Maximum block size              = 1048576
        Alert Command                   = "sh -c 'tapeinfo -f %c | grep 
TapeAlert|cat'"
        Spool Directory                 = /var/bacula/spool
}

Device {   
        Name                            = drv2
        Drive Index                     = 1
        Media Type                      = LTO-4
        Device Type                     = Tape
        Archive Device                  = /dev/nst0
        AutomaticMount                  = yes
        AlwaysOpen                      = yes
        RemovableMedia                  = yes
        RandomAccess                    = no
        AutoChanger                     = yes
        Autoselect                      = yes
        Minimum block size              = 65536
        Maximum block size              = 1048576
        Alert Command                   = "sh -c 'tapeinfo -f %c |grep 
TapeAlert|cat'"
        Spool Directory                 = /var/bacula/spool
}


Regards,
Lukas



------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate 
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the 
lucky parental unit.  See the prize list and enter to win: 
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
Bacula-users mailing list
Bacula-users AT lists.sourceforge DOT net
https://lists.sourceforge.net/lists/listinfo/bacula-users