今回はGoで書かれたオブジェクトストレージサーバーであるMinIOを使用する方法を紹介します。
オブジェクトストレージサービスとMinIO
オブジェクトストレージという名称を聞くようになって久しいですが、
オブジェクトストレージは従来のストレージとは考え方が違うので、
MinIOはオープンソースでマルチプラットフォームなオブジェクトストレージサーバーで、
今回はDockerを使わずに使用する方法を紹介しますが、
なお、
簡単に実行する
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'
あくまでも筆者の環境での実行例ですが、
$ export MINIO_ROOT_USER=unique-minioadmin $ export MINIO_ROOT_PASSWORD=secure-minioadmin-password $ ./minio server ./obst/
これで管理者のユーザー名とパスワードが変更できました。
またWebブラウザーでアクセスできることもわかります。

ログイン後右下にある

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というエイリアスを作成し、
次のコマンドを実行し、
$ ./mc ls test
バケットが作成されている場合は、
$ ./mc mb test/firstbucket
testというエリアスに対してfirstbucketというバケットを作成しています。
systemdでデーモンとして管理する
MinIOを少し使うくらいであればホームフォルダーで動作するくらいでもいいでしょうが、
minioの配置場所
前出の例では~/minio/以下にMinIOの実行ファイル
$ sudo useradd --system minio-user $ sudo mkdir /opt/minio/
~/minio/に実行ファイルをダウンロードしている場合は次のコマンドを実行してください。
$ sudo cp ~/minio/minio /opt/minio/
~/minio/に実行ファイルをダウンロードしていない場合は次のコマンドを実行してください。
$ wget https://dl.min.io/server/minio/release/linux-amd64/minio $ chmod +x minio
続けて次のコマンドを実行してください。
$ sudo chown -R minio-user:minio-user /opt/minio/ $ sudo mkdir /var/minio $ sudo chown -R minio-user:minio-user /var/minio/
これで実行ファイルやフォルダーを作成できました。続いて基本的な設定ファイルを編集します。次のコマンドを実行してください。
$ sudo editor /etc/default/minio
ファイルの中身は次のようにしてください。
# Volume to be used for MinIO server.
MINIO_VOLUMES="/var/minio/"
# Use if you want to run MinIO on a custom port.
# MINIO_OPTS="--address :9199"
# Root user for the server.
MINIO_ROOT_USER=unique-minioadmin
# Root secret for the server.
MINIO_ROOT_PASSWORD=secure-minioadmin-password
systemdのサービスユニットファイルを準備します。
$ sudo bash -c "cd /etc/systemd/system/; curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service"
$ sudo sed -i -e "s|/usr/local/bin/|/opt/minio/|g" -e "s|/usr/local/|/opt/minio/|" /etc/systemd/system/minio.service
MinIOを実行し、
$ sudo systemctl daemon-reload $ sudo systemctl start minio.service $ sudo systemctl enable minio.service
これで完了です。
MinIOクライアントからMinIOのアップデート
MinIOはMinIOクライアントからアップデートすることができます。MinIOはアップデートが頻繁に行われているため
クライアントからのアップデートはコマンド1つです。次のコマンドを実行してください。
$ ./mc admin update test
アップデートが完了すると、
Server `test` updated successfully from 2021-01-08T21:18:21Z to 2021-02-19T04-38-02Z
バージョン
なおMinIOの実行ファイルを/usr/