Minio
2016/05/05更新
対応バージョン: 2016-04-17T22:09:24Z
Amazon S3互換のオブジェクトストレージMinioの導入手順を示す。MinioはGo言語で記述されておりサーバモジュールもクライアントモジュールも単一のバイナリなので簡単に導入できる。
また各種言語用のSDKも用意されているのでプログラムからの制御も容易である。
インストール
ここではサーバモジュール・クライアントモジュールをそれぞれ~/binにインストールする。
~/binにはコマンド実行パスが通っているものとする。
% cd ~/bin % curl https://dl.minio.io/server/minio/release/linux-amd64/minio > minio % chmod +x minio % curl https://dl.minio.io/client/mc/release/linux-amd64/mc > mc % chmod +x mc
サーバ起動
サーバ起動時にMinioオブジェクトの格納場所を指定するが、ここでは~/minioとする。
% mkdir ~/minio % minio server ~/minio AccessKey: ************ SecretKey: ************************ Region: us-east-1 Minio Object Storage: http://127.0.0.1:9000 http://xxx.xxx.xxx.xxx:9000 Minio Browser: http://127.0.0.1:9000 http://xxx.xxx.xxx.xxx:9000 To configure Minio Client: $ wget https://dl.minio.io/client/mc/release/linux-amd64/mc $ chmod 755 mc $ ./mc config host add myminio http://localhost:9000 ************ ************************
サーバを起動するとMinioオブジェクトへのアクセス方法が示される。
API経由、ブラウザ経由、クライアント(CLI)経由の3種類があるが、ブラウザとクライアント(CLI)からのアクセス手順を示す。
ブラウザからのアクセス
ここではバケット(フォルダのようなもの)を1つ作成し、その中に画像ファイルを1つアップロードしてみる。
まずhttp://127.0.0.1:9000にアクセスするとアクセスキーとシークレットキーの入力を促されるのでサーバ起動時に示された値をそれぞれ入力する。
ログインするとまだオブジェクトが何も存在していない状態が表示される。
ここで右下の「+」ボタンをクリックし「Create bucket」ボタンをクリックする。
バケット名に「test」と入力してEnterを押しバケットを作成する。
次に「Upload file」ボタンをクリックして画像ファイルをアップロードしてみる。
ファイルがアップロードされたのが確認できる。
実際のバケットとファイルはサーバ起動時に指定したディレクトリ配下に以下のように作成される。
% cd ~/minio % ls -lR .: 合計 4 drwx------ 2 neo neo 4096 5月 5 17:32 test/ ./test: 合計 24 -rw------- 1 neo neo 21893 5月 5 17:32 logo.png
尚、サーバの設定は~/.minio/config.jsonに保存される。
% cat ~/.minio/config.json { "version": "4", "credential": { "accessKey": "************", "secretKey": "************************" }, "region": "us-east-1", "logger": { "console": { "enable": true, "level": "fatal" }, "file": { "enable": false, "fileName": "", "level": "" }, "syslog": { "enable": false, "address": "", "level": "" } } }
クライアント(CLI)からのアクセス
上記で作成したオブジェクトにコマンドラインからアクセスしてみる。
まず初期設定としてサーバへのアクセスキーとシークレットキーを指定する。
% mc config host add local http://localhost:9000 ************ ************************
クライアントの設定は~/.mc/config.jsonに保存される。
% cat ~/.mc/config.json { "version": "8", "hosts": { "gcs": { "url": "https://storage.googleapis.com", "accessKey": "YOUR-ACCESS-KEY-HERE", "secretKey": "YOUR-SECRET-KEY-HERE", "api": "S3v2" }, "local": { "url": "http://localhost:9000", "accessKey": "************", "secretKey": "************************", "api": "S3v4" }, "play": { "url": "https://play.minio.io:9000", "accessKey": "xxxxxxxxxxxx", "secretKey": "xxxxxxxxxxxxxxxxxxxxxxxx", "api": "S3v4" }, "s3": { "url": "https://s3.amazonaws.com", "accessKey": "YOUR-ACCESS-KEY-HERE", "secretKey": "YOUR-SECRET-KEY-HERE", "api": "S3v4" } } }
アクセス先はlocal以外に以下の3箇所も定義されている。
gcs
play
Minioのテスト用クラウドストレージ
s3
コマンドラインからはls、rmといった馴染みのある方法でオブジェクトにアクセスできる。
オブジェクトリスト出力
% mc ls [2016-05-05 17:32:30 JST] 4.0KiB test/
オブジェクトリスト出力(再帰)
% mc ls --recursive [2016-05-05 17:32:30 JST] 4.0KiB test/ [2016-05-05 17:32:30 JST] 21KiB test/logo.png
バケット作成
% mc mb test2 Bucket created successfully ‘test2’. % mc ls [2016-05-05 17:32:30 JST] 4.0KiB test/ [2016-05-05 17:33:42 JST] 4.0KiB test2/
オブジェクトコピー
% mc cp test/logo.png test/logo2.png test/logo.png: 21.38 KB / 21.38 KB ┃▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓┃ 100.00 % 6.21 MB0% % mc ls test/ [2016-05-05 17:32:30 JST] 21KiB logo.png [2016-05-05 17:34:19 JST] 21KiB logo2.png
バケット比較
% mc diff test test2 ‘test/logo.png’ and ‘test2/logo.png’ - only in first. ‘test/logo2.png’ and ‘test2/logo2.png’ - only in first.
バケットミラーリング
% mc mirror test test2 .../logo2.png: 42.76 KB / 42.76 KB ┃▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓┃ 100.00 % 2.77 MB0% % mc ls --recursive [2016-05-05 17:34:19 JST] 4.0KiB test/ [2016-05-05 17:32:30 JST] 21KiB test/logo.png [2016-05-05 17:34:19 JST] 21KiB test/logo2.png [2016-05-05 17:42:02 JST] 4.0KiB test2/ [2016-05-05 17:42:02 JST] 21KiB test2/logo.png [2016-05-05 17:42:02 JST] 21KiB test2/logo2.png
オブジェクト削除
% mc rm test2/logo* Removed ‘test2/logo.png’. Removed ‘test2/logo2.png’. % mc rm test2 Removed ‘test2’. % mc ls --recursive [2016-05-05 17:34:19 JST] 4.0KiB test/ [2016-05-05 17:32:30 JST] 21KiB test/logo.png [2016-05-05 17:34:19 JST] 21KiB test/logo2.png
他にもオブジェクトの共有などができるがここでは割愛する。
参考サイト
Minio技術情報 (Qiita)
第72回 究極にシンプルなストレージに挑戦する「Minio」(続編) (中井悦司) (CTC教育サービス)
オブジェクトストレージ Minioで遊ぶ (あんパン)
オブジェクトストレージ Minio を使ってみる (Jedipunkz's Blog)
S3クローンMinioを使って、自前MicroServices用データストレージを構築する (Tolarian Academy)