Ubuntu Weekly Recipe

第655回 オブジェクトストレージ,MinIOを使用する

この記事を読むのに必要な時間:およそ 3 分

今回はGoで書かれたオブジェクトストレージサーバーであるMinIOを使用する方法を紹介します。

オブジェクトストレージサービスとMinIO

オブジェクトストレージという名称を聞くようになって久しいですが,あまり身近でないというケースも多いでしょう。一方オブジェクトストレージを提供するサービスは確実に増加していて,最近ではWasabiが国内でもサービス開始しています。非常に安価なのが特徴で,1TBまでであれば月834円というのはなかなかに魅力的です。また「さくらのクラウド」でもオブジェクトストレージの提供を再開するとのことです。

オブジェクトストレージは従来のストレージとは考え方が違うので,手元に検証環境を作りたい,あわよくばそのまま本運用をしたいと考えるかもしれません。そのような場合には,まずMinIOを使用してみるといいでしょう。

MinIOはオープンソースでマルチプラットフォームなオブジェクトストレージサーバーで,Goで書かれているためファイル1つあれば実行できるという手軽さが魅力的です。もちろんAmazon S3互換APIを採用しているため,クライアントも選び放題です。またドキュメントが豊富なものも魅力的で,おおむね自分がやりたいことはできてしまうでしょう。

今回はDockerを使わずに使用する方法を紹介しますが,Dockerと相性がいいサーバーであることは疑いの余地はないでしょう。

なお,オブジェクトストレージに関する基本的な知識があることを前提としていますが,オブジェクトストレージにはフォルダーという概念がないことと※1⁠,最初にバケットを作成する必要があることを知っておけばだいたいいいでしょう。

※1
ただしMinIOでは内部的にフォルダーを作成しています。

簡単に実行する

MinIOをホームフォルダーで実行するだけであれば,非常に簡単です。次のコマンドを実行してください。

$ mkdir -p ~/minio/obst
$ cd ~/minio
$ wget https://dl.min.io/server/minio/release/linux-amd64/minio
$ chmod +x minio 
$ ./minio server ./obst/

これでインストールは完了です。コンソールの出力を見てみましょう。

Endpoint: http://192.168.12.102:9000  http://10.0.1.1:9000  http://10.171.143.1:9000  http://127.0.0.1:9000         
RootUser: minioadmin 
RootPass: minioadmin 

Browser Access:
   http://192.168.12.102:9000  http://10.0.1.1:9000  http://10.171.143.1:9000  http://127.0.0.1:9000        

Command-line Access: https://docs.min.io/docs/minio-client-quickstart-guide
   $ mc alias set myminio http://192.168.12.102:9000 minioadmin minioadmin

Object API (Amazon S3 compatible):
   Go:         https://docs.min.io/docs/golang-client-quickstart-guide
   Java:       https://docs.min.io/docs/java-client-quickstart-guide
   Python:     https://docs.min.io/docs/python-client-quickstart-guide
   JavaScript: https://docs.min.io/docs/javascript-client-quickstart-guide
   .NET:       https://docs.min.io/docs/dotnet-client-quickstart-guide
Detected default credentials 'minioadmin:minioadmin', please change the credentials immediately using 'MINIO_ROOT_USER' and 'MINIO_ROOT_PASSWORD'

あくまでも筆者の環境での実行例ですが,管理者のユーザー名(アクセスキー)とパスワード(シークレットキー)が共に⁠minioadmin⁠で,変更することが強く推奨されています。また環境変数で指定できることもわかるため,Ctrl+CキーでMinIOサーバーを終了し,次のコマンドを実行してください。

$ export MINIO_ROOT_USER=unique-minioadmin
$ export MINIO_ROOT_PASSWORD=secure-minioadmin-password
$ ./minio server ./obst/

これで管理者のユーザー名とパスワードが変更できました。

またWebブラウザーでアクセスできることもわかります。⁠http://192.168.12.102:9000」にアクセスしてみると,図1のようにアクセスキーとシークレットキーを入力するログイン画面が表示されます。両方とも入力してください。

図1 MinIOのログイン画面

図1

ログイン後右下にある「+」アイコンをクリックし,中央の「Create bucket」図2をクリックした上でバケット名を入力すると,バケットを作成できます。これで初期設定は完了です。

図2 ⁠Create bucket」でバケットを作成できる

図2

MinIOクライアント

MinIOには公式で提供しているMinIOクライアントが存在します。これを使用してみましょう。クライアントOSで次のコマンドを実行してください。もちろんローカル(=サーバーと同じところ)でも構いません。

$ mkdir ~/minio-client
$ cd ~/minio-client/
$ wget https://dl.min.io/client/mc/release/linux-amd64/mc
$ chmod +x ./mc

MinIOに簡単アクセスするために,エイリアスを作成します。コンソールの出力を元にすると,次のようになります。

$ ./mc alias set test http://192.168.12.102:9000 unique-minioadmin secure-minioadmin-password

testというエイリアスを作成し,サーバーは「http://192.168.12.102:9000⁠⁠,ユーザー名は「unique-minioadmin⁠⁠,パスワードは「secure-minioadmin-password」です。

次のコマンドを実行し,バケットを確認してみましょう。

$  ./mc ls test

バケットが作成されている場合は,それが表示されます。表示されない場合はバケットがないということなので,作成してみましょう。

$ ./mc mb test/firstbucket

testというエリアスに対してfirstbucketというバケットを作成しています。

著者プロフィール

あわしろいくや

Ubuntu Japanese Teamのメンバー。VirtualBoxなどの翻訳を手がける。技術同人サークルteam zpn主宰。ほか原稿執筆を少々。