Skip to main content

Overview

Individual objects in Xloud Object Storage are limited to 5 GB per upload request. Files larger than 5 GB must be split into segments and uploaded as a Large Object — either a Static Large Object (SLO) or Dynamic Large Object (DLO). Both produce a manifest object that transparently concatenates segments when downloaded.
Prerequisites
  • An active Xloud account with appropriate permissions
  • Access to the Xloud Dashboard (https://connect.<your-domain>) or CLI configured with credentials
  • API credentials sourced (source admin-openrc.sh)

SLO vs DLO Comparison

MethodManifestBest ForSegment Discovery
SLO (Static Large Object)Explicit JSON manifest listing each segmentLarge files with known segmentsExplicit — you define each segment path
DLO (Dynamic Large Object)Object with X-Object-Manifest headerStreaming uploads of unknown total sizeAutomatic — by name prefix convention

Static Large Object (SLO)

Use SLO when the complete file is available before upload begins.
1

Split the file into segments

Split file into 1 GB segments
split -b 1G large-backup.tar.gz large-backup.tar.gz.part-
2

Create a segments container

Create dedicated segments container
openstack container create app-backups-segments
3

Upload each segment

Upload all segments
for f in large-backup.tar.gz.part-*; do
  openstack object create app-backups-segments "$f"
done
4

Build and upload the SLO manifest

Collect the ETag of each segment (shown in the upload output) and create a manifest:
manifest.json
[
  {
    "path": "app-backups-segments/large-backup.tar.gz.part-aa",
    "etag": "<etag-from-upload>",
    "size_bytes": 1073741824
  },
  {
    "path": "app-backups-segments/large-backup.tar.gz.part-ab",
    "etag": "<etag-from-upload>",
    "size_bytes": 524288000
  }
]
Upload the manifest with the multipart-manifest query parameter:
Create SLO manifest
curl -X PUT \
  -H "X-Auth-Token: $OS_TOKEN" \
  -H "Content-Type: application/json" \
  --data-binary @manifest.json \
  "https://object.<your-domain>/v1/<account>/app-backups/large-backup.tar.gz?multipart-manifest=put"
The large object is now accessible at app-backups/large-backup.tar.gz and downloads transparently concatenate all segments.

Dynamic Large Object (DLO)

Use DLO for streaming uploads where the total object size is not known in advance.
1

Upload segments with a common prefix

Upload each segment with a naming convention that groups them by prefix:
Upload DLO segments
openstack object create app-backups large-backup/segment-0001
openstack object create app-backups large-backup/segment-0002
openstack object create app-backups large-backup/segment-0003
2

Create the DLO manifest object

Create a zero-byte manifest object pointing to the segment prefix:
Create DLO manifest
curl -X PUT \
  -H "X-Auth-Token: $OS_TOKEN" \
  -H "X-Object-Manifest: app-backups/large-backup/" \
  -H "Content-Length: 0" \
  "https://object.<your-domain>/v1/<account>/app-backups/large-backup"
Accessing app-backups/large-backup transparently returns all segments concatenated in alphabetical order.

Download a Large Object

Downloading a large object (SLO or DLO) is transparent — use the same commands as a normal object:
Download large object
openstack object save app-backups large-backup.tar.gz
The proxy server automatically retrieves and concatenates all segments.

Next Steps

Upload Objects

Standard object upload for files under 5 GB

Versioning

Enable versioning on containers that hold large objects

Troubleshooting

Resolve large object upload timeouts and manifest errors

Storage Policies

Choose the right storage policy for large object containers