世界を動かす技術を、日本語で。

MinIOリポジトリはもはやメンテナンスされていません

概要

  • MinIO リポジトリは現在 メンテナンスされていない
  • AIStor FreeAIStor Enterprise が推奨される代替案
  • AGPLv3ライセンス の注意事項と商用利用時のリスク
  • サポートは ベストエフォート で提供
  • 詳細は公式サイトや関連リンクを参照

メンテナンス終了と代替案

  • このリポジトリは現在メンテナンスされていない 状態
  • 利用推奨の代替案
  • サブスクリプションの詳細は公式ブログ参照

ライセンスとサポート

  • MinIOはAGPLv3ライセンス で提供
    • 利用には AGPLv3の義務 (改変コードの公開など)を遵守
    • 商用・プロプライエタリ利用(再パッケージや再販含む)は 自己責任
  • AGPLv3は サポート・メンテナンス・保証の義務なし
  • サポートは GithubやSlackチャンネル でのベストエフォート対応
    • コミュニティ全体での相互支援スタイル
  • 商用利用やSLA/SLOが必要な場合は MinIO AIStor の利用推奨

レガシーバイナリリリース

  • 旧バージョンのバイナリ は参照用として引き続き公開

ソースからのビルドと注意事項

  • go buildコマンドとGOOSGOARCH環境変数でクロスビルド可能
    • 例: env GOOS=linux GOARCH=arm64 go build
  • MinIOの起動: minio server PATH(PATHは空ディレクトリ)
  • ソースからビルドしたバイナリを 本番環境で使用する場合は自己責任
    • AGPLv3ライセンスは一切の保証・責任を負わない

Dockerイメージのビルド

  • Dockerイメージのビルド手順は公式ドキュメント参照
  • MinIOドキュメントで詳細手順を案内

要点まとめ

  • MinIO OSSリポジトリはメンテナンス終了
  • AIStor Free/Enterpriseへの移行推奨
  • AGPLv3ライセンス遵守と自己責任利用
  • サポートはコミュニティベース
  • 公式ドキュメントと各種リンクを参照

Hackerたちの意見

https://news.ycombinator.com/item?id=46136023 を見てみて。MinIOは今、メンテナンスモードに入ってるみたい。あの時、彼らがクローズドソースのリポジトリに移行したのは明らかだったね。

メンテナンスモードは「このリポジトリはもうメンテナンスされていません」とは全然違うからね。

代替案としてAIStorを挙げてるよ。他の代替案はこれだね: https://github.com/deuxfleurs-org/garage https://github.com/rustfs/rustfs https://github.com/seaweedfs/seaweedfs https://github.com/supabase/storage https://github.com/scality/cloudserver https://github.com/ceph/ceph 他にもいろいろあるよ。

俺の経験から言うと、Garageは開発環境でMinIOの代わりに使うには最高の選択だと思う。自動セットアップがMinIOよりも簡単にできるかなり良いCLIを提供してる。ただ、プロダクション環境では、やっぱりCephが一番だと思う。だって、あれはかなり有名だからね。

いろんなブロックストレージの実装のトレードオフを理解できたら面白いよね。俺はシングルマシン用のS3互換ストレージとしてSeaweedFSを使ってるけど、すごくいい感じ。とはいえ、管理面での便利な機能(簡単なアクセスコントロールや、容量と使用量、エラーレートの理解など)が欠けてるのが残念かも…これ、もしかしたら自分の使い方の問題かもしれないけど。Cephも使ったことがあるけど、分散性にかなりこだわってる印象がある。ストレージ用のホストが4台未満だと、セットアップ時にバカにされてる気がする。パフォーマンスもイマイチだったけど、正直K8S/RookをFlannel CNIの上で使ってたから、簡単に使えるCNIではあったけど、パフォーマンス重視のシステムには向いてなかったかも。それでも、データの整合性に関してはCephのデプロイメントを信頼できると思う。なんか、「これを作った人は分散システムを本当に理解してるな」って感じがするんだよね。でも、その感覚を具体的なデータに落とし込むのは難しい。

