オブジェクトストレージサーバー Minio を簡単に試してみた on Windows
前提
- Windows Server 2016
- Minio Verion: 2018-06-29T02:11:29Z
Minio とは?
- オブジェクトストレージサーバー
- 実行ファイル minio.exe 一つで動くシンプルさ
- ブラウザ用 UI も
- Amazon S3 互換のインターフェイス体系(CLIとかREST APIとか)なので S3 勢には使いやすい
動かすまで
ディレクトリ構造
たとえば以下のように配置する。
+ minio - minio.exe + data + config - config.json
実行コマンドライン
$ cd <WORKDIR>\minio $ minio.exe --config-dir config server data
これで「config フォルダ配下の設定ファイルを使って」「data フォルダ配下にデータを格納する」オブジェクトストレージサーバーが立ち上がる。
アクセスする
minio.exe を実行すると、利用に必要な情報が色々アウトプットされる。
$ minio.exe --config-dir minio\config server minio\data Endpoint: http://10.0.0.1:9000 http://127.0.0.1:9000 AccessKey: aaaa SecretKey: aaaaaaaa Browser Access: http://10.0.0.1:9000 http://127.0.0.1:9000 ...
たとえばブラウザで使いたいなら Browser Access 部分の URL を開けばいい。開くとアクセスキーとシークレットキーを訊かれるので、表示されてるのを打つ。
ブラウザ UI
アップロード:
- バケットを作る(Create Bucket)
- バケットの中にファイルをアップする(Upload file)
ダウンロード:
- バケットを開く
- 表示されたファイルを選択して Download object
config.json について
まずは何も作らないで minio.exe を立ち上げる。するとデフォ設定で config.json が生成。これをベースにカスタマイズする。
ガイドは Minio Server config.json Guide - Minio あたりを読む。
最低限の config.json
アクセスキーは最低3文字、シークレットキーは最低8文字あれば動く。
{ "version": "26", "credential": { "accessKey": "333", "secretKey": "88888888" } }
これに満たない場合、 Unable to load the configuration file: invalid credential in conf みたいなエラーが出てしまう。
config の version って何?
ガイドでは
determines the configuration file format. Any older version will be automatically be migrated to the latest version upon startup. [DO NOT EDIT THIS FIELD MANUALLY]
と言っている。要するに「Minio のバージョン毎に微妙に config のフォーマットが異なる」という状況があるのだが、「どのバージョンのフォーマットを使うのか」という指定をこの version フィールドで行う。基本的に minio.exe 側で決めるためユーザーはいじってはならない。
もうちょっと中身を知りたいなら ソースを見る のもアリ。構造体でズラっと定義してある。
data はどのように保存される?
たとえば
$ minio.exe server data
と実行した(data フォルダ配下に保存)上で、バケット bucket1, bucket2 にそれぞれ data1.txt と data2.txt をアップロードした場合。
data ├─.minio.sys │ │ format.json │ │ │ ├─buckets │ │ ├─bucket1 │ │ │ └─data1.txt │ │ │ fs.json │ │ │ │ │ └─bucket2 │ │ └─data2.txt │ │ fs.json │ │ │ ├─multipart │ └─tmp │ └─xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ├─bucket1 │ data1.txt │ └─bucket2 data2.txt
噛み砕くと、こう。
+data +bucket1 -bucket1にアップしたファイル -... +bucket2 -bucket2にアップしたファイル -... +その他内部的な設定情報など