Leandro, The following assumes you are using disk based backup, where the "drives" and "autochangers" are virtual.
I would suggest creating multiple "drive" devices in your bacula-sd.conf for each SD destination, then tie them together with a single autochanger resource in those respective bacula-sd.conf files. In your bacula-dir.conf, in your storage resources, reference the respective autochanger resources. If your jobs are ran with the same priority, and all the various daemons have enough "allow simultaneous jobs" specified (not the actual option, I can't recall the exact wording used by Bacula), then you should see better parallelism. I believe you will then be limited by your disk / netwoek bandwidth, and single core performance on various Bacula tasks like hashing files. At least, unless I misunderstand something. I would provide config examples, but I am afk right now. Robert Gerber 402-237-8692 r...@craeon.net On Tue, Jul 15, 2025, 9:51 AM Leandro Saldivar via Bacula-users < bacula-users@lists.sourceforge.net> wrote: > Hi all, > > I have a client with ~2TB of data. A full backup job takes about 15 hours. > Once the backup finishes, a Copy Job is triggered (Selection Type = > PoolUncopiedJobs) to replicate the volume to a remote Storage Daemon — > which takes another 15 hours per volume in the best-case scenario. Finally, > for each backup, I run a Restore job on a replica server (same client > setup), which adds yet another 15 hours. > > The trivial approach to parallelize these jobs (Backup, Copy, Restore) has > been to define a separate Storage + Device pair for each Job. The only > difference between them is the Name. All Devices share the same Archive > Device path — which I'm unsure is a good practice. > > Is there a better way to parallelize Backup, Copy, and Restore jobs on the > same Pool/Volumes without defining a separate Storage/Device for each Job? > What would be considered a best-practice setup here? > > TL;DR > I need to run Backup, Copy, and Restore jobs in parallel for the same > client (Restore happens on a replica server). Ideally without creating > separate Storage/Device/Pool for each job. > > Bacula Version: 15.0.2 (21 March 2024) > > This is the config that currently allows me to parallelize only Backup and > Restore. Following this logic, I’d need to create additional Storage + > Device just for the Copy jobs. > > Client { > Name = "mongodb01-fd" > Address = xx.xx.xx.xx > FDPort = 9102 > Catalog = MyCatalog > Password = "PASSWORD" > File Retention = 11 days > Job Retention = 2 months > AutoPrune = yes > Heartbeat Interval = 1m > TLS Require = yes > TLS PSK Enable = yes > } > > Job { > Name = "mongodb01-Backup" > JobDefs = "MongoDef" > Pool = "mongodb01-baculaserver01-Pool" > Level = Full > Client = "mongodb01-fd" > Storage = "mongodb01_baculaserver01_Storage" > Schedule = "DisabledSchedule" # This is how I disable this client so > it doesn't affect others using the same JobDef with valid Schedules. I > launch the backup manually using a bconsole command. > @"/opt/bacula/etc/bacula-dir.conf.d/jobdefs/RunCopyToServer.jd" # > This is how I trigger Copy Jobs for clients with small backups. It works > well within a 24-hour window. For this client, I should remove this line. > } > > Pool { > Name = "mongodb01-baculaserver01-Pool" > Use Volume Once = yes > Pool Type = Backup > LabelFormat = "mongodb01-" > AutoPrune = yes > Recycle = yes > VolumeRetention = 30 days > Maximum Volumes = 365 > Maximum Volume Jobs = 1 > Recycle Oldest Volume = yes > Next Pool = "mongodb01-baculaserver02-Pool" # All copies go from > server01 to server02 > } > > Pool { > Name = "mongodb01-baculaserver02-Pool" > Use Volume Once = yes > Pool Type = Backup > LabelFormat = "mongodb01-" > AutoPrune = yes > Recycle = yes > VolumeRetention = 30 days > Maximum Volumes = 365 > Maximum Volume Jobs = 1 > Recycle Oldest Volume = yes > Storage = "mongodb01_baculaserver02_Storage" > Next Pool = "mongodb01-baculaserver01-Pool" # If backup runs on > server02, the copy goes to server01. Normally, all main backups are done on > server01. > } > > Storage { > Name = "mongodb01_baculaserver01_Storage" > Address = "baculaserver01.domain" > SDPort = 9103 > Password = "xxxxxxxxxxxxxxxxxxxxxxx" > Device = "mongodb01_baculaserver01_Device" > Media Type = File1 > Maximum Concurrent Jobs = "10" > Heartbeat Interval = 10 > } > > Storage { > Name = "mongodb01_baculaserver01_Storage_2" > Address = "baculaserver01.domain" > SDPort = 9103 > Password = "xxxxxxxxxxxxxxxxxxxxxxxx" > Device = "mongodb01_baculaserver01_Device_2" > Media Type = File1 > Maximum Concurrent Jobs = "10" > Heartbeat Interval = 10 > } > > Storage { > Name = "mongodb01_baculaserver02_Storage" > Address = "baculaserver02.domain" > SDPort = 9103 > Password = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" > Device = "mongodb01_baculaserver02_Device" > Media Type = File1 > Maximum Concurrent Jobs = "10" > Heartbeat Interval = 10 > } > > Device { > Name = "mongodb01_baculaserver01_Device" > Media Type = File1 > Archive Device = "/backup/bacula-storage/mongodb01/" > Maximum Concurrent Jobs = 10 > LabelMedia = yes > Random Access = Yes > AutomaticMount = yes > RemovableMedia = no > AlwaysOpen = yes > } > > Device { > Name = "mongodb01_baculaserver01_Device_2" > Media Type = File1 > Archive Device = "/backup/bacula-storage/mongodb01/" > Maximum Concurrent Jobs = 10 > LabelMedia = yes > Random Access = Yes > AutomaticMount = yes > RemovableMedia = no > AlwaysOpen = yes > } > > #This Device is stored in baculaserver02 where only a storage daemon is > running (not bacula-dir) > Device { > Name = "mongodb01_baculaserver02_Device" > Media Type = File1 > Archive Device = "/backup/bacula-storage/mongodb01/" > LabelMedia = yes; > Random Access = Yes; > AutomaticMount = yes; > RemovableMedia = no; > AlwaysOpen = no; > } > > > Backup is launched via cron every 3 days using: > echo 'run job=mongodb01-Backup > storage="mongodb01_baculaserver01_Storage_2" yes' | docker exec -i > bacula-dir /opt/bacula/bin/bconsole > Restore is triggered by another cron using the default Storage defined in > the Job. > > Any advice or shared experience would be greatly appreciated. > > Thanks, > _______________________________________________ > 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