自宅ラボ用に簡単にセットアップできる分散S3クラスターのためにGarageを使ったけど、めっちゃ良い体験だったよ。友達が運営するいくつかのラボをTailscaleやHeadscaleで繋いで、共有クラスターにしてるんだ。彼らは「最終的な整合性」モードを提供していて(設定はconsistency_mode = dangerousだから、7ナインのSaaSには使わない方がいいかも)、ローカルのS3ノードがリクエストを喜んで受け入れて(すぐに処理してくれる)、後で他のサーバーに複製する仕組みになってる。全体的に自己ホスティングや独立を目指す哲学があって、メンテナンスも分かりやすくて簡単。特別なことはしてないし、アーキテクチャや設計、運用の指示も理解しやすいよ。

rustfsとGarageの違いについてちょっと書いたよ。ここにあるよ https://buttondown.com/justincormack/archive/ignore-previous... それ以来、rustfsは私が見つけた問題を修正したみたい。用途が全然違うからね。rustfsはminioの書き直しに近いよ。

いいリストだね。minioのリポジトリにこれらを代替案のリストに追加するためのプルリクエストを開いたよ。https://github.com/minio/minio/pull/21746

Minioの他に、GarageとCephも試してみたよ。S3 APIを使ってインターフェースする何かが必要だと思うけど、裏ではシンプルなファイルシステムになってるものがローカルやテスト、小規模なデプロイメント用に必要だよね。それが存在するかは分からないけど。もちろん、S3にいろんなものが追加されてて、最初に言われてたほどシンプルじゃないからね。

別のオプションの作者なんだけど、S3ゲートウェイを持ってて、S3サーバーとして自分を公開するけど、実際にはS3のリクエストをSFTP、ローカルFS、FTP、NFS、SMB、IPFS、Sharepoint、Azure、gitリポジトリ、Dropbox、Google Drive、別のS3などに転送するプロキシなんだ。完全にステートレスで、接続されているものにS3の呼び出しを翻訳するプロキシとして機能するよ。

簡単なユースケースにはruftfsを使ってる。minioの代わりにね。すごく軽量で、めっちゃ速いよ。

ちなみに、AIStorはMinIOチームが作ったもので、これは単なるアップセルだよ。

