MinIO is vocal about its recommendation for multi-node multi-disk architecture. The rationale behind this design is to make the most out of MinIO’s object-level erasure coding capabilities. Unlike traditional erasure coding, which breaks an object into multiple fragments, MinIO’s erasure coding operates at the object level. It creates parity blocks for each object and distributes these, along with the object itself, across multiple drives and nodes. This ensures data availability and resilience without fragmenting the object.
However, what if your storage needs are already being met by a SAN or NAS that provides redundancy and reliability at the storage layer? Perhaps you want to utilize S3-compatible storage as a target for your Veeam backups? In these cases, MinIO’s SNSD configuration offers a compelling alternative that lets you make the most of your existing infrastructure. Are you okay with not following MinIO’s recommendation?
If so, MinIO’s Single-Node Single-Drive (SNSD) configuration comes into play. The SNSD configuration allows you to use MinIO’s S3-compatible interface, including features like immutability, while fully leveraging your existing SAN or NAS architecture.
If you’re using a fresh Ubuntu VM and want to set up MinIO quickly, follow along here:
# update the system
sudo apt update
sudo apt upgrade
# download and install minio server, minio client and certgen utility
wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio_20230804174021.0.0_amd64.deb -O minio.deb
sudo dpkg -i minio.deb
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
sudo mv mc /usr/local/bin/
wget https://github.com/minio/certgen/releases/latest/download/certgen-linux-amd64 -O certgen
chmod +x certgen
sudo mv certgen /usr/local/bin/
# configure a minio-user account
sudo groupadd -r minio-user
sudo useradd -M -r -g minio-user minio-user
# setup the folders minio-user will need
sudo chown minio-user:minio-user /minio-01
sudo mkdir /home/minio-user
sudo chown minio-user:minio-user /home/minio-user
sudo mkdir -p /home/minio-user/.minio/certs
sudo chown -R minio-user:minio-user /home/minio-user/.minio
# configure minio service
# see minio.service scaffold - this is where you set your strong minio admin username and password
sudo vi /etc/default/minio
sudo systemctl start minio.service
# make a self-signed cert for minio - note setting SANs in the certgen -host parameter
# this command outputs the certs in the local directory
certgen -ecdsa-curve P256 -common-name "mhostname.mdomainname.com" -org-name "yer org" -host "mhostname.mdomainname.com,mhostname,10.10.10.10"
# MinIO looks here for the certs at startup (make sure you are in the directory where certgen output the files)
sudo cp ./private.key /home/minio-user/.minio/certs/
sudo cp ./public.crt /home/minio-user/.minio/certs/
sudo chown minio-user:minio-user /home/minio-user/.minio/certs/private.key
sudo chown minio-user:minio-user /home/minio-user/.minio/certs/public.crt
# restart minio and fire up your browser to check certs
sudo systemctl restart minio
sudo systemctl status minio
# make sure the service is enabled
sudo systemctl enable minio
sudo systemctl status minio
There you have it! Fire up a browser and go to https://yourhostname:9000/ and login with the user you defined in the /etc/default/minio configuration file