On 12/23/24 15:13, D. wrote:

Is there any documentation on how to use USB-attached external hard
drives in place of tapes?  If yes, where can I find the documentation?

I would like to rotate the external drives for off-line off-site backups
just like traditional tapes.

Any guidance on this subject is greatly appreciated.


I'm using a SAS-attached removable zpool, but the fundamental principle for removable disk is the same regardless of the underlying technology.

There's multiple ways to do it, I'm sure.  This is the way I do it.


My SD has two Storage Devices, one internal (actually still hot-swap) and one external/removable that gets swapped out after each full backup cycle:

Device {
  Name = FileStorage
  Device Type = File
  Media Type = File
  Archive Device = /bpool/bacula
  LabelMedia = yes
  Random Access = Yes
  AutomaticMount = yes
  RemovableMedia = no
  Requires Mount = no
  AlwaysOpen = no
  Maximum Concurrent Jobs = 20
}


Device {
  Name = ArchiveCopy
  Device Type = File
  Media Type = File
  Archive Device = /arcpool
  LabelMedia = yes
  Random Access = Yes
  AutomaticMount = yes
  RemovableMedia = no
  Requires Mount = no
  AlwaysOpen = no
  Maximum Concurrent Jobs = 20
}


You'll notice these look EXACTLY THE SAME. The first is the internal pool, which is a ZFS zpool comprising six 2TB SSDs in RAIDZ. The second is the removable pool, a second ZFS zpool of four 2TB hot-swap hard disks also in RAIDZ.

Bacula *doesn't care about that* and never has to care. All it cares about is that when it goes to run Full backups in the FileStorage pool, then Copy the full backups to the ArchiveCopy pool, *there is a volume mounted at that mountpoint*. I actually have four sets of disks for arcpool, which I use in rotation, and Bacula neither knows that nor cares.

The Pools on this storage are defined like this:

Pool {
  Name = Full-Disk
  Storage = epsilon3-file
  Next Pool = Full-Archive
  Pool Type = Backup
  Recycle = no
  Recycle Oldest Volume = no
  Recycle Current Volume = no
  AutoPrune = yes                     # Prune expired volumes
  Volume Retention = 6 months
  File Retention = 6 months
  Maximum Volume Jobs = 0
  Volume Use Duration = 23h
Label Format = "FULL-$Year${Month:p/2/0/r}${Day:p/2/0/r}-${Hour:p/2/0/r}:${Minute:p/2/0/r}"
  RecyclePool = Scratch
}

Pool {
  Name = Full-Archive
  Storage = epsilon3-archive
  Pool Type = Backup
  Recycle = no
  Recycle Oldest Volume = no
  Recycle Current Volume = no
  AutoPrune = yes                     # Prune expired volumes
  Volume Retention = 6 months
  File Retention = 6 months
  Maximum Volume Jobs = 0
  Volume Use Duration = 23h
Label Format = "ARCHIVE-$Year${Month:p/2/0/r}${Day:p/2/0/r}-${Hour:p/2/0/r}:${Minute:p/2/0/r}"
  RecyclePool = Scratch
}


The removable pool, Archive, is defined exactly the same way, same expiration, same EVERYTHING as the Full-Disk pool EXCEPT that it uses the other device and has a different Label prefix.

So if a previously used volume is not present on the removable drives at any given time, again, Bacula doesn't care, because it's never going to try to re-use a Volume anyway. It creates new Volumes, uses them writeable for 23 hours, then marks them Used and creates new ones for the next set of jobs. When each volume expires, it is recycled into the scratch pool, then a separate admin job goes through the scratch pool and deletes every Volume it finds in it.


This is a different hardware implementation than yours, but the same principle should work equally well with a single USB3 removable device. All *you* have to make sure of is that there is always a device mounted at that mountpoint when Bacula comes to write to it, and that you manually delete any expired volumes off the device when you mount it. (Because if that *device* was unmounted at the time that Bacula expired the volumes stores on it, Bacula doesn't know about them any more and doesn't know to delete them before it starts writing to the device.)

I probably COULD create an admin job to delete any expired volumes present on the storage device before starting to use it, but honestly I've never bothered, since I have to physically load the drives into the external chassis and manually import the zpool anyway.



--
  Phil Stracchino
  Fenian House Publishing
  ph...@caerllewys.net
  p...@co.ordinate.org
  Landline: +1.603.293.8485
  Mobile:   +1.603.998.6958


_______________________________________________
Bacula-users mailing list
Bacula-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bacula-users

Reply via email to