Underlying Storage
Alluxio connects to a wide variety of storage systems, known as Under File Systems (UFS), and exposes them through a single unified virtual namespace. This section explains how Alluxio mounts work and provides configuration guides for each supported storage system.
How Mounts Work
A mount binds an Alluxio virtual path to a UFS URI. For example, mounting s3://my-bucket/data/ to /data makes the bucket contents accessible at /data in the Alluxio namespace. Data is not copied — reads and writes are proxied through Alluxio to the underlying storage.
Key behaviors:
Multiple storage systems can be mounted simultaneously under different paths.
Per-mount options (set in
mountOptionsor--option) take precedence over global properties set inAlluxioClusterspec.propertiesoralluxio-site.properties.Mount points must be at the top level of the Alluxio namespace and cannot be nested. See Mount Rules below.
Mount Rules
When defining your namespace, you must follow two rules to ensure a valid and unambiguous mount table.
Rule 1: Mounts Must Be Direct Children of the Root (/)
/)You can only create mount points at the top level of the Alluxio namespace. You cannot mount to the root path (/) itself, nor can you create a mount point inside a non-existent directory.
Mount a bucket
/s3-data
s3://my-bucket/
✔️ Yes
Mount point is a direct child of root.
Mount to root
/
s3://my-bucket/
❌ No
The root path cannot be a mount point.
Mount to a sub-path
/data/images
s3://my-bucket/images/
❌ No
Mount points cannot be created in subdirectories.
Rule 2: Mounts Cannot Be Nested
One mount point cannot be created inside another, either in the Alluxio namespace or in the UFS namespace. For example, if /data is mounted to s3://my-bucket/data, you cannot create a new mount at /data/tables (nested Alluxio path) or mount another UFS to s3://my-bucket/data/tables (nested UFS path).
Suppose you have an existing mount point:
Alluxio Path:
/dataUFS Path:
s3://my-bucket/data
The following new mounts would be invalid:
/data/tables
hdfs://namenode/tables
❌ No
The Alluxio path /data/tables is nested inside the existing /data mount.
/tables
s3://my-bucket/data/tables
❌ No
The UFS path s3://.../data/tables is nested inside the existing s3://.../data mount.
Basic Mount Setup
Each mount is defined as an UnderFileSystem custom resource. The fields are the same regardless of UFS type:
Apply and verify:
See each storage system's guide for the UFS-specific values to use in path and mountOptions.
Use alluxio mount add to create a mount point, passing UFS-specific connection properties via --option:
Verify the mount is active:
See each storage system's guide for the UFS-specific URI scheme and property names.
Mounting Multiple Buckets
Each storage location requires its own mount with a unique mountPath. There is no hard limit on the number of mounts.
Create one UnderFileSystem CR per location (see each UFS guide for the mountOptions properties), then apply them together:
Run alluxio mount add once per location:
Per-mount credentials in mountOptions take precedence over global credentials, which is useful when mounts span multiple accounts or projects.
Kubernetes: Credential Management
Avoid putting credentials directly in UnderFileSystem CR mountOptions — they end up in version-controlled YAML and must be repeated for every mount. Two alternatives set credentials once at the cluster level:
Option A: spec.properties in the AlluxioCluster CR
Set UFS credential properties globally. Individual mounts inherit them, and per-mount mountOptions still override when needed:
Option B: Kubernetes Secret + pod environment variables
Store credentials in a Secret to keep them out of version control, then inject them as environment variables that the UFS driver reads:
For complete working examples with S3-specific property and environment variable names, see Setting Credentials in Kubernetes.
Managing Existing Mounts
Once a mount is active, use the following commands to inspect or remove it.
List mounts:
Remove a mount:
List mounts:
Remove a mount:
The mount table is stored in etcd. Alluxio components periodically poll etcd for the latest mount table, so additions and removals propagate automatically throughout the cluster.
Common Object Store Settings
The following settings apply to all object store UFS types (S3, OSS, BOS, COS, TOS, and S3-compatible).
Request Retry Policy
When the object store returns a transient error, Alluxio retries the request automatically. The following error codes are retried: 500, 502, 503 Slow Down, and 504. Client errors (4xx) are never retried.
Configure the retry behavior in conf/alluxio-site.properties or as mount options:
Supported Storage Systems
Cloud Object Storage
On-Premises Storage
Hadoop Distributed File System (HDFS)
The standard guide for connecting to an HDFS cluster.
Network Attached Storage (NAS)
For connecting to any POSIX-compliant file system mounted on your cluster, such as NFS.
Last updated