Backupstore Internal Structure
The backupstore is the external storage location where Longhorn backups are saved. It can be either an NFS share, CIFS share, or an S3-compatible object store. Unlike the local replica directory, the Backupstore is designed for deduplication and incremental storage, breaking large volumes into small, manageable blocks.
The root of the backupstore contains a volumes directory. Inside, each volume is organized using a hashed path to ensure scalability:
backupstore/
└── volumes/
└── 4b/
└── e2/
└── [volume-name]/
├── volume.cfg
├── backups/
│ ├── backup_backup-01.cfg
│ └── backup_backup-02.cfg
└── blocks/
├── 0a/
│ └── 0a1b2c3d... (block file)
└── ...
volume.cfgThis is the primary configuration file for a specific volume within the backupstore. It tracks the volume’s overall metadata and acts as the entry point for Longhorn to discover which backups are available for restoration.
Example Content (volume.cfg):
{
"Name": "pvc-b43f2832-33ef-4ff1-ac7e-b097f71a5977",
"Size": 1073741824,
"Labels": {
"BackupTarget": "minio-persistent"
},
"CreatedTime": "2026-03-18T14:07:12Z",
"Backups": {
"backup-01": {
"Name": "backup-01",
"SnapshotName": "snap-457233d...",
"SnapshotCreated": "2026-03-18T14:50:28Z",
"CreatedTime": "2026-03-18T15:13:02Z",
"Size": "128Ki",
"Labels": null
}
}
}
Field Descriptions:
backups/ DirectoryContains “Manifest” files for every individual backup.
backup_[name].cfg: A JSON blueprint for a specific backup point-in-time.Example Content (backup_backup-01.cfg):
{
"Name": "backup-01",
"VolumeName": "pvc-b43f2832-33ef-4ff1-ac7e-b097f71a5977",
"SnapshotName": "snap-457233d...",
"SnapshotCreated": "2026-03-18T14:50:28Z",
"CreatedTime": "2026-03-18T15:13:02Z",
"Size": 131072,
"Blocks": [
{
"Address": 0,
"Size": 2097152,
"Hash": "0a1b2c3d4e5f..."
}
]
}
Field Descriptions:
Address) to a specific physical chunk in the blocks/ directory via its Hash.blocks/ DirectoryThis is where the actual data resides. Longhorn uses Content-Addressable Storage:
/0a/) based on the first two characters of their hash to maintain filesystem performance.blocks/ folder) are uploaded.backup_*.cfg is created, and volume.cfg is updated to include the new entry.Note: Previous versions of Longhorn used a
last_backup.cfgfile. In modern versions (v1.2.0+), this has been replaced by an asynchronous Custom Resource (CR) model where the cluster tracks the state directly, makinglast_backup.cfgobsolete.
© 2019-2026 Longhorn Authors | Documentation Distributed under CC-BY-4.0
© 2026 The Linux Foundation. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Usage page.