How to manage storage buckets

Storage buckets let you store and manage object-based data using non-local object storage.

Unlike custom storage volumes, storage buckets cannot be attached to instances. Instead, applications access them directly via a URL using the S3 protocol.

View storage buckets

To list all available storage buckets in a storage pool, run:

lxc storage bucket list <pool-name>

To show detailed information about a specific bucket, run:

lxc storage bucket show <pool-name> <bucket-name>

Create a storage bucket

Requirements

Your LXD server must have access to a Ceph Object storage pool.

To view available storage pools, run:

lxc storage list

If you see a storage pool in the output with the cephobject driver, you’re all set. Continue on to the instructions below to create a storage bucket.

If you don’t see a pool that uses a cephobject storage driver, you must create one before you can continue. This requires a Ceph cluster with a RADOS Gateway (radosgw) enabled. See our how-to guide for storage pools: Requirements for Ceph-based storage pools.

Create a bucket on a single, non-clustered LXD server

To create a storage bucket on a non-clustered LXD server, run:

lxc storage bucket create <pool-name> <bucket-name> [configuration_options...]

See the Ceph Object documentation for a list of available storage bucket configuration options for the driver.

Create a bucket on a cluster member

Distributed storage buckets

Storage buckets created in cephobject storage pools are available from any LXD cluster member. Thus, to create this bucket, the command remains the same as for a non-clustered LXD server:

lxc storage bucket create <pool-name> <bucket-name> [configuration_options...]

Configure storage bucket settings

See the Ceph Object documentation for a list of available storage bucket configuration options for the driver.

Use the following command to set configuration options for a storage bucket:

lxc storage bucket set <pool-name> <bucket-name> <key> <value>

For example, to set the size (quota) of a bucket, use the following command:

lxc storage bucket set my-pool my-bucket size 1MiB

You can also edit the storage bucket configuration by using the following command:

lxc storage bucket edit <pool-name> <bucket-name>

Use the following command to delete a storage bucket and its keys:

lxc storage bucket delete <pool-name> <bucket-name>

Resize a storage bucket

By default, storage buckets do not have a quota applied.

To set or change a quota for a storage bucket, set its size configuration:

lxc storage bucket set <pool-name> <bucket-name> size <new-size>

Important

  • Growing a storage bucket usually works (if the storage pool has sufficient storage).

  • You cannot shrink a storage bucket below its current used size.

Manage storage bucket keys

To access a storage bucket, applications must use a set of S3 credentials made up of an access key and a secret key. You can create multiple sets of credentials for a specific bucket.

Each set of credentials is given a key name. The key name is used only for reference and does not need to be provided to the application that uses the credentials.

Each set of credentials has a role that specifies what operations they can perform on the bucket.

The roles available are:

  • admin - Full access to the bucket

  • read-only - Read-only access to the bucket (list and get files only)

If the role is not specified when creating a bucket key, the role used is read-only.

View storage bucket keys

Use the following command to see the keys defined for an existing bucket:

lxc storage bucket key list <pool-name> <bucket-name>

Use the following command to see a specific bucket key:

lxc storage bucket key show <pool-name> <bucket-name> <key-name>

Create keys

Use the following command to create a set of credentials for a storage bucket:

lxc storage bucket key create <pool-name> <bucket-name> <key-name> [configuration_options...]

Use the following command to create a set of credentials for a storage bucket with a specific role:

lxc storage bucket key create <pool-name> <bucket-name> <key-name> --role=admin [configuration_options...]

These commands will generate and display a random set of credential keys.

Edit or delete storage bucket keys

Use the following command to edit an existing bucket key:

lxc storage bucket key edit <pool-name> <bucket-name> <key-name>

Use the following command to delete an existing bucket key:

lxc storage bucket key delete <pool-name> <bucket-name> <key-name>