Core Settings

This page covers settings that control core behavior of the MinIO AIStor process.

You can establish or modify settings by defining:

  • an environment variable on the host system prior to starting or restarting the AIStor Server. Refer to your operating system’s documentation for how to define an environment variable.
  • a configuration setting using mc admin config set.

If you define both an environment variable and the similar configuration setting, MinIO AIStor uses the environment variable value.

Some settings have only an environment variable or a configuration setting, but not both.

Each configuration setting controls fundamental MinIO AIStor behavior and functionality. Test configuration changes in a lower environment, such as DEV or QA, before applying to production.

Server CLI options

MINIO_OPTS

Optional

Set a string of parameters to use when starting the AIStor Server. This environment variable only applies for systems using the default systemd service installed using first-party DEB or RPM packages. See Install MinIO AIStor on Linux for more information.

Use the /etc/default/minio file and create an environment variable MINIO_OPTS for specifying parameters to append to the minio process started with systemctl service start minio:

# Editing /etc/default/minio

MINIO_OPTS=' --console-address=":9001" --ftp="address=:8021" --ftp="passive-port-range=30000-40000" '

If running minio on the command line or using a custom systemd unit file that omits MINIO_OPTS, use MINIO_ARGS instead:

export MINIO_ARGS=' --console-address=":9001" --ftp="address=:8021" --ftp="passive-port-range=30000-40000" '

minio server ...

# The above is equivalent to running the following:
# minio server --console-address=":9001" \
#              --ftp="address=:8021"     \
#              --ftp="passive-port-range=30000-40000"

There is no configuration setting for this variable, as these settings apply at server startup.

MinIO AIStor license

MINIO_LICENSE

Path to the minio.license file downloaded from SUBNET.

This setting does not have a configuration setting option.

Storage volumes

MINIO_VOLUMES

The directories or drives the minio server process uses as the storage backend.

Functionally equivalent to setting minio server DIRECTORIES. Use this value when configuring MinIO AIStor to run using an environment file.

This setting does not have a configuration setting option.

Address

MINIO_ADDRESS

Specifies the hostname and port on which the server listens for incoming connections. Equivalent to the following:

The order of precedence is as follows:

  1. Configuration file setting
  2. Environment variable
  3. CLI parameter

Use this value when configuring MinIO AIStor to run using an environment file.

This setting does not have a configuration setting option.

Console Address

MINIO_CONSOLE_ADDRESS

Specifies the hostname and port on which the web console listens for incoming connections. Equivalent to the following:

The order of precedence is as follows:

  1. Configuration file setting
  2. Environment variable
  3. CLI parameter

Use this value when configuring MinIO AIStor to run using an environment file.

This setting does not have a configuration setting option.

Environment variable file path

MINIO_CONFIG_ENV_FILE

Specifies the full path to the file the Object Store process uses for loading environment variables.

For systemd-managed files, set this value to the path of the environment file (/etc/default/minio) to direct MinIO AIStor to reload changes to that file when using mc admin service restart to restart the deployment.

This setting does not have a configuration setting option.

Domain

MINIO_DOMAIN

Enables Virtual Host-style requests to the MinIO AIStor deployment. Set the value to the Fully Qualified Domain Name (FQDN) for MinIO AIStor to accept incoming virtual host requests.

Omitting this setting directs MinIO AIStor to only accept the default path-style requests.

For example, consider a MinIO AIStor deployment with an assigned FQDN of minio.example.net.

  • With path-style lookups, applications can access the bucket using its full path as minio.example.net/mybucket.
  • With virtual-host lookups, application can access the bucket as a virtual host as mybucket.minio.example.net/.

To configure more than one domain, set MINIO_DOMAIN to a comma-separated list of FQDNs, such as minio.example.net,s3.example.net.

This setting does not have a configuration setting option.

Configure virtual-host-style requests

Setting MINIO_DOMAIN alone is not sufficient. Because each bucket is addressed as a subdomain of the configured domain (mybucket.minio.example.net), the surrounding DNS and TLS configuration must also resolve and secure those subdomains.

