
2026/07/12 3:15
ZeroFS と Amazon S3 ファイルの比較
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
より優れたサマリーは、S3 エクスポートの非同期的な性質、ストレージおよび処理という特定のコストドライバーの明確化、ZeroFS のローカルキャッシングの利点の言及を含みつつ、すべての箇条書きに拘らず、クラウドプロバイダー互換性に関する区別が明確であることを確保するものである。
出力
-
欠落要素(ある場合):
- S3 ファイルのエクスポートの非同期的な性質(約 60 秒または 128 KiB のしきい値によって遅延)と、ZeroFS の即座のローカルハンドリングとの比較。
- 具体的なコストメトリクス(ストレージ $0.30/GB、読み書き処理手数料)。
- ZeroFS が RAM/DISC キャッシュおよびレインジッド GET を使用してカールドミスを回避する詳細。
- S3 ファイルの改名メカニズムのコピー/デリートによって前缀可視化問題が発生する点。
-
推論・飛躍(ある場合):
- サマリーは S3 Files のエクスポートを「即座」と「透明な経路」として提示しており、これはテキストの説明であるが如く非同期的であり、初回アクセス時または不活性後においてインポートプロセスを必要とするという記述と矛盾する。
- 「コンフリクト解決」というフレーズは若干緩やかに使用されており、結果(ローカル移動)については正確だが、サマリーでは Key Point 10 で説明された具体的な方法論(コピー/デリート)に言及せず、一般化に頼っている。
-
改善されたサマリー(必要ある場合;そうでなければ元のものを繰り返す):
改善されたサマリー:
AWS EFS ストレージオプション間の最も重要な区別は、S3 Files が標準的な S3 アイデンティティと耐久性を維持することを優先して非同期的なエクスポート経路を用いるのに対し、ZeroFS が LSM ツリーを使用してローカルキャッシング、圧縮、不透明なインターフェースを通じてパフォーマンスを最適化することである。通常のファイルシステムではオブジェクトストレージへの書き込みが完了するまで成功が返されないのに対し、S3 Files はローカルの即座の永続的な書き込みを行うが、データセグメントを非同期的にアップロードする(通常は不活性またはサイズしきい値によって遅延される)。一方、ZeroFS はメタデータとデータの集約を完全にローカルキャッシュ内で処理する。運用上の重要な違いはコンフリクト解決にある:両側のファイル修正により S3 Files では、コピー&デリートプロセスを通じてローカルバージョンを
lost+found に移動させる(これは改名中に前缀を暴露する可能性がある)のに対し、ZeroFS は内部エントリーを更新してコピーオーバーヘッドなしで行う。パフォーマンスとコストについて、S3 Files はハイパフォーマンスストレージおよびデータ処理手数料を課金しており、大規模なボリュームでは顕著になる可能性があり、ZeroFS 是小きいファイルを不変セグメントにパックして個別の PUT オーバーヘッドを回避する利点がある。結局のところ、両者はデータをアクセスするために特定の暗号化キーを必要とするが、ZeroFS はユニークとして S3 クライアントに加えて Azure、Google Cloud など複数のクラウドプロバイダーへの互換性を拡張している。本文
Amazon S3 Files と ZeroFS の比較と採用判断ガイド
Amazon S3 Files および ZeroFS は、オブジェクトストレージ(S3 など)を裏付けにした POSIX ファイルシステムを提供します。しかし、バケットの利用方法において両者は根本的に異なるアプローチをとっています。どちらを選択すべきかは、用途における「バケットの役割」によって決定されます。
基本コンセプトの違い
ファイルの保持方法とデータフローについて、主な違いは以下の通りです。
- Amazon S3 Files:
- ファイルを通常のS3 オブジェクトとして保存します。
- バケットとハイパフォーマンスストレージ(HPS)間で双方向の同期を行います。
- マウント上のファイルやディレクトリは、バケット内のキーと 1:1 で対応し、内容も一致します。
- ZeroFS:
- バケットを**内部的な永続化層(データストア)**として利用します。
- S3 クライアントから見れば不透明な内部レイアウト( LSM ツリー+セグメント)となります。
- 直接の S3 アクセスは禁止され、代わりにパック化・圧縮・クライアントサイド暗号化を提供します。
ストレージレイアウトとアーキテクチャ
データ構造の比較
| 特徴 | Amazon S3 Files | ZeroFS |
|---|---|---|
| データ保存方法 | 1 ファイル=1 S3 オブジェクト(非同期エクスポート) | LSM ツリー+不変なデータセグメントへパック化 |
| メタデータ位置 | HPS(ハイパフォーマンスストレージ) | LSM ツリー上(S3 ストア内) |
| ファイルアイデンティティ | バケット内のキーと同義 | 意図的に隠蔽(不透明) |
| 書き込み永続化 | HPS への即座永続化 → S3 へ非同期エクスポート | データセグメントへのアップロード+LSM フラッシュ完了後 |
アーキテクチャ図
ZeroFS のデータフローとコンポーネント構成は以下の通りです。
flowchart TB subgraph CLIENTS["クライアント層"] NFS["NFS クライアント"] P9["9P クライアント"] NBD["NBD クライアント"] WEB["ウェブブラウザ"] end subgraph CORE["ZeroFS コア"] NFSD["NFS サーバー"] P9D["9P サーバー"] NBDD["NBD サーバー"] WEBUI["Web UI"] VFS["仮想ファイルシステム"] SEG["セグメントストア:圧縮・暗号化データ"] SLATE["LSM ツリー:メタデータ+エクステンツポインタ"] CACHE["ローカルキャッシュ"] NFSD --> VFS P9D --> VFS NBDD --> VFS WEBUI --> VFS VFS --> SEG VFS --> SLATE SEG --> CACHE SLATE --> CACHE end subgraph BACKEND["ストレージバックエンド"] SEGOBJ["不変なセグメントオブジェクト"] SSTS["メタデータ SST およびマニフェスト"] S3["S3 オブジェクトストア"] CACHE --> SEGOBJ CACHE --> SSTS SEGOBJ --> S3 SSTS --> S3 end NFS --> NFSD P9 --> P9D NBD --> NBDD WEB --> WEBUI
データフローの概要:
- ZeroFS: ファイルデータとメタデータは、オブジェクトストアに到達するまで別々のパス(セグメントと LSM ツリー)で管理されます。
- 共有キャッシュ: 両システムともクライアントページキャッシュを活用しますが、書き込み処理経路は異なります。
コストモデルの比較
| 費用項目 | Amazon S3 Files | ZeroFS |
|---|---|---|
| ストレージ | S3 ストア+HPS レート課金 | オブジェクトストアレートのみの課金 |
| アクセス費用 | ファイルアクセス・同期・エクスポート料金 | コンピューティング資源・キャッシュ運用コスト |
| 追加機能 | 標準 S3 API 使用可 | 暗号化パスワード管理が必要 |
オブジェクト間運用互換性
マウント経由で書き込まれたファイルの扱いには以下の制約があります。
- S3 Files:
- ファイルシステムからデータが非同期でエクスポートされます(通常、書き込み不活動開始後約 60 秒)。
- エクスポート完了後は、既存ツールが
API で読み取れます。GetObject - 競合処理: バケット側とマウント側で同時に修正すると、S3 側のデータ変更が優先され、マウント上の旧版は
に移動します。lost+found
- ZeroFS:
- S3 API を通じてファイルの直接読み取りは不可です(専用クライアントまたは暗号鍵が必要)。
- ファイル名を S3 キーとして取得も、セグメントを Parquet でスキャンもできません。
- 利点: 小ファイルに対して個別のエクスポート処理が不要で、圧縮・暗号化後まとめてパックされるため効率的です。
注意点: 即時の S3 可視性が必須なケース(例:外部アプリとの即座な共有)では、どちらのモデルもそのまま利用できません。
パフォーマンス特性
冷たいアクセス(Cold Access)対応
- Amazon S3 Files:
- ディレクトリ一覧時にメタデータを読み込み、小ファイルを HPS にインポートします。
- 大規模なファイル一覧表示には数秒かかる場合があります。
- 大ファイル(1 MiB 以上)は S3 からの直接読み取りとなり、遅延が発生します。
- ZeroFS:
- アジリティなキャッシュ運用により、書き込み後の読み取りで再度
する必要がありません。GET - キャッシュのライトバック処理により、最終的にはデータストアに反映されます。
- 冷たいミス発生時は LSM ツリー経由で解決し、関連するフレームをプリフェッチします(全ファイルインポート不要)。
- ワーキングセットがローカルにある場合、S3 リクエスト数は大幅に減少します。
- アジリティなキャッシュ運用により、書き込み後の読み取りで再度
リードアヘッド戦略
- ZeroFS: セグメント内および跨セグメントでの適応的なプリフェッチを行います。
- S3 Files: Linux NFS の標準リードアヘッドと直接 S3 ルーティングに依存します。
コストシミュレーションと詳細
課金構造の概要
両者とも「S3 ストレージ+リクエスト料金」が発生しますが、その構成が異なります。
Amazon S3 Files の追加課金項目
- ハイパフォーマンスストレージ: GB/月あたり $0.30(最小 10 KiB)。
- 読み込み: GB あたり $0.03(HPS からのリード+S3 エクスポート含む)。
- 書き込み: GB あたり $0.06(HPS ライト+S3 インポート含む)。
ZeroFS の追加コスト要因
- サーバー運用費(1 つ以上必要)。
- 高可用性のためには通常 2 台推奨。
- ノードあたり約2 GB の RAM(メモリキャッシュ用)が必要。
- ディスクキャッシュの確保。
事例シナリオ:10,000 GiB の保存と一度の読み取り
注記:これは一般的なコスト比較ではなく、us-east-1 地域での S3 Standard を前提とした事例モデルです。インフラストラクチャ(サーバー代等)は除外せず考慮してください。
| ケース | ストレージ/月 (概算) | 一度の読み取りコスト | 合計小計 (目安) |
|---|---|---|---|
| ZeroFS (圧縮率 2:1) | ~$115 + インフラ費 | S3 GET リクエストのみ | ~$115 + インフラ費 |
| ZeroFS (圧縮率 1:1) | ~$230 + インフラ費 | S3 GET リクエストのみ | ~$230 + インフラ費 |
| S3 Files (直接読み取り*) | ~$230 + メタデータ | ~$1.17 + S3 GET | ~$231 + メタデータ+リクエスト |
| S3 Files (全量常驻読み) | $3,230 | $300 (インポート含む) | $3,530 (+ さらに$600 の追加費用) |
*「直接読み取り」は小規模な常驻(HPS にある)状態から 1 MiB を読むケース。全量常驻読み取りの場合、S3 Files は HPS への書き込みコストとエクスポートコストが累積します。
重要なコストポイント:
- 圧縮の恩恵: ZeroFS ではデータが圧縮されればするほど S3 リクエスト回数は減り、データ転送料金は抑制されます(例:2:1 圧縮でリードコストは約 $0.26/8 MiB)。
- 規模による逆転: 大規模ファイルのストリーミングでは S3 Files が低コストですが、データが常驻している間や書き込みが多い場合、S3 Files の課金(HPS レート+エクスポート費)は急速に増大します。
- 変動要素: 実際のコストはファイル数、圧縮率、I/O サイズ、常驻期間、
頻度により大きく変わります。fsync
運用上の注意点と制約
fsync と永続性の保証
- S3 Files:
を呼び出しても即座に S3 には現れません(非同期エクスポートのため)。HPS への書き込みは即時だが、バケットへの反映には時間がかかります。fsync - ZeroFS: エクスポートステップが存在しないため、2 つ目の可視化イベントはありません。9P プロトコル上の
応答は、データセグメントと LSM メタデータの認識が完了した後で返されます。再起動後でもデータは復元可能です。fsync
リネーム(Rename)操作
- S3 Files: バケット上での標準的なリネーム機能はありません。マウント上で実行すると裏側で「コピー+削除」を行い、一時的に 2 つのプレフィックスが見える可能性があります。大規模ファイル数(例:10 万件)の同期には数分かかる場合があります。
- ZeroFS: LSM のディレクトリエンリーのみを変更するため、原子性が高く高速です。子要素のコピーや S3 プレフィックスの公開は発生しません。
結論と採用指針
マウントポイントとして見た場合、両者は似ていますが、バケットが果たす約束は明確に異なります。
-
Amazon S3 Files が適しているケース:
- バケット内のファイルがそのまま通常の S3 オブジェクトとして扱われる必要がある場合。
- 既存の S3 ツールチェーンとの互換性が最重要視される場合。
- データを頻繁に読み書きし、常驻させない(ストリーミング用途)場合。
-
ZeroFS が適しているケース:
- オブジェクトストアを私密的な永続化層として扱いたい場合。
- 小ファイル多数やランダムアクセスが主なユースケースの場合。
- S3 API に依存せず、高いパフォーマンスと暗号化機能を必要とする場合。
- コスト効率を考慮し、圧縮によりデータ転送量を削減したい場合。