私の経験から言うと、rustfsには可能性があるし、たくさんの機能をサポートしてる。自分の秘密鍵やアクセスキーを持ち込むこともできるから、クレデンシャルを変更せずに移行したい時には便利なんだ。ただ、まだ開発中で、コードにはバイトアンドスイッチの準備もされてるみたい(https://github.com/rustfs/rustfs/blob/main/rustfs/src/licens...)。機能的にはCephが実際のS3に最も近いけど、セットアップには手間がかかるよ。ローカルサーバーがいくつか必要で、別のサイトにレプリケートもできるけど、各サイトはストレージサーバー間でかなりレイテンシに敏感なんだ。他にもいろんな機能があるけど、S3は彼らのオブジェクトストアの上に構築されていて、VMストレージやFUSE互換のFSにも使える。Garageは素晴らしいけど、あくまで「物を保存するため」って感じで、S3側の機能(S3には多くの高度なACLがあって、代替品はサポートしてないことが多い)や管理面(例えば、「特定のパスにアクセスできるアクセスキーを許可する」みたいなのが不可能)では機能が不足してる。クラスター機能もWANに敏感で、Cephとは違って、レプリケーションをしたいなら同じラックにストレージサーバーを置かなきゃいけないんだ。

先週、思い切ってうちの自己ホストのMinIOサーバーをCephに移行することにしたんだ。今のところ、3台のサーバーでCephクラスタをcephadmでセットアップして、最後のMinIOサーバーが約120TBのバケットを新しいクラスタにミラーリング中で、速度は420MB/sも出てる。もうすぐ終わるはず。Cephの複雑さとクラスタの特性は、最初はMinIOのシンプルさに比べてちょっと怖いけど、基本を学べばスムーズにいくと思う。面白いのは、Cephはクラスタを拡張できるから、理論上はもっとストレージサーバーを追加すればいいんだよね。ただ、その限界がどこにあるのかはまだ分からない。MinIOがああなっちゃったのは残念だな。前はすごく良いコンソールがあったのに。それに、Garageも考えたけど、ElasticsearchがそのS3ソリューションでスナップショットに不満を持ってるみたいだから、Cephにすることにした。

複雑だけど、Cephのストレージとコンセンサスレイヤーは実績があって、真剣に使うにはもっとしっかりした基盤だよ。ただ、ノードがフルにならないように気をつけてね!

AIstor。最近はどこでも「AI」って言葉を使うよね。

それってI(インディゴ)それともl(ラマ)?Lだと思ってた、笑

フランス語では形容詞が名詞の後に来るから、AIは実際にはIAになるんだ。AWS S3には「Infrequent Access」っていうストレージレベルがあって、どこでもIAって略されてる。数週間前、ある顧客に「いや、私たちのデータをAIに渡すつもりはない」って説明するのに、めっちゃ時間がかかっちゃった。私のレポートではコスト削減のためにS3 IAに頼るって話をしてたのにね…。

俺はそこそこ大きなオープンソースサービスを運営してたけど、そのプロジェクトのメンテをやめた日から慢性的な腰痛が治ったんだ。無償で働くのは楽しくないよね。有料の提供と無料のコミュニティ版があるのも楽しくない。結局、製品にお金を払わない人たちとやり取りするのは楽しくない。これを痛い目見て学んだし、MinIOチームも同じことを学んだんだろうね。

自分の製品に対して料金を取ること自体は全然悪くないと思う。ただ、みんなにあなたの製品がFOSSだと信じ込ませて、彼らがインフラに統合するためにたくさんの作業をするのを待ってから、バイトアンドスイッチをするのは問題だと思う。最初から、あなたの製品が最終的にFOSSライセンスを放棄することになるって正直に言えばいいんだ。そうすれば、みんなが情報に基づいた決定をできるから。もしそれをしてないなら、正しいことをして、最初に約束したことを守り続けてほしい。

結局、あなたの製品にお金を払わない人たちと関わるのは楽しくない。逆に感じるな。自分が作ったソフトウェアを買ってくれた人たちと仕事をするのは、ちょっと恥ずかしいしストレスも感じる。お金を払ってない人たちとのやり取りは、全体的に人類や公共のために何がベストかって話になるから、特別扱いされるべきじゃないし、誰も相手を見下す権利はないからね。

全然違う状況だよ。MinIOチームは誰も無償で働いてない。MinIOはCOSS企業(商業オープンソースソフトウェア)で、基本バージョンを無料で提供して、企業の人たちがプレミアム機能にお金を払いたくなることを期待してるんだ。MinIOがクローズドソースになるのはビジネスの決断で、それ自体は悪いことじゃないよ。SeaweedFSを強くおすすめする。私はWasabiと提携する前に、長い間プロダクションで使ってた。今でも1GiB/sの超高速なコロケーションオブジェクトストレージにSeaweedFSを使ってるけど、今はWasabiが私たちの主力オブジェクトストレージだよ。

全然そんなことないよ。数年間オープンソースのストレージシステムを維持してきたけど、好きなんだ。ほんとに大好き。TidesDBっていうストレージエンジンを維持してる。背中が痛いけど、それが好きなことをやれない理由にはならないよ。

人気のオープンソースプロジェクトを作ったり維持したりする主な動機が金儲けなら、オープンソースの精神を理解してないよ。

オープンソースの開発者は、自分が無料で提供するものを「製品」と考えるのをやめるべきかもね。私は小さなオープンソースライブラリを維持してるけど、全然お金にはならないし、これからもならないだろう。人々は自由に使ったり使わなかったりできるし、私がリポジトリを維持する方法が気に入らないなら、フォークしてもいいんだ。

オープンソースプロジェクトが収益化できないと誤解している人が多いのは驚きだね。ビジネスモデルとオープンソースは直交するけど、互換性のある概念なんだ。ただ、オープンソースプロジェクトを維持する主な目的が金銭的な利益を得ることなら、インセンティブが歪んでるよ。もしそう感じるなら、他のオープンソースプロジェクトを使うのもやめた方がいいよ、支援もしない限りね。腰痛には気をつけて。

これが起こるのはみんな予想してたよね。しばらくの間、彼らはほとんど透明性がなくて、決定に対する軽い批判すらGitHubから削除して、コメントをロックするなどしてたから。min.ioに依存してた人たちは驚いてないよ。個人的には「メンテナンス」モードを見た瞬間、急いでGarageに切り替えた。PR用にいくつかの機能をまとめる必要があるけど、まだ時間が取れてないんだ。優先した方がいいかも。

これはタイムリーなニュースだね。昨日Lokiのインフラを立ち上げて、Grafanaのオブジェクトストレージに関するガイドに従ってたところなんだ(彼らは非クラウドセットアップにはminioを推奨してる)。以前はminioに詳しくなかったから、Checkovが最新のタグを使うようにしつこく言ってくれなかったら、メンテナンス状態を完全に見逃してたと思う。今のところRustfsに切り替えたけど、すごく良さそうなプロジェクトだね。ただ、24時間未満じゃ評価期間としては短すぎるけど。

そもそも、ログ用のデータベースにオブジェクトストレージに対する非自明な依存関係が必要なのはなんで?クラウドで管理されていて、耐久性、可用性、低コストで「無限」のストレージスペースが証明されている場合、オブジェクトストレージは通常のブロックストレージよりも利点があるよ。AmazonのS3やGoogleのGCSみたいにね。自分で運用する場合、オブジェクトストレージは通常のブロックストレージに対して全く利点がないんだ。- 「無限」のストレージスペースを提供しない - 定期的に監視して、新しい物理ストレージを手動で追加する必要がある - 高い耐久性と可用性を提供しない。ネットワーク越しにストレージノード間でオブジェクトストレージの状態を調整するのが複雑だから、ローカルに接続されたブロックストレージよりも可用性が低いことが多い。 - DIYオブジェクトストレージによって、基盤となるハードウェアストレージでデータが破損したり失われたりした場合、適切に自動回復される可能性は低い。 - ローカルに接続されたブロックストレージと比べてオーバーヘッドが高く、(おそらく、半端なレプリケーションのために)コストが高くなる。 - ネットワークの遅延が高いから、ローカルストレージにアクセスする時の遅延と比べて遅くなる。遅延の違いは1000倍で、オブジェクトストレージは100ms、ローカルブロックストレージは0.1ms。 - ブロックストレージよりも設定、運用、トラブルシューティングが難しい。だから、大規模なプロダクション環境でオブジェクトストレージが必要ないログ用の他のデータベースを見てみることをおすすめするよ。例えば、VictoriaLogs。単一ノードで数百テラバイトのログにスケールできて、クラスターモードではペタバイトのログにスケールできる。どちらのモードもオープンソースで無料で使えるよ。注意:私はVictoriaLogsのコア開発者だよ。

もし、こんなニュースの後にオブジェクトストレージが必要な可視化ソリューション(Thanos、Loki、Mimir、Tempoなど)に苦しんでるなら、この要件がない代替案を試してみて。VictoriaMetrics、VictoriaLogs、VictoriaTracesなどがあるよ。これらは通常のブロックストレージでペタバイトのデータにスケールできて、手動で管理されたオブジェクトストレージ(MinIOなど)に依存するシステムよりも高いパフォーマンスと可用性を提供するよ。

COSS企業は両方を求めてるよ。成長段階では無料のコミュニティ貢献やバグ報告を受けて、ユーザーを十分に獲得したらクローズドソースにする。今使ってるコードはあなたのものだけど、ロードマップは彼らの投資家のものだね。

Duolingoは無給の労働を使ってリソースを構築した。今はプレミアムにお金を取ってるよ。

これが起こるのは少なくとも1年前から予想されてたよね。HNでも指摘されてるように、どんどん厳しくなってきてるし。残念ながら、同じレベルでスケールできるオープンプロジェクトは他に知らないな。前の職場でminioを使って約100PiBのストレージを構築したんだけど、ドライブやサーバーの故障に対して非常に強靭だったし、ansibleを使えば素のハードウェアでも簡単に管理できたよ。180Gbpsの持続的な書き込み速度も出せたし、ちょっとしたハードウェアメンテナンスでね。minioの大規模ユーザーが集まって、今後のメンテナンスの資金を出し合うチャンスはないかな?自分はそれに関連するウィッシュリストやハードウェア管理スクリプトも持ってたから、統合できるかもしれない。