CloudGarageでオブジェクトストレージが使いたいならMinioが良いかも

VPSのような定額クラウド、[CloudGarage](https://cloudgarage.jp/)
ディスク速度が常に1GB/s超えという鬼速度で使えて不自由がないけど、
オブジェクトストレージがない...クラウドなのに...

#そこで Minio ですよ
MinioはAmazon S3互換のオブジェクトストレージを構築するソフトウェア。golang製。Apache License Version 2.0。

[https://www.minio.io/](https://www.minio.io/)
![alt](https://qiita-image.cloudremix.net/Minio.jpg)


使い方はとっても簡単で、バイナリをダウンロードして実行するだけ。

````
wget https://dl.minio.io/server/minio/release/linux-amd64/minio
chmod +x minio
./minio server /mnt/data
````
一応、Dockerでも動く（こっちが推奨？）

```
docker run -p 9000:9000 -v /mnt/data:/data -v /mnt/config:/root/.minio minio/minio server /data
```

と思ったら、WindowsでもMacでも動く。Goだから？

簡単に使える~~反面、分散化とか面倒なことができない~~ので、S3の検証とかに使うと吉。
CloudGarageだとNW課金なし&高速NWで使いやすい（後述）

#実際に使ってみる

ファイルの保存先（`/mnt/data`）を指定して、起動

````
wget https://dl.minio.io/server/minio/release/linux-amd64/minio
chmod +x minio
./minio server /mnt/data
````
これだと、既定のポート9000を使うので任意のポートを許可できないCloudGarageではファイアウォール全開放が必要となる。
よって、`--address`でポート指定を推奨
（ローカルで完結する場合は不要ないけどその場合ウェブUIが使えない）

```
./minio server --address 192.168.0.1:8080 /mnt/data
```

正常に起動するとアクセスキー等が表示されるのでメモ
（`.minio/config.json`に書き込まれている）

```
[root@minio ~]# ./minio server /mnt/data
Created minio configuration file successfully at /root/.minio
Endpoint:  http://192.168.0.1:9000  http://127.0.0.1:9000
AccessKey: XXXXXXXXXXXXXXXXXXXX
SecretKey: YYYYYYYYYYYYYYYYYYYY

Browser Access:
   http://192.168.0.1:9000  http://127.0.0.1:9000

Command-line Access: https://docs.minio.io/docs/minio-client-quickstart-guide
   $ mc config host add myminio http://192.168.0.8:9000 XXXXXXXXXXXXXXXXXXXX YYYYYYYYYYYYYYYYYYYY

Object API (Amazon S3 compatible):
   Go:         https://docs.minio.io/docs/golang-client-quickstart-guide
   Java:       https://docs.minio.io/docs/java-client-quickstart-guide
   Python:     https://docs.minio.io/docs/python-client-quickstart-guide
   JavaScript: https://docs.minio.io/docs/javascript-client-quickstart-guide
   .NET:       https://docs.minio.io/docs/dotnet-client-quickstart-guide

Drive Capacity: 48 GiB Free, 50 GiB Total
```

各言語毎にリファレンスがあるので、使い方には困らないと思う。

#ウェブUI
![alt](https://qiita-image.cloudremix.net/Minio-WebUI.jpg)
`Browser Access:`のURLにブラウザでアクセスすると使える
認証があるので上の`AccessKey`と`SecretKey`を入力する

ウェブUIではバケットの作成やファイルのアップロード・ダウンロードができる
簡単な操作だけなら十分。細かい操作は[Minio Client](https://docs.minio.io/docs/minio-client-complete-guide)を使う（Not Amazon S3互換）


とりあえずバケットの作り方。右下のプラスをクリックして`Create-Bucket`を選択
![alt](https://qiita-image.cloudremix.net/Minio-Create-Bucket.jpg)

バケット名を設定
![alt](https://qiita-image.cloudremix.net/Minio-Bucket-Name.jpg)

完成
![alt](https://qiita-image.cloudremix.net/Minio-Bucket.jpg)

#ベンチマーク
S3QLを使って他のインスタンスからマウント&[ディスクベンチマーク](https://github.com/buty4649/fio-cdm)
設定方法は[さくらのナレッジの記事](http://knowledge.sakura.ad.jp/knowledge/7371/)がそのまま使える。（CentOS7なら）

###結果

|      | Read(MB/s)|Write(MB/s)|
|:-:|:-:|:-:|
|  Seq |    275.343|    404.743|
| 512K |    276.234|    312.386|
|   4K |     17.897|     21.614|
|4KQD32|     15.987|     22.257|

とっても速い。OSがインストールできそう。
某クラウドの10倍ぐらいの速度？

参考：さくらのVPS、SSDプランのローカルディスクのベンチマーク

|      | Read(MB/s)|Write(MB/s)|
|:-:|:-:|:-:|
|  Seq |    201.179|    200.509|
| 512K |    147.211|    182.629|
|   4K |      7.069|      7.531|
|4KQD32|     31.510|      7.810|

#一言
CloudGarageのコスパは異常

#参考
[オブジェクトストレージ Minioで遊ぶ - あんパン](http://masawada.hatenablog.jp/entry/2015/12/15/000000)
[S3 互換のシンプルなオブジェクトストレージ Minio を使う - Qiita](https://qiita.com/rerofumi/items/21f7a22b8b824859754f)
[GitHub - minio/minio: Minio is an open source object storage server compatible with Amazon S3 APIs](https://github.com/minio/minio)
[Minio Quickstart Guide](https://docs.minio.io/)