From 1c0c3369c94ebec812e87442b963ed8a5e1fdb4d Mon Sep 17 00:00:00 2001 From: Nitish Tiwari Date: Thu, 15 Mar 2018 03:52:17 +0530 Subject: [PATCH] Cleanup large bucket support documents (#5641) --- docs/large-bucket/DESIGN.md | 37 ++++++++++++++++++++++--------------- docs/large-bucket/README.md | 26 +++++++++++++++----------- 2 files changed, 37 insertions(+), 26 deletions(-) diff --git a/docs/large-bucket/DESIGN.md b/docs/large-bucket/DESIGN.md index 5511e70d7..5879fded3 100644 --- a/docs/large-bucket/DESIGN.md +++ b/docs/large-bucket/DESIGN.md @@ -1,4 +1,10 @@ +# Large Bucket Support Design Guide [![Slack](https://slack.minio.io/slack?type=svg)](https://slack.minio.io) + +This document explains the design approach, advanced use cases and limitations of the large bucket feature. If you're looking to get started with large bucket support, we suggest you +go through the [getting started document](https://github.com/minio/minio/blob/master/docs/large-bucket/README.md) first. + ## Command-line + ``` NAME: minio server - Start object storage server. @@ -14,29 +20,18 @@ DIR: directories in a distributed setup are encoded as HTTP(s) URIs. ``` -## Limitations -- Minimum of 4 disks are needed for distributed erasure coded configuration. -- Maximum of 32 distinct nodes are supported in distributed configuration. - ## Common usage -Single disk filesystem export -``` -minio server dir1 -``` - -Standalone erasure coded configuration with 4 disks. -``` -minio server dir1 dir2 dir3 dir4 -``` Standalone erasure coded configuration with 4 sets with 16 disks each. + ``` minio server dir{1...64} ``` Distributed erasure coded configuration with 64 sets with 16 disks each. + ``` -minio server http://host{1...16}/export{1...64} - good +minio server http://host{1...16}/export{1...64} ``` ## Other usages @@ -69,6 +64,9 @@ minio server http://rack1-host{1...8}.example.net/export{1...16} http://rack2-ho ``` ### Expected expansion for double ellipses + +Minio server internally expands ellipses passed as arguments. Here is a sample expansion to demonstrate the process + ``` minio server http://host{1...4}/export{1...8} ``` @@ -110,12 +108,14 @@ Expected expansion ``` ## Backend `format.json` changes -New `format.json` has new fields + +`format.json` has new fields - `disk` is changed to `this` - `jbod` is changed to `sets` , along with this change sets is also a two dimensional list representing total sets and disks per set. A sample `format.json` looks like below + ```json { "version": "1", @@ -158,6 +158,7 @@ type format struct { ``` ### Current format + ```go type formatXLV1 struct{ format @@ -170,6 +171,7 @@ type formatXLV1 struct{ ``` ### New format + ```go type formatXLV2 struct { Version string `json:"version"` @@ -182,3 +184,8 @@ type formatXLV2 struct { } `json:"xl"` } ``` + +## Limits + +- Minimum of 4 disks are needed for erasure coded configuration. +- Maximum of 32 distinct nodes are supported in distributed configuration. diff --git a/docs/large-bucket/README.md b/docs/large-bucket/README.md index 0508c4c10..d0c3cf873 100644 --- a/docs/large-bucket/README.md +++ b/docs/large-bucket/README.md @@ -1,17 +1,21 @@ # Large Bucket Support Quickstart Guide [![Slack](https://slack.minio.io/slack?type=svg)](https://slack.minio.io) [![Go Report Card](https://goreportcard.com/badge/minio/minio)](https://goreportcard.com/report/minio/minio) [![Docker Pulls](https://img.shields.io/docker/pulls/minio/minio.svg?maxAge=604800)](https://hub.docker.com/r/minio/minio/) [![codecov](https://codecov.io/gh/minio/minio/branch/master/graph/badge.svg)](https://codecov.io/gh/minio/minio) -Minio large bucket support lets you use more than 16 disks by creating a number of smaller sets of erasure coded units, these units are further combined into a single namespace. Minio large bucket support is developed to solve for several real world use cases, without any special configuration changes. Some of these are +Minio erasure code limits the number of disks in a deployment to 16. This allows enough storage space for a single deployment to hold a tenant's data. However, there are use cases which +may need larger number of disks/storage space upfront. Keeping this in consideration, we added large bucket support. -- You already have racks with many disks. -- You are looking for large capacity up-front for your object storage needs. +The feature is called large bucket as it allows a single bucket to expand over multiple erasure code deployment sets, without any special configuration. -# Get started -If you're aware of distributed Minio setup, the installation and running remains the same. Newer syntax to use a `...` convention to abbreviate the directory arguments. Remote directories in a distributed setup are encoded as HTTP(s) URIs which can be similarly abbreviated as well. +With large bucket support, you can use more than 16 disks upfront while deploying the Minio server. Internally Minio creates multiple smaller erasure coded sets, and these sets +are further combined into a single namespace. This document gives a brief introduction on how to get started with large bucket deployments. To explore further on advanced uses and +limitations, refer to the [design document](https://github.com/minio/minio/blob/master/docs/large-bucket/DESIGN.md). -## 1. Prerequisites +## Get started +If you're aware of distributed Minio setup, the installation and running remains the same. Only new addition to the syntax is a `...` convention to abbreviate the directory arguments. Remote directories in a distributed setup are encoded as HTTP(s) URIs which can be similarly abbreviated as well. + +### 1. Prerequisites Install Minio - [Minio Quickstart Guide](https://docs.minio.io/docs/minio). -## 2. Run Minio on many disks +### 2. Run Minio on many disks To run Minio large bucket instances, you need to start multiple Minio servers pointing to the same disks. We'll see examples on how to do this in the following sections. *Note* @@ -19,7 +23,7 @@ To run Minio large bucket instances, you need to start multiple Minio servers po - All the nodes running distributed Minio need to have same access key and secret key. To achieve this, we export access key and secret key as environment variables on all the nodes before executing Minio server command. - The drive paths below are for demonstration purposes only, you need to replace these with the actual drive paths/folders. -### Minio large bucket on Ubuntu 16.04 LTS standalone +#### Minio large bucket on Ubuntu 16.04 LTS server (standalone) You'll need the path to the disks e.g. `/export1, /export2 .... /export24`. Then run the following commands on all the nodes you'd like to launch Minio. ```sh @@ -28,8 +32,8 @@ export MINIO_SECRET_KEY= minio server /export{1...24} ``` -### Minio large bucket on Ubuntu 16.04 LTS servers -You'll need the path to the disks e.g. `/export1, /export2 .... /export16`. Then run the following commands on all the nodes you'd like to launch Minio. +#### Minio large bucket on Ubuntu 16.04 LTS servers (distributed) +You'll need the path to the disks e.g. `http://host1/export1, http://host2/export2 .... http://host4/export16`. Then run the following commands on all the nodes you'd like to launch Minio. ```sh export MINIO_ACCESS_KEY= @@ -37,7 +41,7 @@ export MINIO_SECRET_KEY= minio server http://host{1...4}/export{1...16} ``` -## 3. Test your setup +### 3. Test your setup To test this setup, access the Minio server via browser or [`mc`](https://docs.minio.io/docs/minio-client-quickstart-guide). You’ll see the uploaded files are accessible from the all the Minio endpoints. ## Explore Further