Are you looking for object storage software to host on your server?
I guess, yes?
There is plenty of cloud-based object storage like AWS S3 and other I mentioned here. However, if you need to host your data on your server, MinIO can help within your data centers.
MiniIO is open-source, popular distributed object storage software and compatible with S3. It’s enterprise-ready and known for its high performance.
You can use MinIO from a simple web application to large data distribution workloads for analytics and machine learning applications. It can help in many use cases.
Standard flat file storage
Multi-cloud data distribution
Is it bulky software?
Nope, it’s just around ~50MB and Kubernetes-friendly. It writes data and metadata as an object. This removes the dependency on having an additional database or software to store metadata and improve performance.
The below architecture from their official site.
Let’s explore some of the features worth noting.
High-performance – the title says. It’s capable of reading/writing at the speed of ~170GB/s. That’s a lot!
Scalable – go for clustering and scale as you need
Data protection using Erasure code method
Multiple encryption supported including AES-CBC, AES-256-GCM, ChaCha20
Compatible with common KMS
Application and user identity
Federation using etcd and CoreDNS
MinIO is a good choice for software defined storage. Let’s explore how to set things up.
Installing MinIO Server
You can install on Linux, Windows, macOS and through Kubernetes. Prefer building through source? Sure, you can do if you have Golang installed.
For this demonstration, I will install on CentOS which is hosted on Kamatera.
Login to the server
Create a folder under desired file system. Maybe minio-server
Navigate to the newly created folder and run the below wget command
It will download a binary file and should looks like this.
-rw-r--r-- 1 root root 48271360 Oct 18 21:57 minio
Make the file executable with chmod command
chmod 755 minio
Let’s start the MinIO as a server.
./minio server /data &
/data mentioned above is the file system where MinIO will store the objects.
Starting is quick and you should see the startup info as below.
Endpoint: http://xx.71.141.xx:9000 http://127.0.0.1:9000
Command-line Access: https://docs.min.io/docs/minio-client-quickstart-guide
$ mc alias set myminio http://xx.71.141.xx:9000 minioadmin minioadmin
Object API (Amazon S3 compatible):
Detected default credentials 'minioadmin:minioadmin', please change the credentials immediately using 'MINIO_ACCESS_KEY' and 'MINIO_SECRET_KEY'
Let’s access MinIO on browser with default credentials – minioadmin:minioadmin
Interface is very neat and clean but before anything, let’s change the default credential as it expose the risk. There is no option to change the admin credential through browser but environment variables.
To change MinIO default credential, we will export export the access and secret key as below and start the MinIO.
./minio server /data &
Now, it shouldn’t complain about default credential detection warning.
Let’s try to upload some files.
Click + icon at the right bottom and create a bucket
I uploaded a test file and immediately visible on browser
and, on the server
[root@gf-lab geekflare]# ls -ltr
-rw-r--r-- 1 root root 11 Oct 19 11:09 MinIO-Test.txt
If you click on file share button on the browser, you will get the shareable link and an option to set the expiry.
MinIO client is more than aws-cli which let you manage the storage. Client is available for Windows, macOS and Linux.
To install on Linux, run the following.
chmod 755 mc
Run the mc command to see the command help.
[root@gf-lab ~]# ./mc
mc - MinIO Client for cloud storage and filesystems.
mc [FLAGS] COMMAND [COMMAND FLAGS | -h] [ARGUMENTS...]
alias set, remove and list aliases in configuration file
ls list buckets and objects
mb make a bucket
rb remove a bucket
cp copy objects
mirror synchronize object(s) to a remote site
cat display object contents
head display first 'n' lines of an object
pipe stream STDIN to an object
share generate URL for temporary access to an object
find search for objects
sql run sql queries on objects
stat show object metadata
mv move objects
tree list buckets and objects in a tree format
du summarize disk usage recursively
retention set retention for object(s)
legalhold manage legal hold for object(s)
diff list differences in object name, size, and date between two buckets
rm remove objects
version manage bucket versioning
ilm manage bucket lifecycle
encrypt manage bucket encryption config
event manage object notifications
watch listen for object notification events
undo undo PUT/DELETE operations
policy manage anonymous access to buckets and objects
tag manage tags for bucket and object(s)
replicate configure server side bucket replication
admin manage MinIO servers
update update mc to latest release
--autocompletion install auto-completion for your shell
--config-dir value, -C value path to configuration folder (default: "/root/.mc")
--quiet, -q disable progress bar display
--no-color disable color theme
--json enable JSON lines formatted output
--debug enable debug output
--insecure disable SSL certificate verification
--help, -h show help
--version, -v print the version
Use 'mc --autocompletion' to enable shell autocompletion
Let’s try to list the file which I uploaded through mc command.
First, we need to set the alias to the storage we want to administer.
[root@gf-lab ~]# ./mc alias set minio http://xx.71.141.xx:9000/ geekflare geekpassword
Added `minio` successfully.
minio is the alias name. You can change this to whatever you want.
Depending on your application stack, you can interact with object storage programmatically using SDK. It supports Go, Python, Node.js, .NET, Haskell and Java.
Add MiniIO gateway to S3, Azure, NAS, HDFS to take advantage of MinIO browser and disk caching.
If you are looking for private, hybrid or multi-cloud object storage then MinIO looks promising. Give a try and you’ll fall in love with it. To test things, you can get Kamatera’s MinIO VM or install yourself on any Cloud server.
Google Knowledge Panel are the boxes that appear on Google when you search for specific entities such as people, organizations, or places. They are meant to give you a quick understanding through boxes about the information you are looking for.
Statistical analysis provides a systematic and objective approach to extracting meaningful insights from data. It helps in making evidence-based decisions, drawing reliable conclusions, and understanding the inherent variability and uncertainties in various processes and systems.