To support virtual-host-style addressing for a domain such as minio.example.net:

  1. Set MINIO_DOMAIN on every MinIO AIStor node.

    Set the environment variable to the domain (or comma-separated list of domains) on each server in the deployment and restart the nodes so the setting takes effect.

    export MINIO_DOMAIN=minio.example.net
  2. Create a wildcard DNS record.

    Add a wildcard DNS entry that resolves *.minio.example.net to the deployment (or to the load balancer in front of it), in addition to the existing record for the bare minio.example.net domain. Without the wildcard record, requests to mybucket.minio.example.net cannot reach the deployment.

  3. Use a TLS certificate that covers the wildcard domain.

    Virtual-host-style requests are sent to bucket subdomains, so the TLS certificate presented by MinIO AIStor (or by the load balancer terminating TLS) must include both the bare domain and the wildcard domain in its Subject Alternative Name (SAN) list:

    • minio.example.net
    • *.minio.example.net

    A certificate issued only for minio.example.net causes TLS hostname-verification errors when clients connect to mybucket.minio.example.net. Wildcard certificates match only a single label, so a nested path such as mybucket.sub.minio.example.net is not covered.

  4. Configure any load balancer or proxy to forward the wildcard host.

    If a load balancer or reverse proxy sits in front of the deployment, configure it to route *.minio.example.net to the MinIO AIStor nodes and to preserve the original Host header so MinIO AIStor can resolve the bucket from the request.

After completing these steps, applications can address buckets either by path (minio.example.net/mybucket) or as a virtual host (mybucket.minio.example.net).

Scanner speed

scanner speed

Manage the maximum wait period for the scanner when balancing MinIO AIStor read/write performance to scanner processes.

MinIO AIStor utilizes the scanner for bucket replication, site replication, lifecycle management, and healing tasks.

Valid values include:

SettingDescription
fastestRemoves scanner wait on read/write latency, allowing the scanner to operate at full-speed and IOPS consumption.
This setting may result in reduced read and write performance.
fastSets a short scanner wait time on read/write latency, allowing the scanner to operate at a higher speed and IOPS consumption.
This setting may result in reduced read and write performance.
defaultSets a moderate scanner wait time on read/write latency, allowing the scanner to operate at a balanced speed and IOPS consumption.
This setting seeks to maintain read and write performance while allowing ongoing scanner activity.
slowSets a medium scanner wait time on read/write latency, where the scanner operates at a reduced speed and IOPS consumption.
This setting allows better read and write performance while reducing scanner performance.

May impact scanner-dependent features, such as lifecycle management and replication.
slowestSets a large scanner wait time on read/write latency, where the scanner operates at a substantially lower speed and IOPS consumption.
This setting prioritizes read and write operations at the potential cost of scanner operations.

May impact scanner-dependent features, such as lifecycle management and replication.

Data compression

The following section documents settings for enabling data compression for objects. See Data Compression for tutorials on using these configuration settings.

All of the settings in this section fall under the compression top-level key.

Enable compression

Optional

Set to on to enable data compression for new objects. Defaults to off.

Enabling or disabling data compression does not change existing objects.

Allow encryption

Optional

Set to on to encrypt objects after compressing them. Defaults to off.

Compression extensions

Optional

Comma-separated list of the file extensions to compress. Setting a new list of file extensions replaces the previously configured list. Defaults to ".txt, .log, .csv, .json, .tar, .xml, .bin".

Specify "*" to direct MinIO AIStor to compress all supported file types.

MinIO AIStor does not support compressing file types on the Excluded File Types list, even if explicitly specified in this argument.

Compression MIME types

Optional

Comma-separated list of the MIME types to compress. Setting a new list of types replaces the previously configured list. Defaults to "text/*, application/json, application/xml, binary/octet-stream".

Comments

This setting does not have an environment variable option. Use the configuration setting instead.

Optional

Specify a comment to associate with the data compression configuration.

Erasure set drive count

MINIO_ERASURE_SET_DRIVE_COUNT

Optional

The erasure set size to apply for all drives in a given server pool.

By default, MinIO AIStor limits erasure set sizes to 16 drives for optimal performance and network efficiency. For deployments requiring larger set sizes, you can set this variable to a value between 17 and 32 starting with AIStor Server RELEASE.2026-02-02T23-40-11Z.

  • Default: Maximum 16 drives per set (automatic detection)
  • Configurable range: 17-32 drives per set

For example, with MINIO_ERASURE_SET_DRIVE_COUNT=32 and 128 total drives, MinIO AIStor creates 4 sets with 32 drives each. Without this variable, the same configuration creates 8 sets with 16 drives each.

If you set this value, you must do so before you initialize the cluster. The selected stripe size is immutable after the cluster has been initialized and affects any future server pools added to the cluster.

MinIO SUBNET users should log in and open an issue to discuss stripe size settings prior to implementing them in any environment.

This setting does not have a configuration setting option.

Changes to stripe size have significant impact to deployment functionality, availability, performance, and behavior. MinIO AIStor’s stripe selection algorithms set appropriate defaults for the majority of workloads. Consult with MinIO AIStor engineering before changing the stripe size from the default.

Maximum drive usage

Optional

The maximum percentage of drive capacity that can be used before MinIO AIStor returns HTTP 507 (Insufficient Storage) errors for new write operations.

