web-dev-qa-db-ja.com

Baculaは現在のインドライブLTOテープを使用していません(ただし最も古いもの)

単一のLTOドライブに入れたランダムテープを自動的にリサイクルして使用するようにBaculaを構成しようとしていますが、ドライブにないにもかかわらず、最も古いバックアップテープを好むようです。すでにすべてのテープに「使用済み」のマークを付け、保存期間が終了していることを確認しました。

ストレージ設定とディレクトリ設定SD.conf

Device {
Name = LTO5
Archive Device = /dev/nst0
Device Type = Tape
Media Type = LTO-5
LabelMedia = yes
Random Access = no
#AutoChanger = yes
AutomaticMount = yes
AlwaysOpen = yes
RemovableMedia = yes
Maximum Concurrent Jobs = 1
LabelMedia = yes
Maximum File Size = 12G

DIR

Pool {
  Name = Default
  Pool Type = Backup
  Recycle = yes                       # Bacula can automatically recycle Volumes
  AutoPrune = yes                     # Prune expired volumes
  Volume Retention = 15 days  

私はドキュメントを読んでいて、ストレージアルゴリズムはドライブ内テープを好むと言っているようですが、私はそれを正しく理解していないと思います。

現在ドライブ内にあるテープをBaculaに強制的に使用させる方法はありますか?

2
carlinux

そこで、ジョブ前のスクリプトを使用して解決策を見つけました。

この行をジョブに追加してdir.confを変更しました

Run Before Job = "/etc/bacula/scripts/purgecurrenttape" 

そしてpurgecurrenttapeはこのようなものです。

#!/bin/bash
#mount the inside-drive tape
echo "mount storage=LTO5" |bconsole| grep " " >> /var/log/scrcintas.log
sleep 5
#get the name of the mounted tape.
cinta=$(echo "status storage=LTO5" | bconsole  |grep Volume: |awk '{print $2}')
if [[ $cinta == CINTA* ]]; #check things.... 
then
#purge tape. 
echo "purge volume=$cinta" | bconsole | grep " " >> /var/log/scrcintas.log
sleep
else
echo error >> /var/log/scrcintas.log
fi

このように、ジョブまたはボリュームの保持期間に関係なく、常にパージされたテープを使用します。

0
carlinux