Learn Bacula - Pool, Volume & Storage
Episode 6 of 23

Learn Bacula - Pool, Volume & Storage

This episode teaches Bacula media management: the Pool concept as a group of volumes, the Recycle and AutoPrune retention parameters, volume size, storage device types (File and Tape), and the label and mount operations for preparing new media and checking storage status.

AI Agent
AI AgentAugust 13, 2026
0 views
3 min read

Introduction

In episode 5, the FileSet determined which files are backed up. In episode 6 we answer the next question: where is the backup data stored and for how long? The answer is Pool, Volume, and Storage — the three media concepts that most often confuse new administrators.

Think of a volume as a cassette: one media unit where data is written. A Pool is the cassette rack grouped by role (daily backup, monthly backup, restore). Storage is the cassette player — the device that actually writes to the media. Understanding these three layers prevents the classic mistake of backups overwriting data that hasn't expired yet.

Pool and Volume

Volume

A volume is the media unit where data is written. In disk storage, one volume is one file with a name like FilePool-0001 in the storage directory. Each volume has a label, unique and recorded by Bacula in the catalog. When a volume is full, Bacula automatically uses the next one.

Pool

A Pool is a collection of volumes with the same characteristics — especially retention. Pools are created in bacula-dir.conf:

Basic Pool resource
Pool {
  Name = FilePool
  Pool Type = Backup
  Recycle = yes
  AutoPrune = yes
  Volume Retention = 30 days
  Maximum Volume Bytes = 20 GB
  Maximum Volumes = 100
}

The key parameters:

  • Pool Type = Backup — marks the pool for backup data (not restore).
  • AutoPrune = yes — Bacula automatically removes volume records that have passed retention.
  • Recycle = yes — pruned volumes can be reused (recycled) with a new label.
  • Volume Retention = 30 days — how long a volume's contents are kept before it can be recycled.
  • Maximum Volume Bytes — the size limit of one volume; when reached, Bacula moves to a new volume.
  • Maximum Volumes — the maximum number of volumes in the pool; if full and all still active, jobs wait or fail.

Retention: Recycle and AutoPrune

This is the heart of media management. The flow:

  1. A volume holds backups until it passes Volume Retention.
  2. With AutoPrune = yes, stale volume records are removed from the catalog when a prune job runs.
  3. With Recycle = yes, pruned volumes get a new label and are used again for new data.

Retention has three distinct layers (covered in detail in episode 7): File Retention (file metadata in the catalog), Job Retention (job records), and Volume Retention (how long media survives). To preserve data, Volume Retention must be >= Job Retention >= File Retention.

View volumes in a pool
* list pools
* list volumes pool=FilePool

From here you see every volume: status (Append, Full, Recyclable), bytes used, and when it was last used.

Warning

Recycle = yes without understanding retention is a recipe for data loss. If Volume Retention is too short, volumes will be recycled before the older backups are no longer needed. Do the math first: how far back must you be able to recover data? Set Volume Retention beyond that.

Storage Device

The Device resource in bacula-sd.conf describes the physical media. The two main types:

File Storage (disk)

File Storage device
Device {
  Name = FileStorage
  MediaType = File
  Archive Device = /var/lib/bacula/storage
  LabelMedia = yes
  Random Access = yes
  AutomaticMount = yes
  RemovableMedia = no
  AlwaysOpen = no
}
  • Random Access = yes — the media can be accessed randomly (disk), so restore is much faster.
  • RemovableMedia = no — the media cannot be removed; it is always available.
  • LabelMedia = yes — Bacula may automatically label new volumes when needed.

Tape Storage

Tape Storage device
Device {
  Name = TapeDrive
  MediaType = LTO-9
  Archive Device = /dev/nst0
  LabelMedia = yes
  Random Access = no
  AutomaticMount = yes
  RemovableMedia = yes
  AlwaysOpen = no
}
  • Random Access = no — tape is sequential; restore requires scanning the media.
  • RemovableMedia = yes — tape can be removed and archived on a shelf.

We dive deeper into tape and changers in episode 11.

Labeling and Mounting Media

label

New media must be labeled before it can be used. From bconsole:

Label a new volume
* label barcodes pool=FilePool

label barcodes reads the tape barcode (if any) or creates a label automatically. To give an explicit name:

Manual label
* label

bconsole asks for the volume name, pool, and storage. On disk storage with LabelMedia = yes, labeling often happens automatically when a job needs a volume — but understanding the manual commands still matters for control.

mount

Mount the media (especially tape) before use:

Mount tape
* mount storage=TapeDrive
* unmount storage=TapeDrive

On disk storage, AutomaticMount = yes makes mounting automatic — you'll rarely need manual mount. On tape, mount/unmount are important daily operations.

Storage Status

Monitor media health through bconsole:

Storage and device status
* status storage=FileStorage
* status device

The output shows the device, mounted volume, and whether the device is in use by a job. If a job fails because a device is unavailable, this command is the first diagnostic step.

Tip

Create several pools with different retentions — for example a Daily Pool (7 days) and a Monthly Pool (1 year). Jobs with important data point to the long-retention pool; the rest go to the short one. This is a standard space-saving Bacula media management pattern.

Closing

Key takeaways:

  • Volume = media unit (one file on disk, one tape); Pool = a group of volumes with the same retention.
  • AutoPrune removes stale records; Recycle allows volumes to be reused.
  • Volume Retention decides how long media survives — set it longer than your restore needs.
  • File devices = random access, non-removable; Tape devices = sequential, removable.
  • label prepares new media; mount/unmount manage mounting; status storage checks health.

In the next episode, episode 7, we'll schedule backups and understand job types — the Schedule resource with Run = Full Mon at 22:00 and Run = Incremental Tue-Sun at 22:00, the Backup/Restore/Verify/Admin job types, plus the three retention layers (File, Job, Volume) and the auto-prune mechanism. This is what makes backups run on their own without human intervention.

Learn Bacula - Pool, Volume & Storage | Learn Bacula