Usage and service-level reports
Ferry measures what each project protects and stores, and what each plan achieves against its policy. Projects see the figures for their own resources in the console and the CLI. A cloud management platform reads them through the API, to bill for backup and to report service levels.
Measurements that are not yet available appear under unavailable, with a reason. Treat these as
missing data when calculating usage or charges.
A plan's usage
Open a plan's What it takes up section to compare provisioned capacity, written data and backup storage usage:


| Figure | What it measures |
|---|---|
| Declared | The size of the disks the plan protects, as created. |
| Written | How much of those disks the guests had actually used at the last backup. |
| Stored | Storage used by the newest backup of each resource, after compression and deduplication. |
| Read, all runs | How much has been read from the disks in total. |
A project's usage
curl -H "X-Auth-Token: $OS_TOKEN" "https://backup.mycompany.com/v1/usage?project_id=<project-id>"
openstack backup usage show --project <project-id>
Both need a system-scoped token. With a token scoped to the project, GET /v1/usage and
openstack backup usage show return the project's own usage, as its members see it.
| Field | Meaning |
|---|---|
protected_bytes | The written size of the protected resources, which is the data under protection. The size the volumes were created with is provisioned_bytes. |
provisioned_bytes | The size the protected resources were created with. |
stored_bytes | What the project's backups occupy in the repository, compressed and deduplicated within the project's own data. |
soft_deleted_bytes | Data of backups the project deleted that is still kept until it is erased. Present only when there is some. |
point_count | Backups held. |
protected_resources | Resources under protection. |
repositories | The same figures for each repository holding the project's data, with the vault it is offered as. |
computed_at | When stored_bytes was last computed. |
live_as_of | When the other figures were read. They are read on each request. |
Project usage is calculated from that project's data. Identical data in two projects counts toward
each project's usage. Charges based on protected_bytes or stored_bytes therefore remain
independent of other projects' activity.
Each repository sweep recalculates stored_bytes, so it can lag behind backups and deletions by one
sweep interval. Use computed_at as the measurement date when billing.
A repository's footprint per project
curl -H "X-Auth-Token: $OS_TOKEN" https://backup.mycompany.com/v1/repositories/<repository-id>/usage
ferry repository usage <repository-id>
Operator only. Each project with data in the repository is listed under tenants:
| Field | Meaning |
|---|---|
referenced_bytes | Everything the project's backups refer to, compressed, counted within its own data. |
exclusive_bytes | What deleting all of the project's backups would free: data no other project refers to. |
logical_allocated_bytes, logical_provisioned_bytes | The written and provisioned size of what its backups protect. |
point_count, resource_count | Backups and resources. |
And for the repository as a whole:
| Field | Meaning |
|---|---|
physical_bytes | What the repository holds. |
sum_tenant_referenced | The sum of every project's referenced_bytes. |
cross_tenant_margin | sum_tenant_referenced minus physical_bytes. Positive when deduplication across projects saves space. Negative while data that no backup refers to any more waits for the sweep, or for its lock to end. |
locked_bytes, release_schedule | Data the storage's lock still holds, and how much of it is released each month. |
held_bytes, held_release | Data of expired backups that the lock still holds, and the days it is released. |
reclaimable_pending_bytes | What the next sweep frees. |
verified_coverage_pct_30d | The share of the repository read back and checked over the last 30 days. |
gc_last_completed_at | When the last sweep completed. Every footprint figure is as of that sweep. |
ceph_trash_pinned_bytes | Volumes Cinder deleted into the Ceph trash that the service still keeps, because a backup needs them. |
leaked_disk_bytes | Disks whose server or volume OpenStack deleted while the service still held them. |
exclusive_bytes and the repository-wide figures depend on every project's data, so they are never shown
to a project.
A plan's service level
curl -H "X-Auth-Token: $OS_TOKEN" https://backup.mycompany.com/v1/plans/<plan-id>/sla
openstack backup plan sla show <plan-id>
Any reader of the plan's project can read it. It compares the policy's targets with the plan's results over the last 30 days:
| Field | Meaning |
|---|---|
sla.actual_rpo | The largest age among the newest backups of the plan's resources, in nanoseconds. |
sla.rpo_target, sla.rpo_compliance_pct | The policy's recovery point target, and the share of the window the plan met it. |
sla.success_rate_30d | The share of backups that succeeded. |
sla.consecutive_failures | Failed backups in a row, now. |
sla.oldest_restorable_point | The oldest backup that can still be restored. |
sla.immutably_protected_since | The oldest backup in a locked vault. It shows since when the plan has been protected against deletion, which is separate from since when it has been backed up. |
consistency_promised, consistency_achieved | The consistency requested by the plan and achieved by its backups. |
consistency_downgrade, points_downgraded | Why backups fell back to crash-consistent, and how many. |
One backup's figures
openstack backup point metrics show <backup-id>
It shows the sizes of one backup, the compression and deduplication ratios, how long each phase took and how long the guest was frozen. A project sees the figures computed within its own data. An operator also sees what the backup transferred, which depends on what the repository already held.
Not protected
GET /v1/coverage and ferry coverage show list, per project, what is not protected and why. See
Monitoring and coverage.