web-dev-qa-db-ja.com

集中的な読み取りと書き込みのための分散ファイルシステムの選択

私は一連のサーバー(HP ProLiant、34台のサーバー)を持っており、それぞれに500Gのハードドライブ容量があります。これらのサーバーは、大まかに2つの「フェーズ」に分類されるプロセスを実行する計算クラスターの一部です。

  • フェーズ1:少数の大きな(最大6Gb)ファイルの読み取りと比較的大きな(最大1〜2Gb)ファイルの書き込み。
  • フェーズ2:大量(数百)の小さなファイルを読み書きし、それらを組み合わせて大きなファイルにします。また、これらのファイルは、「トランザクションポイント」として機能する一時ファイルとともに生成されます。

サーバーは同じエンクロージャーを共有せず、ギガビットイーサネットを介して接続されます。

以前の質問 のように、最初は単一のサーバーにNFS共有を配置しましたが、同時実行性のレベルにより、可用性とロックの問題が発生し、プロセスが第2フェーズで失敗することがよくありました。

サーバーでディスクを使用できるようになったので、分散ファイルシステムを使用することを考えました。私の最初のアプローチ(他の場所で成功したテストのおかげで使用された)は、GlusterFS(分散+複製セットアップ)を使用することでした。

ただし、最初のフェーズでは完全に機能しますが、ネットワークの遅延がプール内のすべてのサーバーによるこれらすべての同時読み取りと書き込みを処理するのに十分なほど低くなく、さまざまなサーバーが発生するため、2番目のフェーズで問題が発生することはありません。同期がとれなくなるため、途中で奇妙なエラーが発生します(ファイルの欠落、奇妙なアクセス許可の拒否エラーなど)。

また、「問題」は、サーバー自体(またはサーバーの一部、すべてを使用する必要はありません)がストレージを提供するとともに計算を実行する必要があることです(これは寄付されたリソースであるため、これ以上のことはできません)それ)。

これはすべて、ユースケースを説明するためのものであり、「フェーズ2」を処理するのに最適な分散ファイルシステムは何でしょうか。ファイルレベルで何かが必要であることに注意してください。マウントポイントまたは仮想デバイスのいずれか。

3
Einar

LizardFSGfarmFS がこのタスクに適していると思います。

どちらのストレージシステムもメタデータ(つまりディレクトリ)サーバーを使用しており、数百万のファイルに対して低遅延の操作を可能にします。
LizardFS「マスター」(つまりメタデータサーバー)はRAM(メモリフットプリントは3未満)を使用しますGiB for 7_000_000 files)whileGfarmFSメタデータサーバーはPostgreSQLを使用します。

1
Onlyjob

私の$ .02を投入するには:

ceph を見てください。各サーバーに0.5ギガバイトのメモリを投入し(すべてのOSDにします)、3台のサーバーをMDS/MONとして指定します(負荷に応じて、他の集中的な処理を実行する場合と実行しない場合があります)。オブジェクトストレージとして、ブロックデバイスとして、またはファイルシステムとして使用してください...それはあなた次第です...それは冗長であり、高速である可能性があります。これは(多少の調整を加えて) ペタバイト にスケーリングします。

0
Fox

ファイルシステムはくだらないデータベースを作り、ネットワークファイルシステムはさらに悪いデータベースを作ります。

フェーズ2:私にはデータベースのようなにおいがします。

最近はたくさんの選択肢があります。基本的なキー/値ストアデータベースは、セットアップと保守が比較的簡単です。これは、どのような選択肢が可能かを知るための素晴らしい本です。

http://pragprog.com/book/rwdata/seven-databases-in-seven-weeks