web-dev-qa-db-ja.com

ファイルアップロードWebサイトの代替GlusterFS

数百キロバイトから数ギガバイトの範囲のファイルを含む、いくつかのファイルアップロードWebサイトがあります。

現在、いくつかのサーバーの配布複製Glusterボリュームにすべてのファイルがあります。

Glusterでの私の最大の問題は、速度です。

たとえば、それぞれ平均500KBの最大80,000枚の画像を含むフォルダがあり、画像の所有者を変更するのに数時間かかりました。

今のところすべてはかなりまともですが、もっと多くのファイルがあり、それらを操作するのに時間がかかるのではないかと心配しています。

どのような選択肢がありますか? Glusterで何か問題がありますか?

これは私のgluster構成です:

performance.cache-size: 1GB
performance.cache-refresh-timeout: 60
performance.cache-max-file-size: 100KB
cluster.choose-local: true
performance.readdir-ahead: on
performance.io-thread-count: 16
client.event-threads: 3
server.event-threads: 3
4
Alex Dumitru

分散ファイルシステムは、多数のファイルに対してバッチ操作を実行すると問題が発生します。結局のところ、すべての変更をリモートマシンに伝播する必要があり、ローカルホストのみと比較して遅延が急増しました。これは、メタデータを変更する操作を実行するときに特に顕著になります。実際のデータには触れず、ローカルで非常に高速です。ただし、リモートレプリケーションは完全に遅延に制限されます。

基本的に2つの解決策があります。

  • ファイル共有アプローチを使用して、特定のボックスにファイルをアップロードし、NFS経由でエクスポートします。 NFSは特効薬ではありませんが(そしてスピードモンスターではありません)、クライアント側のキャッシングと組み合わせると、適切に実行できます。
  • 非同期ファイルレプリケーションシステムを lsyncd (またはrsyncに基づくもの)として使用します
1
shodanshok

lsyncdプログラムを、サーバーのコンテンツを同期する必要がある同様の状況で使用しました。内部的には、rsyncを使用してサーバー間でファイルを同期します。

ただし、欠点は、アップロードを単一のサーバーに直接送信し、そのサーバーからすべてのサーバーにファイルを同期する必要があることです。

2
Tero Kilkanen