Analysis of Minio

f11

What is minio?

Minio is a minimalistic object storage server that is API compatible with Amazon S3. Minio is another take on cloud storage. The goal of Minio is to enable application developers to build their own storage clouds, just like how Amazon, Google, and Facebook developed their own proprietary cloud storage.

Modern applications must deal with massive quantities of data. Databases are designed for storing and querying metadata. When it comes to storing data itself, cloud storage has emerged as the preferred choice for application developers. There is MongoDB for document store, Nodejs for JavaScript run-time, Angular for HTML framework, and Minio is designed to fill the gap for object storage.

Minio is based on a client-server model. The object storage client utility mc and libraries (Node.js, Go & Java) are ready for production use. Compatible with Amazon S3 cloud storage service, Minio will enable users to move large quantities of data in and out of cloud storage, mc provides Unix ls-, cp-, and rsync-like commands, which works for both local disk and cloud storage.

Why there is need of minio?

Majority of data on the Internet are unstructured, and technologist are predicting double-digit growth in this trend, it is important to take this challenge on priority. Unstructured data must be stored in an easy-to-access manner, and we must have the tools to make business sense from all these vast quantities of unstructured data we are collecting.

Minio Cloud Storage Stack: –

Minio cloud storage stack has three major components, the cloud storage server, Minio Client (also known as mc), a desktop client for seamless file management with Amazon S3 compatible servers and Minio SDKs that can be used by applications to interact with any Amazon S3 compatible server.

Minio Server: –

Minio cloud storage server is designed to be minimal and scalable. It is light enough to be bundled along with the application stack, like NodeJS and Redis. It can store unstructured data such as photos, videos, container/VM images, log files and archives.

Minio cloud storage server is based on a cloud-native architecture with support for multi-tenant use cases. One can keep each tenant relatively small and add new Minio server instances as and when required. This way, one can scale from few hundred tenants to millions, still the complexity does not scale proportionately. Millionth instance of Minio server is as simple as its first instance.

  • Deployment: –

Minio server is hardware agnostic and works on a variety of physical and virtual/container environments. This essentially reduces infrastructure to containers running on commodity servers with local disks and still have enterprise level data safety and scalability.

Minio server can be installed on physical or virtual machines or launched as Docker containers and deployed on container orchestration platforms like kubernetes, Mesosphere, and Docker Swarm.

Minio Client: –

Minio Client (mc) provides a modern alternative to UNIX commands like ls, cat, cp, mirror, diff etc. It supports file-systems and¬†Amazon S3¬†compatible cloud storage service (AWS Signature v2 and v4). You can use ‘mc’ to talk to any Amazon S3 compatible cloud storage server. Minio Client is supported on¬†Linux,¬†Mac¬†and¬†Windows¬†platforms.

Minio Client SDK: –

Minio Client SDK provides simple APIs to access any Amazon S3 compatible object storage server. Minio Client SDK is currently available for Go, Java, Python, JavaScript

 

Minio Server Modes: –

Minio server supports default, erasure coded, and distributed modes.

  • Default Mode: – Minio server in default mode has a single Minio server instance with a single backing disk.
  • Erasure Coded Mode: – To enable erasure coded mode, run Minio server in default mode with a minimum of four disk drives.
  • Distributed Mode: – Minio server in distributed mode lets you pool multiple drives (even on different machines) into a single object storage server. As drives are distributed across several nodes, distributed Minio can withstand multiple node failures and yet ensure full data protection.

Software and Hardware Requirement for Minio: – (For POC)

  • We need CentOS machine to install docker.
  • Machine must have 2-4 GB RAM with 10GB Hardisk.

¬†¬†¬† Installation of Minio on Ubuntu 16.04: –

  • Installing Minio Server: –
  1. Download the installation package for Minio Server by making use of the wget command and its download link in the following manner.

      root@linuxhelp:~# wget https://dl.minio.io/server/minio/release/linux-amd64/minio

2. Once the file is downloaded, give executable permission for your Minio file by using the following command.

root@linuxhelp:~# chmod +x minio

3. You need to run the following command as well. Once you run it, you’ll get the output as given below. The output contains the System IP,
Access key and Secret key. You need to copy the IP given it it.

                     root@linuxhelp:~# ./minio server /mnt/minio

Created minio configuration file successfully at /root/.minio

Endpoint:  http://localhost:9000 http:// localhost:9000

AccessKey: 9O8QN4R9DB01VJX7BEYQ

SecretKey: NZ4p2KzyESKCIECDkBI2Dmb2nAFsGSxDc30Uuixz

Browser Access:

http:// localhost:9000 http:// localhost:9000

Command-line Access: https://docs.minio.io/docs/minio-client-quickstart-guide

$ mc config host add myminio http:// localhost:9000 9O8QN4R9DB01VJX7BEYQ NZ4p2KzyESKCIECDkBI2Dmb2nAFsGSxDc30Uuixz

4. Switch to browser and paste the copied IP and then also in the following page we need to give our secret key and access key, which we can
take from the output of the above command. Click on the login icon.

f1

5. Once we get into the Minio browser, the icon looks like the one in the following image.

f2

 

Minio Dashboard

  1. First the login prompt is display. Login to dashboard.

 

f3

 

2. Minio Dashboard

 

f4

 

On the left hand-side you will see the existing buckets (like 0000,111,1225, etc.) which is provided by minio. We can upload the objects on the existing buckets (i.e. 0000).

3. As you see in the diagram the red highlighted marking implying the two processes viz. Create bucket and upload objects on bucket existing
bucket viz. 0000.

 

f5

 

4. Create Bucket. Here I given the name for bucket is TestB-click2cloud. We can upload the objects inside that bucket.

 

f6

 

5. Now we are going to upload the object on 0000 bucket.

 

f7

 

6. After clicking on upload file tab.

 

f8

 

7. Object is uploading

 

f9

 

8. We can share the objects by using shareable links.

 

f10

 

On the shareable you will see the path

https://play.minio.io:9000/0000/OpenSDS%20Analysis.doc

in which 0000 is the bucket whereas OpenSDS%20Analysis.doc is the object inside the bucket.

Note: РThe above-mentioned path is not the whole path. It contain  detailed path.

Leave a Reply