web-dev-qa-db-ja.com

Amazon S3バケットをローカルディレクトリとしてマウントするs3fsの安定性

LinuxでAmazon S3バケットをローカルディレクトリとしてマウントする場合、s3fsはどの程度安定していますか?需要の高い実稼働環境に推奨または安定していますか?

より良い/類似したソリューションはありますか?

更新: EBSを使用し、NFSを介して他のすべてのAMIにマウントする方が良いでしょうか?

67
arod

s3fsには良い記事があります 、これを読んだ後、EBSシェアに頼りました。

S3fsを使用する際のいくつかの重要な考慮事項、すなわちS3の固有の制限に関連するものを強調しています。

  • ファイルは5GBを超えることはできません
  • ファイルを部分的に更新することはできないため、1バイトを変更するとファイル全体が再アップロードされます。
  • 多くの小さなファイルでの操作は非常に効率的です(結局、それぞれが個別のS3オブジェクトです)が、大きなファイルは非常に非効率的です
  • S3は部分的/チャンクダウンロードをサポートしていますが、s3fsはこれを利用しないため、1GBファイルの1バイトだけを読みたい場合は、GB全体をダウンロードする必要があります。

したがって、s3fsが実行可能なオプションであるかどうかは、保存する内容によって異なります。たとえば、写真を保存している場合、ファイル全体を書き込むか、ファイル全体を読みたい場合は、ファイルをインクリメンタルに変更しないでください。 API直接?

アプリケーションデータ(データベースファイル、ログファイルなど)について少しだけインクリメンタルな変更を行う場合は、S3 Justが機能しないため、インクリメンタルに変更することはできません。

上記の記事では、S3上に仮想ファイルシステムを実装することでパフォーマンスの問題を回避する同様のアプリケーション- s3backer について説明しています。これはパフォーマンスの問題を回避しますが、それ自体にいくつかの問題があります。

  • 書き込みの遅延によるデータ破損のリスクが高い
  • ブロックサイズが小さすぎると(4Kのデフォルトなど)、かなりの追加コストがかかる可能性があります(4Kブロック分のストレージで50GBの場合は130ドル)
  • ブロックサイズが大きすぎると、データ転送とストレージの料金が大幅に増加する可能性があります。
  • メモリ使用量が極端に高くなる可能性があります。デフォルトでは、1000ブロックをキャッシュします。
    デフォルトの4Kブロックサイズでは問題ではありませんが、ほとんどのユーザー
    おそらくブロックサイズを増やしたいでしょう。

EC2インスタンスから共有されたEBSマウントドライブに頼りました。ただし、最もパフォーマンスの高いオプションですが、1つの大きな問題があります。EBSマウントNFS共有には、独自の問題-単一障害点があります。 EBSボリュームを共有しているマシンがダウンすると、共有にアクセスするすべてのマシンでアクセスできなくなります。

これは私が一緒に暮らすことができたリスクであり、最終的に選択したオプションでした。これがお役に立てば幸いです。

90
reach4thelasers

これは古い質問なので、過去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スタイル)との完全同期です。これにより、エンタープライズ版のDropBoxまたはGoogle Drive for S3になりますが、それに伴うクォータと料金を争う必要はありません。

17
aleemb