12
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[小ネタ] MinIOを従来通りファイルシステムそのままで使いたい場合は RELEASE.2022-05-26T05-48-41Z 以前を使おう

Last updated at Posted at 2024-09-30

何故か久しぶりに起動した MinIO が動かなくなっている人へ

久しぶりに MinIO を含むテスト環境をDocker等で起動すると何故かMinIOが動かない or 直接ファイルシステムに作ったオブジェクトが取得できなくなってしまった人は、MinIOを RELEASE.2022-05-26T05-48-41Z 以前のバージョンに固定してみてください。

compose.yml
services:
  # テスト用のS3
  test_s3:
-    image: minio/minio:latest
+    image: minio/minio:RELEASE.2022-05-26T05-48-41Z
    ports:
      - "19999:19999"
      - "19998:19998"
    environment:
      MINIO_ROOT_USER: testuser
      MINIO_ROOT_PASSWORD: testpassword
    volumes:
      - ./s3/data:/data
      - ./s3/config:/root/.minio
    command: server --address ":19999" --console-address ":19998" /data

上記のコンテナが立っている状態 (docker compose up -d)で、ローカルファイルシステム上の書き込みが直接CLIで取得できるか見てみます。

ファイルシステム越しに読み書きできるかチェックしてみる.sh
export AWS_ACCESS_KEY_ID=testuser
export AWS_SECRET_ACCESS_KEY=testpassword

# ファイルシステムに書き込まれたものがminio越しに見えるかチェックしてみる
mkdir s3/data/foobucket
echo "hello!" > s3/data/foobucket/test.txt

aws --endpoint-url http://localhost:19999 s3 ls s3://foobucket/
# 2024-09-25 17:50:00          7 test.txt

aws --endpoint-url http://localhost:19999 s3 cp s3://foobucket/test.txt -
# hello!

なぜそれより後のバージョンのMinIOは(うまく)動かないのか?

MinIOの従来型のファイルシステムをそのままS3のバケットとして使える機能 (filesystem mode) は2020年に開発が終わり、リリース RELEASE.2022-10-24T18-35-07Z を最後に機能自体が削除されました。 これ以降の MinIO ではAPI越しにオブジェクトストレージを編集する必要があります。詳しくは以下の公式ドキュメントを参照してください。

それであれば、なぜそれより4ヶ月以上前のはずの RELEASE.2022-06-02T02-11-04Z 以降のバージョンも駄目かというと、そのバージョンからファイルシステム上からの直接の変更などMinIOが把握しない形でバケットを作成してしまうと、バケットリストアップから省かれてしまうからです。1

記事冒頭の ファイルシステム越しに読み書きできるかチェックしてみる.sh のスクリプトもバケットリストアップから失敗します。mkdir しただけのディレクトリはバケットと認識してくれないようです。一度MinIOに何らかの形でバケットを把握させれば(メタデータを作成させれば)その後はきちんと把握されるようです。

バージョンごとの挙動をまとめるとこうなります。

バージョン ファイルシステム上でいきなりバケット作成 ファイルシステムモードのサポート
- RELEASE.2022-05-26T05-48-41Z OK OK
RELEASE.2022-06-02T02-11-04Z -
RELEASE.2022-10-24T18-35-07Z
NG OK
RELEASE.2022-10-29T06-21-33Z - NG NG

おそらく開発・テスト環境で MinIO を使っていた人は、ファイルシステムそのままのS3が使えるという点でMinIOを使っていた(重宝していた)と思うので、急場しのぎであれば過去バージョン(RELEASE.2022-05-26T05-48-41Z)に修正して対応するのが一番早いです。

(無論、ちゃんとAPI経由で操作するのが理想的ですが、CIなどでいちいちAWS SDKをインストールして呼び出すのは面倒ではあります)

  1. 各種バージョンに対し記事中の ファイルシステム越しに読み書きできるかチェックしてみる.sh の内容を一つずつ切り替えて実際にローカル試験したところ、 RELEASE.2022-06-02T02-11-04Z 以降から動作が変わっていることを確認しました。

12
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?