ここに s3fs に関する優れた記事があり、それを読んだ後、私は EBS 共有に頼りました。
s3fs を使用する際のいくつかの重要な考慮事項、つまり S3 固有の制限に関連する点が強調されています。
- ファイルは 5 GB を超えることはできません
- ファイルを部分的に更新することはできないため、1 バイトを変更するとファイル全体が再アップロードされます。
- 多数の小さなファイルに対する操作は非常に効率的ですが (結局のところ、それぞれが別個の S3 オブジェクトです)、大きなファイルは非常に非効率的です
- S3 は部分的/チャンク ダウンロードをサポートしていますが、s3fs はこれを利用していないため、1 GB ファイルの 1 バイトだけを読みたい場合は、GB 全体をダウンロードする必要があります。
したがって、s3fs が実行可能なオプションであるかどうかは、何を保存しているかによって異なります。たとえば、写真を保存している場合、ファイル全体を書き込んだり、ファイル全体を読み込んだりして、ファイルをインクリメンタルに変更することはありません。それで問題ありませんが、これを行っているのであれば、なぜ S3 を使用しないのかと尋ねるかもしれません。 API 直接?
小さな増分変更を行いたいアプリケーション データ (たとえば、データベース ファイル、ログ ファイル) について話している場合、それは明確なノーです。S3 はそのようには機能しません。 P>
上記の記事では、S3 を介して仮想ファイルシステムを実装することでパフォーマンスの問題を回避する、同様のアプリケーションである s3backer について説明しています。これはパフォーマンスの問題を回避しますが、それ自体にもいくつかの問題があります:
- 書き込みの遅延によるデータ破損のリスクが高い
- ブロック サイズが小さすぎると (例:4K のデフォルト)、かなりの追加コストが発生する可能性があります (例:4K ブロック相当のストレージで 50 GB に $130)
- ブロック サイズが大きすぎると、データ転送とストレージ料金が大幅に増加する可能性があります。
- メモリの使用量が極端に多い場合があります。デフォルトでは、1000 ブロックがキャッシュされます。
デフォルトの 4K ブロック サイズでは問題ありませんが、ほとんどのユーザーは
おそらくブロックサイズを大きくしたくなるでしょう。
EC2 インスタンスから共有される EBS Mounted Drived に頼りました。ただし、最もパフォーマンスの高いオプションですが、1 つの大きな問題があることを知っておく必要があります。EBS マウント NFS 共有には、単一障害点という独自の問題があります。 EBS ボリュームを共有しているマシンがダウンすると、共有にアクセスするすべてのマシンにアクセスできなくなります。
これは私が耐えることができたリスクであり、最終的に選択したオプションでした.これがお役に立てば幸いです。
これは古い質問なので、過去 1 年間の S3FS での経験を共有します。
最初は、多くのバグとメモリ リークがありました (2 時間ごとに再起動する cron ジョブがありました) が、最新のリリース 1.73 では非常に安定しています。
S3FS の最も優れた点は、心配することが 1 つ少なくなり、無料でパフォーマンス上のメリットが得られることです。
S3 リクエストのほとんどは PUT (~5%) と GET (~95%) になります。後処理が必要ない場合 (サムネイルの生成など)。後処理が必要ない場合は、最初から Web サーバーにアクセスして S3 に直接アップロードするべきではありません (CORS を使用)。
サーバーにアクセスしていると仮定すると、おそらく画像に対して何らかの後処理を行う必要があることを意味します。 S3 API を使用すると、サーバーにアップロードしてから S3 にアップロードします。ユーザーがクロップしたい場合は、S3 から再度ダウンロードしてからサーバーに再アップロードし、クロップしてから S3 にアップロードする必要があります。 S3FS とローカル キャッシングをオンにすると、このオーケストレーションが自動的に処理され、S3 からファイルをダウンロードする手間が省けます。
キャッシングでは、EC2 のエフェメラル ドライブにキャッシングしている場合、パフォーマンス上の利点が得られ、何も心配することなくキャッシュを消去できます。ディスク容量が不足しない限り、キャッシュを消去する必要はありません。これにより、検索やフィルタリングなどのトラバース操作がはるかに簡単になります。
私が望んでいることの 1 つは、S3 (RSync スタイル) との完全な同期です。そうすれば、S3 用の DropBox または Google Drive のエンタープライズ バージョンになりますが、それに伴う割り当てや料金と争う必要はありません。