Concepts
Storage and backups
Block storage in three tiers, with growing, cloning, manual and scheduled backups, cross-zone restores and custom images.
Storages are network block devices on Ankra Storage, the zone's replicated block storage, kept on several storage hosts. Because a server's disks live on the network rather than on its host, a server can move to another host (live or after a failure) without copying data.
Tiers#
| Tier | IOPS limit | Bandwidth | Price per GiB-month |
|---|---|---|---|
standard, Ankra Storage (default) |
5 000 | 150 MiB/s | €0.049 |
local-nvme, Local NVMe |
50 000 | 1 000 MiB/s | €0.039 |
hdd, Ankra Storage HDD |
600 | 80 MiB/s | €0.029 |
standard (Ankra Storage) and hdd (Ankra Storage HDD) are replicated network storage. local-nvme (Local NVMe) is
the compute host's own NVMe disks: the fastest tier, kept as a single copy on that host, so a server using it stays on that host.
GET /v1/storage-tiers returns the current list; new storage can use every tier it marks is_offered.
Boot storage and what is included#
Every server has a boot storage, device 0, cloned copy-on-write from its template. The plan includes its
storage_gibibytes for the boot storage while it stays attached. Every other GiB (a larger boot storage, extra
storages, storages kept after deleting their server) is billed per hour at the tier's price.
Working with storages#
| Task | How |
|---|---|
| Create an empty storage | POST /v1/storages with zone, title, tier, size_gibibytes |
| Clone a storage | the same with source_storage_id (same zone; the size is at least the source's) |
| Restore a backup as a new storage | the same with source_backup_id, in the backup's zone or another zone |
| Attach or detach | POST /v1/storages/{id}/attach with server_id, POST …/detach; the server must be stopped |
| Grow | POST /v1/storages/{id}/resize with a larger size_gibibytes; an attached storage's server must be stopped, and the guest grows its root file system on the next boot |
| Delete | DELETE /v1/storages/{id} once detached; its backups are kept |
Storages only grow; shrinking is not supported. A server's only storage cannot be detached.
Backups#
A backup is an independent, sparse copy of a storage in the zone's backup pool, so it survives deleting the storage. Backups are crash-consistent and can be taken while the server runs.
- Manual:
POST /v1/storages/{id}/backups(orankra-cloud storages backup <id>). - Scheduled: set a
backup_ruleon the storage, for example{ "interval": "daily", "time": "0300", "retention_days": 7 }.intervalisdailyor a weekday (mon…sun),timeisHHMMin UTC andretention_daysis 1 to 1095. Scheduled backups expire and are deleted automatically; a backup due while its storage is busy is retried five minutes later.
Restore in place with POST /v1/backups/{id}/restore, which replaces the storage's content (its server must be
stopped), or restore as a new storage with source_backup_id. Backups cost €0.012 per GiB-month.
Zones that keep a single copy#
Some zones keep one copy of every volume on one host (storage_durability: single_copy in
GET /v1/zones/{zone}/capabilities). The console says so before you create anything there: Single copy on one host.
Backed up daily off-site.
- Default backups. While the zone's capabilities report a
default_backup, every new server boot disk and every new storage without abackup_ruleof its own is backed up daily to the region's backup vault and kept 7 days. The backups are billed like any other backup. Set your ownbackup_ruleto choose the time and the retention. - Opting out needs an explicit acknowledgement:
"acknowledge_single_copy_without_backup": trueonPOST /v1/serversorPOST /v1/storages(--acknowledge-single-copy-without-backupin the CLI). The volume is then a single copy with no backup: if its host is lost, the data is lost. Removing the backup rule of an existing storage in such a zone ("backup_rule": null) needs the same acknowledgement. - What a host loss means is in the capabilities too:
recoveryisrestart(restarted on another host from replicated storage),restore(not restarted; you restore its volumes from the latest off-site backup) ornone;offsite_backupssays whether backups leave the zone, andgateway_redundancy,uplink_redundancyandobject_storage_durabilitydescribe the zone's networking and object storage the same way.
Cross-zone restores#
A backup can be restored into another zone. The data streams directly between the two zones' storage hosts over mutually authenticated TLS with a one-time ticket, into a temporary volume that is renamed into place, so a retry never leaves half a volume. The same mechanism copies custom images between zones.
Custom images#
Turn a stopped server's storage into a template with POST /v1/storages/{id}/templatize. Custom images appear in
GET /v1/templates with is_custom: true and deploy in their zone; copy one to another zone with
POST /v1/custom-images/{id}/copy. Deleting an image does not affect servers deployed from it.
Rebuilding a server#
POST /v1/servers/{id}/rebuild erases the boot storage and clones it again from a template, keeping every other
storage. The server gets a new instance identifier, so cloud-init runs again, with new SSH keys and user data if you
pass them.
Limits#
A new account may hold 200 GiB of storage, boot storages included; ask support to raise it.