web-dev-qa-db-ja.com

ネットワーク共有をキャッシュするNFSサーバーをセットアップする方法

ユーザーデータは2つのかなり大きな(> 1 PB)OpenStack Swiftストレージクラスターに格納されます。それらをCluster Aとします)およびクラスターB

さらに、そのデータと対話する必要があるいくつかのPoPsがあります。これらのPoPのサーバーは実質的にディスクレスです。つまり、ユーザーデータがサーバーに保存されたり、ダウンロードされたりすることはありません。 PoPは一般的な世界にグループ化できますregions(egNorth America南アフリカ中央ヨーロッパ他)。

一部のPoPは、いずれかのクラスターのエンドポイントからSwiftエンドポイントからかなり離れているため、望ましくないレイテンシが発生します。これをある程度軽減するために、それぞれにキャッシングゲートウェイサーバーをセットアップしますリージョン。r/ wリクエストを最も近いクラスターにキャッシュします。

現在、任意のPoPのクライアントは、永続的にマウントされたSwift仮想ファイルシステムによってユーザーデータにアクセスします。これは、Swift ObjectをマウントするFuseモジュールですブロックデバイスとしてのストレージ(多かれ少なかれ)ただし、そもそもsvfsはそれほど安定していないため、クライアントは将来的にNFSを介してキャッシュサーバーにアクセスする必要があります。

これは、目的のアーキテクチャの1つのブランチの図です。

+------------------+                +------------------+    NFS   +------------------+
|    Cluster A     |     SVFS       |  Region 1 Cache  +---------->  R1 PoP a Client |
|                  +---------------->                  |          |                  |
|Persistent Storage|                |Ephemeral  Storage+----+     |Generates R/W Load|
+-----------------++                +------------------+    |     +------------------+
                  |                                         |
                  |                 +------------------+    | NFS +------------------+
                  |      SVFS       |  Region 2 Cache  |    +----->  R1 PoP b Client |
                  +----------------->                  |          |                  |
                                    |Ephemeral  Storage|          |Generates R/W Load|
                                    +------------------+          +------------------+

NFSの設定の基本 とsvfsに精通しています。

質問は:キャッシュサーバーを設定して、利用可能なすべてのリソース(指定されたキャッシュパーティション、RAM)を使用して、積極的かつ大量のデータをキャッシュする方法です。 svfsマウントポイントに書き込む前に可能な限り?基本的には次のようになります:Linuxでディレクトリをキャッシュするにはどうすればよいですか?

可能であれば、読み取りと書き込みを統合し、キャッシュをクラスターに書き込む必要がある場合は、スループットを最大化し、レイテンシを最小化するために、可能であればFuseリクエストのブロックサイズを少なくとも128kにする必要があります。

補遺1:いくつかのサーバーでクラスターマウントモジュールをsvfsからS3QLに切り替えました。 S3QLのキャッシングにより、パフォーマンスが少し向上しました。完全を期すために、いくつかのパフォーマンスデータを取得しようとします。

14
mınxomaτ

固有のLinuxメカニズム(cachefsまたはcachefilesdなど)が機能せず、予算がある場合は、 [〜#〜] wafs [ 〜#〜] (広域ファイルサービス)。これらは、NFS(およびCIFS)の積極的なキャッシングのために設計されたデバイスであり、通常WANリンクに含まれる待ち時間を隠そうとします。

1
Christian

私は本当にこの分野の専門家ではありません(しかし、それは確かに興味深いです!)。

私が最近見ているのは、主にLVMのdm-cacheで、その一部をキャッシュするSSDがあります。以下は、適切な概要を持つreadhatのテキストの例ですが、RHに関連付けられていません。 https://www.redhat.com/en/blog/improving-read-performance-dm-cache

1
Fredrik Lundhag