> -----Original Message----- > From: Christian Sabelmann [mailto:[EMAIL PROTECTED] > Sent: Tuesday, January 29, 2008 8:59 AM > To: Bob Duman; bacula-users@lists.sourceforge.net > Subject: Re: [Bacula-users] Multiple TapeDrives but No Autochanger > > Hi, > thanks for the help, I tried the modified script, and now can switch > between slot1 and slot2 to select tapedrive1 or tapedrive2. > > But this has a new disadvantage. With this configuration I am not able > to use the two drives simultaneously to run parallel Jobs for example. > My Idea of an autochanger was such, that the user would not have to > tell > Bacula which drive it has to use for every Job, but instead a single > drive for every Job which in fact is some king of autochanger or > virtual > autochanger that manage the tapedrives automatically. > > This autochanger has to able to use 2 drives at the same time. Am I > using a wrong concept about an Autochanger, or does it really use only > a > single drive at the same time? > > ... > A better example of what I was trying to do with Bacula: > > 1. Bacula is aware that it has two tapedrives wich can be used at the > same time. > 2. Every Job uses the same Device definition (virtual changer or > something like it) > 3. If I start for example 5 Jobs at the same time, then Bacula starts > with the first two Jobs using for each one different drives > at the same time. As soon as one Job is done, then the next Job can > start on the drive which is now free, and so on. > 4. For every Job it does not matter which Drive or which Volume is > using, The volume will anyway be found in the catalog for later > Restore. For a Job is only the Pool important. > > Is this possible with the Virtual Autochanger concept?? is there > another > way to do it? or changing something in the scripts? > > Your configuration said something about 2 Slots and an Autochanger with > 1 Drive, I think I would need an Autochanger with two drives. > > > > Bob Duman wrote: > >> -----Original Message----- > >> From: [EMAIL PROTECTED] [mailto:bacula- > users- > >> [EMAIL PROTECTED] On Behalf Of Arno Lehmann > >> Sent: Saturday, January 26, 2008 4:13 PM > >> To: bacula-users@lists.sourceforge.net > >> Subject: Re: [Bacula-users] Multiple TapeDrives but No Autochanger > >> > >> Hi, > >> > >> 25.01.2008 15:05, Christian Sabelmann wrote: > >> > >>> Hello, I try to get Bacula to work with 2 Tapedrives concurrently. > >>> The goal is to use a pseudo changer or vitual autochanger, because > a > >>> > >> I > >> > >>> want every Job to use this device and also the same Pool. > >>> This pseudo changer should be capable of choosing one free drive to > >>> write, and if a volume is requested by bacula, then > >>> it should not be important if the volume is inserted in the first > or > >>> > >> the > >> > >>> second tape drive, unless the drive is already writing for another > >>> > >> Job. > >> > >>> I been looking old mails and found that there are other people > having > >>> the same problem. There is a script written by "Mario Wolff > >>> " which can be found in the mail archive. 28/JAN/2005. > >>> > >> Good. I was about to point you to it :-) > >> > >> > >>> I tried this out but it did not work because the pseudo changer > using > >>> /dev/null as Changer is not recognized by Bacula > >>> (VER. 2.2.6) > >>> > >>> Have anyone tried out some script like this to manage this problem? > >>> > >> did > >> > >>> it work? or do you have some Ideas how to make it work? > >>> > >> Disclaimer: I have never personally used that approach... > >> > >> But I'm pretty sure that with some changes in Bacula since 2005, the > >> script would need some work done. Mainly because Baculas way to > select > >> drives has been refined a lot, though this shouldn't matter in a > >> situation where there exists only one device known to it. > >> > >> Regarding your current problem, I'd try using any /dev/sgX (linux > >> terminology) device as the cahnger device in the configuration > (though > >> I don't see why /dev/null wouldn't work). You're not actually using > >> this device, so no harm will be done. > >> > >> Currently, as I hevent't looked at Marios script in ages, I would > >> suggest you read it carefully to understand how it's doing its work, > >> and where things might fail. As stated above, I would expect some > >> modifications to be required. > >> > >> Hope this helps, > >> > >> Arno > >> > >> > >>> > >> -- > >> Arno Lehmann > >> IT-Service Lehmann > >> www.its-lehmann.de > >> > >> -------------------------------------------------------------------- > --- > >> -- > >> This SF.net email is sponsored by: Microsoft > >> Defy all challenges. Microsoft(R) Visual Studio 2008. > >> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ > >> _______________________________________________ > >> Bacula-users mailing list > >> Bacula-users@lists.sourceforge.net > >> https://lists.sourceforge.net/lists/listinfo/bacula-users > >> > > > > I was looking for a solution to this problem about 6 months ago and > was able to find a successful solution using the Mario Wolff script > with some modifications. The original script by Mario is included in > the source in the file examples/autochangers/multiple-drive- > changer.txt. > > > > Mario's script needed some modification to work properly for me (I > assume it is differences between Bacula 1.x and Bacula 2.x). These > modifications allow Bacula to think it is dealing with a 2 slot > autochanger with 1 drive which allows my backup jobs to span multiple > tapes without having an actual autochanger. The "slots" are actually > the tape drives and the script uses a soft link called /dev/tape to > point at the physical drive that it wants to use. In my setup, I am > keeping the "slot inventory" in files inside /etc/bacula/tapelabel/ > called SLOT01 and SLOT02. > > > > Below are my Bacula conf files and a copy of my modified script (most > of the script is written by Mario Wolff, just some minor changes mainly > with the exit codes). Let me know if you have any questions. I have > been using this successfully for about 4 months and it works great. > > > > Bacula-sd.conf: > > Device { > > Name = Multitape-drive > > Media Type = LTO2 > > Archive Device = /dev/tape > > AutomaticMount = yes; > > AlwaysOpen = yes; > > RemovableMedia = yes; > > RandomAccess = no; > > Autochanger = yes > > } > > > > Autochanger { > > Name = Multitape-changer > > Device = Multitape-drive > > Changer Command = "/etc/bacula/scripts/multitape-changer %c %o %S > %a %d" > > Changer Device = /dev/null > > } > > > > Bacula-dir.conf: > > Storage { > > Name = LTO2-1 > > Address = backup01 # N.B. Use a fully qualified name > here > > SDPort = 9103 > > Password = "*" > > Device = Multitape-changer > > Autochanger = yes > > Media Type = LTO2 > > } > > > > Script multitape-changer: > > #!/bin/bash > > # > > # Bacula interface to use multiple drives as one tape-changer > > # Arguments are copied from the mtx-script! Simply exchange > > # the scriptname from demo-config > > # > > # If you set in your Device resource > > # > > # Changer Command = "path-to-this-script/multitape-changer %c %o %S > %a %d" > > # you will have the following input to this script: > > # > > # multitape-changer "changer-device" "command" "slot" "archive- > device" "drive-index" > > # $1 $2 $3 $4 > $5 > > # > > # for example: > > # > > # multitape-changer /dev/sg0 load 1 /dev/nst0 0 (on a Linux system) > > # > > # Setup arguments > > cmd="$2" > > slot=$3 > > DEVICE=${4:-/dev/tape} > > > > LABELDIR=/etc/bacula/tapelabel # where to find labelfiles > > NULLDEVICE=/dev/null # if unmount link to this > > SLOT01=/dev/nst0 # first slot > > SLOT02=/dev/nst1 # second slot > > # simply append more > > > > #get device for a given slotnumber > > getdevice(){ > > myslot=${1:-1} > > if [ ${#myslot} -gt 2 ];then exit 1;fi > > if [ ${#myslot} -eq 2 ];then > > eval echo \$SLOT$myslot > > return > > else > > eval echo \$SLOT0$myslot > > return > > fi > > } > > > > #get name of labelfile for a given slot > > getname(){ > > myslot=${1:-1} > > if [ ${#myslot} -gt 2 ];then exit 2;fi > > if [ ${#myslot} -eq 2 ];then > > echo SLOT$myslot > > return > > else > > echo SLOT0$myslot > > return > > fi > > } > > > > #how many tapes/slots to manage > > getslots(){ > > count=1 > > while [ "$( getdevice $count )" ];do > > count=$[ $count + 1 ] > > done > > echo $[ $count - 1 ] > > return > > } > > > > #get slot for a given device-file > > getslot(){ > > device=${1:-$NULLDEVICE} > > if [ "$device" = "$NULLDEVICE" ];then > > echo -en "0\n" > > return > > else > > count=1 > > slotdev=$( getdevice $count ) > > while [ "$slotdev" ]; do > > if [ "$slotdev" = "$device" ];then > > echo -en "$count\n" > > return > > fi > > count=$[ $count + 1 ] > > slotdev=$( getdevice $count ) > > done > > # exit 3 > > fi > > } > > > > if test $# -lt 2 ; then > > echo "usage: multitape-changer ctl-device command slot archive- > device drive" > > echo " Insufficient number of arguments arguments given." > > echo " Mimimum usage is first two arguments ..." > > exit 4 > > fi > > > > # > > # Check for special cases where only 2 arguments are needed, > > # all others are a minimum of 3 > > case $cmd in > > loaded) > > ;; > > unload) > > ;; > > list) > > ;; > > slots) > > ;; > > *) > > if test $# -lt 3; then > > echo "usage: multitape-changer ctl-device command slot > archive-device drive" > > echo " Insufficient number of arguments arguments given." > > echo " Mimimum usage is first three arguments ..." > > exit 5 > > fi > > ;; > > esac > > > > > > case $cmd in > > unload) > > if [ -e $DEVICE ];then > > rm $DEVICE && ln -s $NULLDEVICE $DEVICE || exit 0 > > else > > ln -s $NULLDEVICE $DEVICE || exit 0 > > fi > > ;; > > > > load) > > CURDEV=$( getdevice $slot ) > > if [ -e $DEVICE ];then > > rm $DEVICE && ln -s $CURDEV $DEVICE || exit 0 > > else > > ln -s $CURDEV $DEVICE || exit 0 > > fi > > ;; > > > > list) > > slots=$( getslots ) > > for slot in $( seq 1 $slots );do > > labelfile=$LABELDIR/$( getname $slot ) > > if [ -f "$labelfile" ];then > > echo "$slot:$( head -n 1 $labelfile)" > > else > > echo "$slot:" > > fi > > done > > exit 0 > > ;; > > > > loaded) > > if [ -e $DEVICE ];then > > line=$( ls -la $DEVICE ) > > fi > > line=${line:-$NULLDEVICE} > > getslot ${line##* } > > sleep 1 > > exit 0 > > ;; > > > > slots) > > getslots > > exit 0 > > ;; > > esac > > > > Bob Duman > > Senior Systems Engineer > > Cleantech Group LLC > > http://www.cleantech.com > > > > > > > > --------------------------------------------------------------------- > ---- > > This SF.net email is sponsored by: Microsoft > > Defy all challenges. Microsoft(R) Visual Studio 2008. > > http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ > > _______________________________________________ > > Bacula-users mailing list > > Bacula-users@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/bacula-users > > > > > -- > Christian Sabelmann > Hardwareentwickler > Tel.: 040/398053-20 > Fax: 040/398053-29 > e-Mail: [EMAIL PROTECTED] > > portrix.net GmbH > Stresemannstr. 375 > 22761 Hamburg > Germany > HRB 79850 (Amtsgericht Hamburg) > Geschäftsführer: Knud Alex Müller, Henning Voss, Niclas Schroeder > > http://www.portrix.net > >
This solution does only allow one drive at a time to be used. It turns multiple individual drives into a virtual autochanger with what would appear to be one drive. I would think this could be modified to allow access to all drives, but I have not attempted that. Thanks, Bob Duman Senior Systems Engineer Cleantech Group LLC 2250 Genoa Business Park Dr Suite 130 Brighton, MI 48114 (810) 224-4310 x7310 http://www.cleantech.com ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ Bacula-users mailing list Bacula-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bacula-users