- Garage は、データセンター外の環境でも安定して動作できる S3互換オブジェクトストレージ
- 単一の 依存関係のないバイナリ として提供され、あらゆるLinuxディストリビューションで容易に実行可能
- データは 3つのゾーン(zone) に複製され、高い 冗長性と耐障害性 を確保
- Amazon S3 API を実装し、Nextcloud、Matrix、Mastodon など多様なアプリケーションと互換
- 低いハードウェア要件と公開研究に基づく設計により、分散システムへのアクセス性を拡大
概要
- Garage は データセンター外でも安定運用可能なS3オブジェクトストレージ であり、インターネットを通じて複数のデータセンターにまたがって実行可能
- Webサイトホスティング、メディア保存、バックアップ先 など、さまざまな用途に利用可能
設計目標
- 軽量性と効率性 を重視して開発されたシステム
- 単一の 依存関係のない実行ファイル として配布され、すべてのLinuxディストリビューションで動作
- 迅速なデプロイと安全な運用 のため、システム管理者に優しい設計
- あらゆる環境でデプロイ可能 なように設計され、専用バックボーンネットワークがなくてもインターネット上で複数データセンター間の運用が可能
- ネットワーク障害、遅延、ディスク障害、オペレーターのミス にも耐えられる高い 復元力 を確保
最小要件
- CPU: 過去10年以内の x86_64、ARMv7 または ARMv8
- RAM: 1GB
- ディスク容量: 最低 16GB
- ネットワーク: 遅延 200ms 以下、帯域幅 50Mbps 以上
- 異種ハードウェア対応 により、中古機材を活用したクラスター構成が可能
データ復元性と互換性
- 各データチャンク(chunk)は 3つのゾーンに複製 されて保存
- Amazon S3 API を実装し、既存アプリケーションと即座に互換
- 対応例: Nextcloud、Matrix、Cyberduck、Mastodon、Rclone、PeerTube
技術的基盤
- Garage は最新の 分散システム研究成果 に基づいて設計
- Amazon の Dynamo キー・バリューストア
- Conflict-Free Replicated Data Types (CRDTs)
- Maglev ソフトウェアネットワークロードバランサー
後援と資金支援
- Garage プロジェクトは複数回にわたり 公的資金支援 を受けている
- 2021–2022: NGI POINTER – 3人のフルタイムスタッフを1年間支援
- 2023–2024: NLnet / NGI0 Entrust – 1人のフルタイムスタッフを1年間支援
- 2025: NLnet / NGI0 Commons Fund – 1.5人分のフルタイムスタッフを1年間支援
- 欧州連合の Horizon 2021 研究・イノベーションプログラム および Next Generation Internet プログラムから財政支援を受けている
- 追加の後援や支援契約を通じた参加も可能(連絡先: garagehq@deuxfleurs.fr)
1件のコメント
Hacker Newsのコメント
最近の社内テストで Garage をかなり広範に検証した
デプロイは MinIO より 少し簡単だったが、高速性能では劣っていた
25G NIC 環境では MinIO は 20〜25Gbps に達した一方、Garage は約 5Gbps 程度に制限されていた
Garage はこうした高性能ユースケースを狙っていないという印象だった
次は RustFS と Ceph/Rook もあわせて検討する予定だ
MinIO の最近の方向性のため、結局は別の代替案を探す必要がありそうだ
「高性能は設計とインフラを制約するため、私たちは ミニマリズムによる性能 を追求する」という思想だ
(Design Goals ドキュメント)
ただし、性能ボトルネックがどこで発生しているのかは興味深い点だ。MinIO より並列処理が少ないのかもしれない
複雑さが非常に高く、きちんと理解していないとクラスターが壊れたときの復旧が難しい
ローカル開発用としては興味深いプロジェクトに見える
ただし 本番設定ガイド を見ると少し不安になる
Garage はメタデータ保存時に独自の チェックサムおよび整合性検証 を行わないため、BTRFS や ZFS のようなファイルシステムを推奨している
既定の LMDB エンジンは異常終了時にデータ破損のリスクがあり、定期的なスナップショットが必要だ
SQLite も使えるが、デフォルト DB が電源障害に弱いというのは意外だった
すぐに Garage に統合するつもりだという
Garage の最小要件が RAM 1GB という点はやや重く感じた
PLP(電源断保護) 機能付きの NVMe ドライブや UPS の利用を勧める
MinIO 騒動以降、Garage の採用が急増しているのを見ている
Repoflow のベンチマーク比較記事 が有用だった
RustFS も興味深かったが、技術的ではない理由で候補から外した
MinIO を置き換える際のコツがあれば聞きたい
GitHub リンク 参照
Ceph S3 Gateway との比較も気になる
Deuxfleurs 公式サイト はこれまで見たウェブサイトの中でもっとも 美しいデザインだ
ローカル開発とテスト用に Garage を使っている
s5cmd と組み合わせると、15GB・6万個以上のオブジェクトを 60 秒以内にシードできる
Docker で API、DB、キャッシュ、オブジェクトコンテナを含む ステージング環境の複製 が 2 分以内に完了する
設定は非常に簡単で、安定して動作している
以前は LocalStack S3 を使っていたが、永続性の不足 が問題で、MinIO OSS も保守終了になった
SeaweedFS と RustFS も検討したが、Garage がもっとも手軽だった
Garage はテストコードとベンチマークで 非常に印象的だった
単一バイナリでデプロイが簡単で、ドキュメントも充実している
ただし オブジェクトタグ機能の欠如 は大きな不満点だった
クラウド API の世界ではタグは基本機能なので、この点が改善されてほしい
Garage は本当に気に入っている
単なる S3 代替以上の存在で、ハイパーコンバージドアーキテクチャ でも有用だ
ローカルマシンでまずデータを読み、必要なときだけネットワークを使う構造が見事だ
Erasure coding がない点は、耐障害性と効率の面で大きな損失だ
ハードウェア障害時にどう復旧されるのかが主な懸念だった
データエンジニアリング用スクリプトで Garage が役立った
たいていのツールが S3 統合をサポートしているので、Garage にデータをダンプして後でクラウドへ拡張しやすい
最近 Garage をテストしてみた
約 300 件のドキュメント(1GB)をアップロードした後に削除しようとしたところ、S3 サービスが コンテナ内でクラッシュ し、再起動が必要になった
すばらしいプロジェクトではあるが、自分の経験ではまだ 信頼性 が不足している