Skip to content

Operations

Scope

Production deployment, multi-tenant setup, erasure coding, lifecycle policies, and monitoring.

Deployment Patterns

Distributed Mode

# 4-node distributed deployment (minimum for erasure coding)
minio server http://minio{1...4}/data{1...4} \
  --console-address ":9001"
Topology Nodes Drives/Node Erasure Set Parity
Minimal HA 4 4 16 drives EC:4 (default)
Production 8 8 64 drives EC:4
Large scale 16+ 12 192+ drives EC:4-8

Kubernetes Operator

# Install MinIO Operator
kubectl apply -f https://raw.githubusercontent.com/minio/operator/master/resources/base/crds/minio.min.io_tenants.yaml
helm install operator minio/operator -n minio-operator --create-namespace

Bucket Lifecycle

{
  "Rules": [
    {
      "ID": "expire-old-versions",
      "Status": "Enabled",
      "NoncurrentVersionExpiration": {
        "NoncurrentDays": 30
      }
    },
    {
      "ID": "transition-to-tier",
      "Status": "Enabled",
      "Transition": {
        "Days": 90,
        "StorageClass": "GLACIER"
      }
    }
  ]
}

Performance Tuning

Setting Default Tuned Impact
Erasure parity EC:4 EC:2 (speed) or EC:8 (durability) Write speed vs redundancy
Batch replication OFF ON Cross-site data protection
Scanner speed default fast Faster healing at cost of CPU

Monitoring

# MinIO client diagnostics
mc admin info myminio
mc admin prometheus generate myminio

# Key Prometheus metrics
minio_s3_requests_total
minio_node_disk_used_bytes
minio_node_disk_free_bytes
minio_inter_node_traffic_sent_bytes

Common Issues

Issue Diagnosis Fix
Drive offline mc admin info Replace drive, healing auto-starts
Slow uploads Network or disk I/O Check inter-node bandwidth, use NVMe
Bucket policy denied mc admin policy info Review IAM policy attachment
Disk full mc admin info --json Add drives, enable lifecycle deletion

Commands & Recipes

⚠️ MinIO OSS was archived Feb 2026. These recipes work with existing installations and AIStor.

Installation

# Single node (dev)
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
./minio server /data --console-address ":9001"

# Install mc CLI
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc && sudo mv mc /usr/local/bin/

mc CLI Operations

# Configure alias
mc alias set myminio http://localhost:9000 minioadmin minioadmin

# Bucket operations
mc mb myminio/mybucket
mc ls myminio/

# Upload/download
mc cp file.txt myminio/mybucket/
mc cp myminio/mybucket/file.txt ./downloaded.txt

# Mirror (sync)
mc mirror /local/data/ myminio/mybucket/

# Check disk usage
mc du myminio/mybucket

Kubernetes (Operator)

# Install MinIO Operator
kubectl apply -k "github.com/minio/operator?ref=v6.0.0"

# Create tenant
kubectl apply -f - <<EOF
apiVersion: minio.min.io/v2
kind: Tenant
metadata:
  name: myminio
spec:
  pools:
    - servers: 4
      volumesPerServer: 4
      volumeClaimTemplate:
        spec:
          accessModes: [ReadWriteOnce]
          resources:
            requests:
              storage: 100Gi
EOF

Sources