Specify a value between 50 and 99. Defaults to 99.

When drive usage exceeds this threshold, the following operations return 507 errors:

  • Single object uploads (PUT)
  • Multipart uploads
  • Copy operations
  • Append operations

Other operations continue normally, including:

  • Healing
  • Decommissioning
  • Rebalancing
  • Listing operations
  • Metadata updates

This setting helps prevent drives from becoming completely full, which can cause operational issues.

Requires AIStor Server RELEASE.2026-02-02T23-40-11Z or later.

Drive operation timeout

Optional

The maximum time to wait for a single drive operation to complete. Defaults to 30s.

Specify a Go duration string (for example, 30s, 1m, 2m30s). The minimum duration allowed is 1s.

Increase this value for deployments with slower storage (such as HDDs) or high-latency network-attached storage. Decrease this value to fail faster on unresponsive drives.

Drive pre-allocation

Optional

Enables file pre-allocation using posix_fallocate when writing objects. Defaults to off.

Set to on to pre-allocate disk space before writing data. This can reduce fragmentation on some filesystems and improve write performance for large objects.

Maximum object versions

Optional

Defines the default maximum versions to allow per object.

By default, MinIO AIStor allows up to the maximum value of an Int64 versions per object, or over 9.2 quintillion.

Arbitrarily high versions per objects may cause performance degradation on some operations, such as LIST. This is especially true on systems running budget hardware or spinning drives (HDD). Applications or workloads which produce thousands or more versions per object may require design or architecture review to mitigate potential performance degradations.

Setting a limit of no more than 100 should provide enough versions for most typical use cases.

Cross-origin resource sharing (CORS)

Cross-Origin Resource Sharing (CORS) is a browser security mechanism that controls which web domains can access your object storage from client-side JavaScript. When a web application running on one domain attempts to access objects in MinIO AIStor from a different domain, the browser checks CORS policies to determine if the request should be allowed. See the Mozilla CORS documentation for more information.

MinIO AIStor supports two levels of CORS configuration:

  • Global CORS: Applies to all API endpoints and buckets using server-level settings
  • Bucket-specific CORS: Fine-grained control per bucket with up to 100 rules using mc cors commands

Bucket-level CORS configurations override the global settings.

Global CORS allowed origins

Optional

Specify a comma-separated list of origins allowed to access the MinIO AIStor deployment. Defaults to * (all origins).

When set to *, MinIO AIStor allows requests from any origin. For production deployments, specify explicit origins for better security.

Allow credentials with wildcard origins

Optional

Controls whether credentials are allowed when wildcard origin (*) is configured. Defaults to on for backwards compatibility.

When set to on and cors_allow_origin is *, MinIO AIStor echoes back the requesting origin with Access-Control-Allow-Credentials: true. While browsers accept this, it does not follow the CORS specification correctly.

When set to off, MinIO AIStor does not return the Access-Control-Allow-Origin header for wildcard configurations, providing stricter CORS compliance.

For security hardening in production environments, set this to off to enforce proper CORS behavior according to the specification.

O_DIRECT writes

Control O_DIRECT behavior for read and write operations. O_DIRECT bypasses the operating system page cache, reading from and writing directly to the disk.

Valid values:

  • on or read+write - Enable O_DIRECT for both reads and writes.
  • read - Enable O_DIRECT for reads only. Writes go through the page cache.
  • write - Enable O_DIRECT for writes only. Reads go through the page cache.
  • off - Disable O_DIRECT for both reads and writes.

Disabling O_DIRECT for writes can cause the page cache to grow unbounded, leading to memory pressure and potential out-of-memory conditions. It is never recommended to set this to off in production. Only disable for testing purposes with careful monitoring of system memory.

The default value is on.

Root access

Enable or disable root credential access for all API calls, including S3 and admin operations.

Valid values are on or off.

The default value is on.

Synchronous events

Deprecated

api sync_events is deprecated. It still works, but may be removed at any time.

Enable synchronous bucket notifications. When enabled, MinIO AIStor waits for notification delivery before completing the API response.

Valid values are on or off.

The default value is off.

Thread pressure check

Enable or disable thread pressure monitoring for health endpoints. When enabled, MinIO AIStor tracks goroutine usage relative to system limits and can report health degradation through health check responses.

Valid values are on or off.

The default value is on.

Thread pressure warning threshold

Set the thread pressure warning threshold as a ratio between 0 and 1. When thread usage exceeds this ratio of the system limit, MinIO AIStor logs a warning.

The default value is 0.50.

Thread pressure critical threshold

Set the thread pressure critical threshold as a ratio between 0 and 1. When thread usage exceeds this ratio, health endpoints return HTTP 429 (Too Many Requests).

