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