Oh wow, bacula can do that, stream output to two media devices at once?

Robert Gerber
402-237-8692
r...@craeon.net

On Fri, Aug 8, 2025, 2:17 PM Dragan Milivojević <gali...@pkm-inc.com> wrote:

> As I understand it people use multiple autochangers so that you can
> read/write multiple
> medias at the same time. VirtualFull would be a common use case.
>
> On Fri, 8 Aug 2025 at 21:14, Rob Gerber <r...@craeon.net> wrote:
>
>> Why different autochangers? Are they gong to different storage devices?
>>
>> Do you have multiple bacula SDs?
>>
>> I have briefly read through, but if the problem is that you want to
>> direct jobs to use specific autochangers, i think you must use a unique
>> mediatype for each autochanger. Otherwise, it may choose an autochanger at
>> random, and obviously volumes present under different autochangers probably
>> won't be accessible to each other.
>>
>> The second problem I see is that your pool specifies either autochanger
>> as valid storage targets. So you provide your preferred storage target at
>> runtime? Otherwise of course it's going to select one storage at random.
>>
>> Hope this helps. If you can reply with your goals for this configuration
>> and the details I requested we should be able to figure this out.
>> Robert Gerber
>> 402-237-8692
>> r...@craeon.net
>>
>> On Fri, Aug 8, 2025, 1:35 PM White, Daniel E. (GSFC-764.0)[AEGIS] via
>> Bacula-users <bacula-users@lists.sourceforge.net> wrote:
>>
>>> I know WHAT is happening, just not WHY
>>> I am hoping someone sees something obviously bogus in here.
>>>
>>> Extract from bacula-dir.conf :
>>>
>>> Autochanger {
>>>   Name = "Disk01-Incremental-Autochanger"
>>>   Address = "<SD Server Address>"
>>>   Autochanger = "Disk01-Incremental-Autochanger"
>>>   Device = "Disk01-Incremental-Autochanger"
>>>   MaximumConcurrentJobs = 10
>>>   MediaType = "DiskVolume"
>>>   Password = <redacted>
>>>   SdPort = 9103
>>> }
>>>
>>> Autochanger {
>>>   Name = "Disk02-Incremental-Autochanger"
>>>   Address = "<SD Server Address>"
>>>   Autochanger = "Disk02-Incremental-Autochanger"
>>>   Device = "Disk02-Incremental-Autochanger"
>>>   MaximumConcurrentJobs = 10
>>>   MediaType = "DiskVolume"
>>>   Password = <redacted>
>>>   SdPort = 9103
>>> }
>>>
>>> Pool {
>>>   Name = "Incremental"
>>>   ActionOnPurge = Truncate
>>>   AutoPrune = yes
>>>   LabelFormat = "IncVol-"
>>>   MaximumVolumeBytes = 536870912000
>>>   MaximumVolume = 20
>>>   PoolType = "Backup"
>>>   PurgeOldestVolume = yes
>>>   Recycle = yes
>>>   Storage =
>>> "Disk01-Incremental-Autochanger","Disk02-Incremental-Autochanger"
>>>   StorageGroupPolicy = "FreeSpace"
>>>   VolumeRetention = 2 weeks
>>> }
>>>
>>> Extract from bacula-sd.conf :
>>>
>>> Autochanger {
>>>   Name = "Disk01-Incremental-Autochanger"
>>>   ChangerCommand = "/dev/null"
>>>   ChangerDevice = "/dev/null"
>>>   Device =
>>> "Disk01-Dev01-Incremental","Disk01-Dev02-Incremental","Disk01-Dev03-Incremental","Disk01-Dev04-Incremental","Disk01-Dev05-Incremental","Disk01-Dev06-Incremental","Disk01-Dev07-Incremental","Disk01-Dev08-Incremental","Disk01-Dev09-Incremental","Disk01-Dev10-Incremental"
>>> }
>>>
>>> Autochanger {
>>>   Name = "Disk02-Incremental-Autochanger"
>>>   ChangerCommand = "/dev/null"
>>>   ChangerDevice = "/dev/null"
>>>   Device =
>>> "Disk02-Dev01-Incremental","Disk02-Dev02-Incremental","Disk02-Dev03-Incremental","Disk02-Dev04-Incremental","Disk02-Dev05-Incremental","Disk02-Dev06-Incremental","Disk02-Dev07-Incremental","Disk02-Dev08-Incremental","Disk02-Dev09-Incremental","Disk02-Dev10-Incremental"
>>> }
>>>
>>> Device {
>>>   Name = "Disk01-Dev01-Incremental"
>>>   AlwaysOpen = yes
>>>   ArchiveDevice = "/backups/Disk01/INCREMENTAL"
>>>   AutomaticMount = yes
>>>   DeviceType = File
>>>   LabelMedia = yes
>>>   MaximumConcurrentJobs = 5
>>>   MediaType = "DiskVolume"
>>>   RandomAccess = yes
>>>   RemovableMedia = no
>>> }
>>> ... repeat 39 for times changing Name and ArchiveDevice as needed
>>>
>>> Finally, the bacula.log extract showing the error:
>>>
>>>
>>> 30-Jul 03:00 <Bacula Server>-dir JobId 36: Start Backup JobId 36,
>>> Job=<Bacula Server>.2025-07-30_03.00.00_32
>>> 30-Jul 03:00 <Bacula Server>-dir JobId 36: Connected to Storage
>>> "Disk02-Incremental-Autochanger" at <SD Server Address>:9103 with TLS
>>> 30-Jul 03:00 <Bacula Server>-dir JobId 36: Using Device
>>> "Disk02-Dev05-Incremental" to write.
>>> ...
>>>
>>> 30-Jul 03:00 <Bacula Server>-dir JobId 36: Storage
>>> "Disk02-Incremental-Autochanger" was selected out of group of 2 available
>>> storages. StorageGroupPolicy "FreeSpace" used
>>> 30-Jul 03:00 <Bacula Server>-dir JobId 36: Connected to Client "<Bacula
>>> Server>-fd" at <SD Server Address>:9102 with TLS
>>> 30-Jul 03:00 <Bacula Server>-fd JobId 36: Connected to Storage at <SD
>>> Server Address>:9103 with TLS
>>> ...
>>> 30-Jul 03:00 <Bacula Server>-dir JobId 36: Created new
>>> Volume="IncVol-0007", Pool="Incremental", MediaType="DiskVolume" in catalog.
>>> 30-Jul 03:00 <Bacula Server>-sd JobId 36: Labeled new Volume
>>> "IncVol-0007" on File device "Disk02-Dev05-Incremental"
>>> (/backups/Disk02/INCREMENTAL).
>>> 30-Jul 03:00 <Bacula Server>-sd JobId 36: Wrote label to prelabeled
>>> Volume "IncVol-0007" on File device "Disk02-Dev05-Incremental"
>>> (/backups/Disk02/INCREMENTAL)
>>>   Termination:            Backup OK
>>>
>>> Note that Disk02 is used
>>> Volume "IncVol-0007" created here
>>>
>>> Subsequent jobs run and append to Volume "IncVol-0007"
>>>
>>> 03-Aug 03:00 <Bacula Server>-dir JobId 48: Connected to Storage
>>> "Disk02-Incremental-Autochanger" at <SD Server Address>:9103 with TLS
>>> 03-Aug 03:00 <Bacula Server>-dir JobId 48: Using Device
>>> "Disk02-Dev08-Incremental" to write.
>>> 03-Aug 03:00 <Bacula Server>-dir JobId 48: Storage
>>> "Disk02-Incremental-Autochanger" was selected out of group of 2 available
>>> storages. StorageGroupPolicy "FreeSpace" used
>>> ...
>>> 03-Aug 03:00 <Bacula Server>-sd JobId 48: Volume "IncVol-0007"
>>> previously written, moving to end of data.
>>>
>>> Now we get the error:
>>>
>>> This time, the StorageGroupPolicy of "FreeSpace" picks Disk01 !
>>>
>>> 08-Aug 03:00 <Bacula Server>-dir JobId 65: Using Device
>>> "Disk01-Dev06-Incremental" to write.
>>> 08-Aug 03:00 <Bacula Server>-dir JobId 65: Storage
>>> "Disk01-Incremental-Autochanger" was selected out of group of 2 available
>>> storages. StorageGroupPolicy "FreeSpace" used
>>> 08-Aug 03:00 <Bacula Server>-sd JobId 65: Warning: mount.c:216 Open of
>>> File device "Disk01-Dev06-Incremental" (/backups/Disk01/INCREMENTAL) Volume
>>> "IncVol-0007" failed: ERR=Could not
>>> open(/backups/Disk01/INCREMENTAL/IncVol-0007,OPEN_READ_WRITE,0640): ERR=No
>>> such file or directory
>>> 08-Aug 03:00 <Bacula Server>-sd JobId 65: Marking Volume "IncVol-0007"
>>> in Error in Catalog.
>>>
>>> =============================
>>>
>>> The volume's path is /backups/Disk02/INCREMENTAL/IncVol-0007
>>> but Bacula is looking to write to /backups/Disk01/INCREMENTAL/IncVol-0007
>>>
>>> Here is the problem.
>>>
>>> The same line
>>>   StorageGroupPolicy = "FreeSpace"
>>> is in each JobDefs resource in bacula-dir.conf
>>>
>>> Does anyone see a stupid mistake made on my part ?
>>>
>>> Does anyone see a way past this mess ?
>>>
>>> Thanks in advance.
>>>
>>>
>>> _______________________________________________
>>> Bacula-users mailing list
>>> Bacula-users@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/bacula-users
>>>
>> _______________________________________________
>> Bacula-users mailing list
>> Bacula-users@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/bacula-users
>>
>
_______________________________________________
Bacula-users mailing list
Bacula-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bacula-users

Reply via email to