Hello everyone,
I'm really struggling to solve a problem with my bacula setup
and I could use some guidance or helpful comments, PLEASE
PLEASE. I've been using Bacula for about six months with an
AWS storage gateway with success, but still have so much to
learn. I would welcome any help!!
I've tried to walk through this current problem, read the
docs, search the web - but I'm really stuck.
some quick background:
I started shutting down the storage gateway from most of the
day because why run it when my backups aren't scheduled until
11:00 pm? This worked fine for about a week, then I started
getting messages in the jobs asking 'Please mount append
Volume "xxxxx" or label a new one for' the job.
So, I 'update slots' to make sure nothing got out of alignment
and ran a job again:
27-Jun 13:03 bacula-dir JobId 419: Start Backup JobId 419,
Job=crashbox.2017-06-27_13.03.25_03
27-Jun 13:03 bacula-dir JobId 419: Using Device "Drive-4" to
write.
27-Jun 13:03 bacula-sd JobId 419: 3307 Issuing autochanger
"unload slot 31, drive 3" command.
27-Jun 13:03 bacula-sd JobId 419: 3307 Issuing autochanger
"unload slot 11, drive 0" command.
27-Jun 13:03 bacula-sd JobId 419: 3304 Issuing autochanger
"load slot 11, drive 3" command.
27-Jun 13:03 bacula-sd JobId 419: 3305 Autochanger "load slot
11, drive 3", status is OK.
27-Jun 13:03 bacula-sd JobId 419: Please mount append Volume
"BAKEEC9D4D" or label a new one for:
It seemed like the autochanger was working properly - moving
tapes around as needed. But, when I check which volumes are
actually listed in the slots using MTX, I got a different
result:
$ sudo /usr/sbin/mtx -f
/dev/tape/by-id/scsi-2414d5a4e5f5347572d433245 status | head
-n 50
Storage Changer
/dev/tape/by-id/scsi-2414d5a4e5f5347572d433245:10 Drives, 3200
Slots ( 1600 Import/Export )
Data Transfer Element 0:Full (Storage Element 2
Loaded):VolumeTag = BAKB3DD699
Data Transfer Element 1:Full (Storage Element 11
Loaded):VolumeTag = BAKEE69D47
Data Transfer Element 2:Empty
Data Transfer Element 3:Full (Storage Element 21
Loaded):VolumeTag = BAKEEC9D4D
Data Transfer Element 4:Empty
Data Transfer Element 5:Empty
Data Transfer Element 6:Empty
Data Transfer Element 7:Empty
Data Transfer Element 8:Empty
Data Transfer Element 9:Empty
Storage Element 1:Full :VolumeTag=BAKC8C9D2D
Storage Element 2:Empty:VolumeTag=
SO - bacula was saying that slot 11 is in drive 3, status ok
BUT, mtx was saying that slot 11 is in drive 1.
I stopped bacula-dir and bacula-sd, then used manual mtx
commands to unload / load the tapes out of the drives, then
restarted bacula, updated slots, volumes and pools, but I keep
getting errors about 'Please mount append Volume "BAKEEC9D4D"
or label a new one for' the job - even though now the drives
and volumes seem to line up with mtx data:
27-Jun 19:26 bacula-dir JobId 424: Start Backup JobId 424,
Job=crashbox.2017-06-27_19.26.13_06
27-Jun 19:26 bacula-dir JobId 424: Using Device "Drive-1" to
write.
27-Jun 19:26 bacula-sd JobId 424: Please mount append Volume
"BAKEEC9D4D" or label a new one for:
Job: crashbox.2017-06-27_19.26.13_06
Storage: "Drive-1"
(/dev/tape/by-path/ip-tapedrive-01-lun-0-nst)
Pool: Tape4
Media type: ULT3580-TD5
a list of the status of the changer:
$ sudo /usr/sbin/mtx -f
/dev/tape/by-id/scsi-2414d5a4e5f5347572d433245 status | head
-n 50
Storage Changer
/dev/tape/by-id/scsi-2414d5a4e5f5347572d433245:10 Drives, 3200
Slots ( 1600 Import/Export )
Data Transfer Element 0:Full (Storage Element 11
Loaded):VolumeTag = BAKEEC9D4D
Data Transfer Element 1:Empty
Data Transfer Element 2:Empty
Data Transfer Element 3:Empty
Data Transfer Element 4:Empty
Data Transfer Element 5:Empty
Data Transfer Element 6:Empty
Data Transfer Element 7:Empty
Data Transfer Element 8:Empty
Data Transfer Element 9:Empty
Storage Element 1:Full
:VolumeTag=BAKC8C9D2D
Storage Element 2:Full
:VolumeTag=BAKB3DD699
Storage Element 3:Full
:VolumeTag=BAKB38D69C
Storage Element 4:Full
:VolumeTag=BAKB31D695
Storage Element 5:Full
:VolumeTag=BAKB32D696
Storage Element 6:Full
:VolumeTag=BAKB3FD69B
Storage Element 7:Full
:VolumeTag=BAKB39D69D
Storage Element 8:Full
:VolumeTag=BAKB3AD69E
Storage Element 9:Full
:VolumeTag=BAKB33D697
Storage Element 10:Full
:VolumeTag=BAKB3CD698
Storage Element
11:Empty:VolumeTag=
Storage Element 12:Full :VolumeTag=BAKC8A9D2B
It looks to me like the correct volume is loaded in the
correct drive. Also, this volume has been written to for
several months with no issues. It's not new.
A query on the bacula database shows that the volume is
recorded in the proper slot and listed with the 'append'
status:
Volume name Bytes Media Type Expire
Last written Status Slot
BAKEEC9D4D 298.76 GB ULT3580-TD5 n/a
2017-06-24 23:05:45 Append 11
Is it something in my config?
Director:
Director { # define myself
Name = bacula-dir
DIRport = 9101 # where we listen for UA
connections
QueryFile = "/etc/bacula/query.sql"
WorkingDirectory = "/var/spool/bacula"
PidDirectory = "/var/run"
Maximum Concurrent Jobs = 10
Password = "password-here" # Console password
Messages = Daemon
TLS Certificate =
/etc/bacula/certs/safehousebak2.URL.com.crt
TLS Key = /etc/bacula/certs/safehousebak2.URL.com-daemon.key
TLS CA Certificate File = /etc/bacula/certs/cacert.pem
TLS Enable = yes
TLS Require = yes
TLS Verify Peer = no
}
JobDefs {
Name = "DefaultJob"
Type = Backup
Level = Incremental
Client = bacula-fd
FileSet = "Full Set"
Schedule = "WeeklyCycle"
Storage = VTL
Messages = Standard
#Pool = File
Pool = Tape
#Prefer Mounted Volumes = "no"
Priority = 10
Write Bootstrap = "/var/spool/bacula/%c.bsr"
}
#
# Define the main nightly save backup job
Job {
Name = "safehousebak1"
JobDefs = "DefaultJob"
Spool Data = ""
#Maximum Concurrent Jobs = 10
#Prefer Mounted Volumes = "no"
Pool = Tape
}
Job {
Name = "safehouse"
JobDefs = "DefaultJob"
Client = safe1.URL.com-fd
Spool Data = ""
#Maximum Concurrent Jobs = 10
#Prefer Mounted Volumes = "no"
Pool = Tape2
}
Job {
Name = "safe1staging"
JobDefs = "DefaultJob"
Client = safe1staging.URL.com-fd
Schedule = "NoCycle"
Spool Data = ""
#Maximum Concurrent Jobs = 10
#Prefer Mounted Volumes = "no"
Pool = Tape3
}
Job {
Name = "luke-MacBookPro"
JobDefs = "DefaultJob"
Client = luke-MacBookPro-fd
Schedule = "NoCycle"
Spool Data = ""
#Maximum Concurrent Jobs = 10
#Maximum Bandwidth = 500kb/s
FileSet = "Full Set luke-macbookpro"
#Prefer Mounted Volumes = "no"
Pool = Tape3
}
Job {
Name = "crashbox"
JobDefs = "DefaultJob"
Client = crashbox.URL.com-fd
Spool Data = "">
#Maximum Concurrent Jobs = 10
#Maximum Bandwidth = 500kb/s
FileSet = "Full Set crashbox"
#Prefer Mounted Volumes = "no"
Pool = Tape4
}
# Client (File Services) to backup
Client {
Name = bacula-fd
Address =
safehousebak2.URL.com
FDPort = 9102
Catalog = MyCatalog
Password = "password-here" # password for
FileDaemon
File Retention = 6 months # six months
Job Retention = 6 months # six months
AutoPrune = yes # Prune expired
Jobs/Files
TLS Certificate =
/etc/bacula/certs/safehousebak2-client/safehousebak2.URL.com.crt
TLS Key =
/etc/bacula/certs/safehousebak2-client/safehousebak2.URL.com-daemon.key
TLS CA Certificate File = /etc/bacula/certs/cacert.pem
TLS Enable = yes
TLS Require = yes
}
Client {
Name = safe1.URL.com-fd
# Address = 34.207.20.31
Address =
safe1.URL.com
FDPort = 9102
Catalog = MyCatalog
# Password = "gcCd1uHeGS62gpUa"
Password = "password-here"
File Retention = 6 months # six months
Job Retention = 6 months
AutoPrune = yes
TLS Certificate = /etc/bacula/certs/safe1/safe1.URL.com.crt
TLS Key = /etc/bacula/certs/safe1/safe1.URL.com-daemon.key
TLS CA Certificate File = /etc/bacula/certs/cacert.pem
TLS Enable = yes
TLS Require = yes
}
Client {
Name = safe1staging.URL.com-fd
Address =
safe1staging.URL.com
FDPort = 9102
Catalog = MyCatalog
# Password = "gcCd1uHeGS62gpUa"
Password = "password-here"
File Retention = 6 months # six months
Job Retention = 6 months
AutoPrune = yes
}
#
# Client (File Services) to backup
# You should change Name, Address, and Password before using
#
Client {
Name = luke-MacBookPro-fd
# Address = 68.184.40.205
Address =
crashbox.URL.com
FDPort = 9102
Catalog = MyCatalog
Password = "password-here"
File Retention = 6 months # six months
Job Retention = 6 months
AutoPrune = yes
}
#
# Client (File Services) to backup
# You should change Name, Address, and Password before using
#
Client {
Name = crashbox.URL.com-fd
Address =
crashbox.URL.com
FDPort = 9105
Catalog = MyCatalog
Password = "password-here"
File Retention = 6 months # six months
Job Retention = 6 months
AutoPrune = yes
TLS Certificate =
/etc/bacula/certs/crashbox/crashbox.URL.com.crt
TLS Key =
/etc/bacula/certs/crashbox/crashbox.URL.com-daemon.key
TLS CA Certificate File = /etc/bacula/certs/cacert.pem
TLS Enable = yes
TLS Require = yes
}
# Definition of file storage device
Storage {
Name = VTL
# Do not use "localhost" here
# Address =
xxx.amazonaws.com
# N.B. Use a fully qualified name here
Address =
safehousebak2.URL.com
SDPort = 9103
Password = "password-here"
Device = "VTL-Autochanger"
Media Type = ULT3580-TD5
Autochanger = yes
Maximum Concurrent Jobs = 10;
}
# Default pool definition
Pool {
Name = Default
Pool Type = Backup
Recycle = yes # Bacula can
automatically recycle Volumes
AutoPrune = yes # Prune expired volumes
Volume Retention = 365 days # one year
}
# tape Pool definition
Pool {
Name = Tape
Pool Type = Backup
#Storage = VTL
Recycle = yes # Bacula can
automatically recycle Volumes
AutoPrune = yes # Prune expired volumes
Volume Retention = 365 days # one year
Maximum Volume Bytes = 990G # Limit Volume size to
something reasonable
Maximum Volumes = 10 # Limit number of Volumes
in Pool
}
# File Pool definition
Pool {
Name = Tape2
Pool Type = Backup
#Storage = VTL
Recycle = yes # Bacula can
automatically recycle Volumes
AutoPrune = yes # Prune expired volumes
Volume Retention = 365 days # one year
Maximum Volume Bytes = 990G # Limit Volume size to
something reasonable
Maximum Volumes = 10 # Limit number of Volumes
in Pool
}
# File Pool definition
Pool {
Name = Tape3
Pool Type = Backup
#Storage = VTL
Recycle = yes # Bacula can
automatically recycle Volumes
AutoPrune = yes # Prune expired volumes
Volume Retention = 365 days # one year
Maximum Volume Bytes = 990G # Limit Volume size to
something reasonable
Maximum Volumes = 10 # Limit number of Volumes
in Pool
}
# File Pool definition
Pool {
Name = Tape4
Pool Type = Backup
#Storage = VTL
Recycle = yes # Bacula can
automatically recycle Volumes
AutoPrune = yes # Prune expired volumes
Volume Retention = 365 days # one year
Maximum Volume Bytes = 990G # Limit Volume size to
something reasonable
Maximum Volumes = 10 # Limit number of
Volumes in Pool
}
Storage Config:
Storage { # definition of myself
Name = bacula-sd
SDPort = 9103 # Director's port
WorkingDirectory = "/var/spool/bacula"
Pid Directory = "/var/run"
Maximum Concurrent Jobs = 20
SDAddress =
xxx.compute-1.amazonaws.com
TLS Certificate =
/etc/bacula/certs/safehousebak2.URL.com.crt
TLS Key = /etc/bacula/certs/safehousebak2.URL.com-daemon.key
TLS CA Certificate File = /etc/bacula/certs/cacert.pem
TLS Enable = yes
TLS Require = yes
TLS Verify Peer = no
}
#
# List Directors who are permitted to contact Storage daemon
#
Director {
Name = bacula-dir
Password = "ZWRlODg2ODZjMDNkY2M0MzM0ZjcxNDExN"
}
#
# Restricted Director, used by tray-monitor to get the
# status of the storage daemon
#
Director {
Name = bacula-mon
Password = "ZWRlODg2ODZjMDNkY2M0MzM0ZjcxNDExN"
Monitor = yes
}
#
# Note, for a list of additional Device templates please
# see the directory <bacula-source>/examples/devices
# Or follow the following link:
#
http://bacula.svn.sourceforge.net/viewvc/bacula/trunk/bacula/examples/devices/
#
#
# Devices supported by this Storage daemon
# To connect, the Director's bacula-dir.conf must have the
# same Name and MediaType.
#
Device {
Name = FileStorage
Media Type = File
Archive Device = /tmp
LabelMedia = yes; # lets Bacula label
unlabeled media
Random Access = Yes;
AutomaticMount = yes; # when device opened,
read it
RemovableMedia = no;
AlwaysOpen = no;
}
#
# An autochanger device with four drives
#
Autochanger {
Name = VTL-Autochanger
Device = Drive-1, Drive-2, Drive-3, Drive-4
Changer Command = "/usr/libexec/bacula/mtx-changer %c %o %S
%a %d"
Changer Device =
/dev/tape/by-id/scsi-2414d5a4e5f5347572d433245
}
Device {
Name = Drive-1 #
Drive Index = 0
Media Type = ULT3580-TD5
#Archive Device = /dev/nst0
Archive Device = "/dev/tape/by-path/ip-01-lun-0-nst"
AutomaticMount = yes; # when device opened,
read it
AlwaysOpen = yes;
RemovableMedia = yes;
RandomAccess = no;
AutoChanger = yes;
#Maximum Concurrent Jobs = 5;
# #
# # Enable the Alert command only if you have the mtx package
loaded
# # Note, apparently on some systems, tapeinfo resets the
SCSI controller
# # thus if you turn this on, make sure it does not reset
your SCSI
# # controller. I have never had any problems, and smartctl
does
# # not seem to cause such problems.
# Alert Command = "sh -c 'tapeinfo -f %c |grep
TapeAlert|cat'"
# If you have smartctl, enable this, it has more info than
tapeinfo
# Alert Command = "sh -c 'smartctl -H -l error %c'"
}
Device {
Name = Drive-2 #
Drive Index = 1
Media Type = ULT3580-TD5
#Archive Device = /dev/nst1
Archive Device =
"/dev/tape/by-path/ip-tapedrive-02-lun-0-nst"
AutomaticMount = yes; # when device opened,
read it
AlwaysOpen = yes;
RemovableMedia = yes;
RandomAccess = no;
AutoChanger = yes;
#Maximum Concurrent Jobs = 5;
# Enable the Alert command only if you have the mtx package
loaded
# Alert Command = "sh -c 'tapeinfo -f %c |grep
TapeAlert|cat'"
# If you have smartctl, enable this, it has more info than
tapeinfo
# Alert Command = "sh -c 'smartctl -H -l error %c'"
}
Device {
Name = Drive-3 #
Drive Index = 2
Media Type = ULT3580-TD5
#Archive Device = /dev/nst1
Archive Device = "/dev/tape/by-path/ip-03-lun-0-nst"
AutomaticMount = yes; # when device opened,
read it
AlwaysOpen = yes;
RemovableMedia = yes;
RandomAccess = no;
AutoChanger = yes;
#Maximum Concurrent Jobs = 5;
# Enable the Alert command only if you have the mtx package
loaded
# Alert Command = "sh -c 'tapeinfo -f %c |grep
TapeAlert|cat'"
# If you have smartctl, enable this, it has more info than
tapeinfo
# Alert Command = "sh -c 'smartctl -H -l error %c'"
}
Device {
Name = Drive-4 #
Drive Index = 3
Media Type = ULT3580-TD5
#Archive Device = /dev/nst1
Archive Device =
"/dev/tape/by-path/ip-tapedrive-04-lun-0-nst"
AutomaticMount = yes; # when device opened,
read it
AlwaysOpen = yes;
RemovableMedia = yes;
RandomAccess = no;
AutoChanger = yes;
#Maximum Concurrent Jobs = 5;
# Enable the Alert command only if you have the mtx package
loaded
# Alert Command = "sh -c 'tapeinfo -f %c |grep
TapeAlert|cat'"
# If you have smartctl, enable this, it has more info than
tapeinfo
# Alert Command = "sh -c 'smartctl -H -l error %c'"
}