Skip to content

Block Stores

A block store defines where flexFS stores file data blocks. Each block store maps to a bucket (or container) in a cloud object storage service. Volumes reference a block store by ID — all data blocks for that volume are stored in the configured bucket and prefix.

For the full list of block store fields, their flags, types, and defaults, see Block Store Fields in the configure.flexfs CLI reference. Per-backend meanings for --username and --password are given under Credential Handling below.

The provider_code, region_code, and block_api_code are immutable after creation. Credentials (username, password), the endpoint address, the prefix, and the OCI --namespace can be updated. configure.flexfs deliberately does not offer --bucket on update; a bucket name can only be changed through the REST API, and is guarded as described below.

Terminal window
configure.flexfs create block-store \
--providerCode aws \
--regionCode <region> \
--apiCode s3 \
--bucket <bucket> \
--prefix <prefix> \
--username <username> \
--password <password>

GCS uses the native Cloud Storage API. Pass a service account JSON key as --password, or omit credentials entirely to use the workload’s application default credentials:

Terminal window
configure.flexfs create block-store \
--providerCode gcp \
--regionCode <region> \
--apiCode gcs \
--bucket <bucket> \
--prefix <prefix> \
--password "$(cat service-account.json)"

--address is not needed for standard GCS. Set it only to reach a restricted VIP (restricted.googleapis.com) or a local emulator.

--username is the storage account name and --password its access key:

Terminal window
configure.flexfs create block-store \
--providerCode azure \
--regionCode <region> \
--apiCode azure \
--bucket <container> \
--prefix <prefix> \
--username <username> \
--password <password>

The endpoint defaults to the public commercial cloud, <storage-account>.blob.core.windows.net. Reaching a sovereign cloud, Azure Stack, or a custom domain requires --address, given as the full service host including the account label:

Terminal window
configure.flexfs create block-store \
--providerCode azure \
--regionCode <region> \
--apiCode azure \
--bucket <container> \
--username <username> \
--password <password> \
--address <username>.blob.core.usgovcloudapi.net

The Azurite emulator addresses the account in the path rather than as a subdomain, so give --address that form:

Terminal window
configure.flexfs create block-store \
--providerCode azure \
--regionCode <region> \
--apiCode azure \
--bucket <container> \
--username devstoreaccount1 \
--password <azurite-key> \
--address http://127.0.0.1:10000/devstoreaccount1

Azure is the only API whose --address may carry a path. For the others the bucket is a separate field, so a path there is rejected as a likely pasted bucket URL.

OCI requires --namespace in addition to --bucket:

Terminal window
configure.flexfs create block-store \
--providerCode oci \
--regionCode <region> \
--apiCode oci \
--bucket <bucket> \
--namespace <namespace> \
--prefix <prefix> \
--username <username> \
--password <password>

To correct a namespace on an existing OCI block store:

Terminal window
configure.flexfs update block-store <id> --namespace <namespace>

For S3-compatible stores like MinIO, Wasabi, or Ceph RGW, use the s3 API code with a custom --address:

Terminal window
configure.flexfs create block-store \
--providerCode minio \
--regionCode <region> \
--apiCode s3 \
--bucket <bucket> \
--prefix <prefix> \
--username <username> \
--password <password> \
--address minio.example.com:9000

Credentials, the address, the prefix, and the OCI --namespace can be updated on an existing block store. The prefix and the bucket name are relocation-guarded, as described above.

Terminal window
configure.flexfs update block-store <id> \
--username <username> \
--password <password>
Terminal window
configure.flexfs update block-store <id> --address new-endpoint.example.com
Terminal window
configure.flexfs list block-stores

The list view shows id, provider_code, region_code, block_api_code, address, bucket, and prefix. Credentials are not shown in list output.

Terminal window
configure.flexfs show block-store <id>

The full detail view includes all fields. The password field is included in the output — treat it as sensitive.

Terminal window
configure.flexfs delete block-store <id>

The prefix field determines the key prefix for all blocks stored by volumes using this block store. Using different prefixes within the same bucket allows multiple block stores to share a single bucket:

Terminal window
# Production block store
configure.flexfs create block-store \
--providerCode aws --regionCode <region> --apiCode s3 \
--bucket <bucket> --prefix prod
# Staging block store (same bucket, different prefix)
configure.flexfs create block-store \
--providerCode aws --regionCode <region> --apiCode s3 \
--bucket <bucket> --prefix staging

For storage backends that require explicit credentials:

BackendUsernamePassword
Amazon S3AWS access key IDAWS secret access key
Google Cloud Storage(unused)Service account JSON key (leave empty for application default credentials)
Azure Blob StorageStorage account nameStorage account access key
Oracle Cloud (oci API)JSON identity document: tenancy_ocid, user_ocid, region, key_id, key_fingerprintPEM-encoded RSA private key
S3-compatibleAccess keySecret key