The default value is 0.85.

Maximum concurrent API requests

Optional

Set the maximum number of concurrent S3 and admin API requests allowed across all nodes of the cluster. The configured value is divided across the total node count to size each node’s per-node request pool.

The default value is auto, where MinIO AIStor automatically calculates the limit based on available host RAM. See Memory Requirements for the formula used to derive the per-node limit.

Set an explicit integer to override the auto-derived limit. Reducing the concurrent request limit is a common tuning step for deployments using spinning (HDD) drives with high-concurrency workloads, where converting random I/O into sequential I/O improves drive efficiency.

mc admin config set ALIAS api requests_max=1600
mc admin service restart ALIAS

Or set the equivalent environment variable:

export MINIO_API_REQUESTS_MAX=1600

This is a server-wide concurrency cap distinct from the finer-grained per-bucket and per-access-key limits configured through mc qos rules.

List quorum

Optional

Set the minimum acceptable quorum for list operations.

Valid values are optimal, reduced, disk, strict, and auto.

The default value is strict.

Stale multipart upload expiry

Optional

Set the duration after which an in-progress multipart upload with no activity is considered stale and eligible for automatic cleanup. Accepts a Go duration string such as 24h.

The default value is 24h.

This automatic, server-wide background cleanup is distinct from the per-bucket AbortIncompleteMultipartUpload lifecycle action.

Stale multipart upload cleanup interval

Optional

Set how often MinIO AIStor scans for and removes stale multipart uploads. Accepts a Go duration string such as 6h.

The default value is 6h.

POST policy clock skew

Optional

Set how far in the past a POST policy expiration may be and still be accepted. Accepts a non-negative Go duration string such as 15m. A negative value is rejected at startup.

The default value is 0s, which matches Amazon S3: an expired policy is refused.

Raise this only to tolerate clients whose clocks lag or whose signatures are cached. Because the value extends the window in which a signed policy stays usable, keep it as small as the affected clients allow.

Cluster readiness deadline

Optional

Set the deadline for the cluster readiness check. Accepts a Go duration string such as 10s.

The default value is 10s.

Remote transport deadline

Optional

Set the deadline for API requests on remote transports while proxying between federated instances. Accepts a Go duration string such as 2h.

The default value is 2h.

Trash cleanup interval

Optional

Set how often MinIO AIStor permanently deletes objects from the .trash folder. Accepts a Go duration string such as 5m.

The default value is 5m.

Trusted upstream proxies

Optional

Specify a comma-separated list of upstream proxy IPs or CIDRs whose X-Forwarded-For, X-Real-IP, and RFC 7239 Forwarded headers are honored when deriving the client source IP. The derived source IP is used to evaluate aws:SourceIp IAM and bucket-policy conditions.

Accepted values:

  • An empty value (the legacy default) trusts all proxies. This preserves backward compatibility but allows any authenticated caller to spoof their source IP by injecting a forged forwarded header.
  • - trusts no proxies. Forwarded headers are ignored entirely and the immediate TCP peer is always used as the source IP. Use this when no reverse proxy sits in front of MinIO AIStor.
  • A comma-separated list of IPs or CIDRs trusts only those peers. The X-Forwarded-For chain is walked right-to-left, and the first hop outside the trusted set becomes the source IP. Requests from untrusted peers are not rejected; they simply cannot dictate the source IP.

The empty default trusts all proxies. For deployments that rely on aws:SourceIp policy conditions, specify the trusted proxy IPs or CIDRs explicitly, or set this to - when no reverse proxy is present, to prevent source-IP spoofing.

Remote NTP server

This setting does not have a configuration setting option.

Optional

Set a remote NTP server endpoint used as the time source instead of the system clock when computing object-lock and retention dates.

By default, MinIO AIStor uses the server’s system time to compute retention dates.

Parquet S3 Select

This setting does not have a configuration setting option.

Optional

Enable S3 Select support for Parquet-formatted objects.

The default value is off as a security mitigation, since hostile crafted Parquet input can crash the server. While disabled, the server rejects Parquet queries with the error parquet format parsing not enabled on server.

Set to on to enable Parquet S3 Select queries. Only enable this in controlled environments where it is safe to assume no hostile content can be uploaded to the cluster.

Extended object naming

Optional

MINIO_OBJECT_NAMING

Specifies the mode to use when writing objects to disk. Set to extended to have MinIO AIStor convert special characters to allow writing on a filesystem.

Defaults to safe, which does not allow special characters in object or prefix names.

Requires MinIO AIStor RELEASE.2025-12-20T04-58-37Z or later. Must be enabled at first run of MinIO AIStor.

For more details on this mode, see Extended Backend.

This setting does not have a configuration setting option.

On this page