On 2006-07-25 15:03, Alan Brown wrote:
> On Tue, 25 Jul 2006, Kern Sibbald wrote:
>
>>> I thought it was intended to scan slots and drives without requiring a
>>> tape drive unload in 1.38.
>> I was going to remove the requirement to unload the drive, but the users
>> objected to that so it currently unloads the drive you specify.
>
> OK.
>
>>> Currently it does - which means that changing out tape sets cannot be done
>>> unless at least one drive is idle/blocked - problematic in some
>>> circumstances, particularly when a large backup is in progress and waiting
>>> for this event means the magazine won't be changed out until next business
>>> day, or someone has to wait outside office hours until the drive is freed
>>> up.
>> Yes, the current behavior presents certain problem.
>
> It's decidely unfriendly for anything except the smallest changers.
>
>> However, users were overwhelmly in favor of keeping the current behavior
>> until
>> they have some way within Bacula to unload drives. Such code does not
>> currently exist.
>
> Understandable, but MTX works.
>
> How about a "Unload on update" stored keyword to control the behaviour?
>
>>> 2: Are input/output slots being scanned correcttly?
>>>
>>> When running update slots, Bacula sees the correct number of slots, but
>>> doesn't seem to recognise tapes in the mailslots (Input/output slots)
>> I provide a default mtx-changer script, that knows nothing about "mailslots".
>> If you want it to handle mailslots, you will probably need to adapt the
>> script, and if you can do it in a way that does not break with changers that
>> do not have mailslots, I'll be happy to incorporate it.
>
> Here are the tricky parts (Only 45 slots reported today - one magazine is out)
>
> Storage Changer /dev/sg16:2 Drives, 45 Slots ( 2 Import/Export )
> Data Transfer Element 0:Full (Storage Element 1 Loaded):VolumeTag = ALOW0026
> Data Transfer Element 1:Full (Storage Element 9 Loaded):VolumeTag = ALOW0039
> ...
> Storage Element 41:Full :VolumeTag=AMED0042
> Storage Element 42:Full :VolumeTag=AMED0041
> Storage Element 43:Empty
> Storage Element 44 IMPORT/EXPORT:Empty
> Storage Element 45 IMPORT/EXPORT:Empty
>
> The mailslots are designated IMPORT/EXPORT and it seems to be a simple
> parsing issue.
>
> I'm not sure if the report of which barcode is in which drive is being
> used. Kern?
>
> AB
>
>
> -------------------------------------------------------------------------
> Take Surveys. Earn Cash. Influence the Future of IT
> Join SourceForge.net's Techsay panel and you'll get the chance to share your
> opinions on IT & business topics through brief surveys -- and earn cash
> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
> _______________________________________________
> Bacula-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/bacula-users
I wrote a script that check for tapes in the IMPORT/EXPORT slot, and take care
of that by just talking to mysql, and bacula will then know that the tape is
InChanger and which slot.
On my changer, an incoming tape is marked IMPORT/EXPORT:Full , but an outgoing
tape has also the volumetag.
I make it simple and never remove any magazines, and have only one mailslot, so
I can do:
TRANSFER=`$MTX status | tail -1`
if expr match "$TRANSFER" '^.* 82 IMPORT/EXPORT:Full $' >/dev/null ; then
importbusy=1
echo "unknown tape in slot 82 (import)"
#check if I can import
check_in
if [ $can_import -eq "1" ] ; then
echo moving tape to slot $inslot
$MTX transfer 82 $inslot && resetslot $inslot
#echo "Doing inventory, please wait"
#$MTX inventory
else
echo "No free slots, please remove tape $involume from the extract
port."
fi
else
importbusy=0
fi
if expr match "$TRANSFER" '^.*Full.*' >/dev/null ; then
exportbusy=1
volume=`expr match "$TRANSFER" '^.*:VolumeTag=\(.*\)$'`
echo $volume in IMPORT/EXPORT Slot 82
else
exportbusy=0
fi
This script requires lot of functions to work, so you can't just use it, but
maybe give some hints when making your own script.
I have a pool for Offline tapes (PoolId=8), where the script check for tapes in
that pool, and if InChanger=1 .
Then move them one by one to the export slot
and change InChanger to 0 , but keep the Slot number, so another function can
get a list of free slots from mysql.
When I import another tape to that slot, the extracted tape will have slot=0,
that is the resetslot() function.
My script is called with -e when I need to extract a tape:
case "$1" in
-e)
if [ $exportbusy -eq 1 ] ; then
echo "IMPORT/EXPORT Slot busy , Volume $volume must be removed
first."
exit
fi
export=`getoneslot`
if [ $export -gt 0 ] ; then
$MTX transfer $export 82 && offline $export || echo Failed to
export slot $export
else
echo nothing to export
fi
;;
-i)
if [ ! -z "$2" ]
then
if [ $exportbusy -ne 1 ] ; then
echo "No tape in the IMPORT slot"
exit 2
fi
echo '$MTX transfer 82 $2 && resetslot $2'
else
echo Please enter the slot where to store the tape, i.e. one
of
`getfreeslots`
fi
;;
*)
:
;;
esac
Some functions that I use:
MTX=/opt/local/etc/mtx
MYSQL="/extra/mysql/4.0.18/bin/mysql bacula"
checknrtoextract() {
(
$MYSQL << EOF
select count(*) from Media where PoolID=8 and InChanger=1;
EOF
) | tail -1
}
listtoextract() {
(
$MYSQL << EOF
select VolumeName from Media where PoolID=8 and InChanger=1;
EOF
) |grep -v VolumeName
}
getoneslot() {
(
$MYSQL << EOF
select min(Slot) from Media where PoolID=8 and InChanger=1;
EOF
) |grep -v Slot
}
getfreeslots() {
(
$MYSQL << EOF
select Slot from Media where InChanger!=1 order by Slot;
EOF
) | egrep -v 'Slot|^0$'
}
check_in() {
free=`getfreeslots`
if [ -z "$free" ] ; then
echo "No free slots"
can_import=0
else
echo $free
inslot=`echo $free | cut -f1 -d" "`
echo $inslot
can_import=1
fi
}
slot() {
(
$MYSQL << EOF
select Slot from Media where VolumeName="$1";
EOF
) |grep -v Slot
}
resetslot() {
$MYSQL << EOF
update Media set Slot=0 where Slot=$1 ;
EOF
}
offline() {
$MYSQL << EOF
update Media set InChanger=0 where Slot=$1 ;
EOF
}
What I need is some daemon that can catch a status from the changer when the
mailslot is opened/closed, now I must run my script in a loop and then go to the
changer and remove/insert tapes.
I still need to run mtx inventory to update the slots/volume list, but I never
run any scan from bacula since the mysql-database knows whats in the changer.
/birre
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Bacula-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bacula-users