Share via


Windows Azure のフラット ネットワーク ストレージと 2012 年のスケーラビリティ目標

このポストは、11 月 3 日に投稿された Windows Azure’s Flat Network Storage and 2012 Scalability Targets の翻訳です。

今年の始めに、マイクロソフトはすべてのデータセンターに Windows Azure 用フラット ネットワークを展開し、Windows Azure ストレージ向けフラット ネットワーク ストレージ (FNS) を構築しました。フラット ネットワーク構造を採用した理由は、ストレージ クライアントで非常に高速なネットワーク接続を実現するためです。この新しいネットワーク構造により帯域幅が増加し、Windows Azure 仮想マシン (仮想マシンの永続ディスクは Windows Azure ストレージの高耐久性ネットワークに接続された BLOB として格納されます) のサポートが可能となります。また、コンピューティング サービスとストレージの間に多くの帯域幅が必要な MapReduce や HPC などのシナリオにも対応できます。

Windows Azure の運用開始時点で、マイクロソフトはお客様が仮想マシンから利用するコンピューティング サービスをストレージから分離する方針を決めていました。これは、それぞれを独立して拡張できるようにすると共に、マルチテナント機能の提供や分離性の実現を容易にすることを狙ったものです。目標とするシナリオを実現するには、ネットワークのスケールとスループットを飛躍的に向上せる必要がありました。Windows Azure ネットワーキング チーム (Albert Greenberg が統括) は Windows Azure ストレージ、ファブリック、および OS の各チームと連携して、ハードウェア、ソフトウェアの両面からネットワーク機能を向上させるための開発と展開を進めました。その結果、FNS の採用に至りました。

新しいストレージ ハードウェアおよび高帯域幅ネットワークでは大幅な機能強化が実施されており、第 2 世代ストレージ (Gen 2) と呼ばれています。次の表は、第 1 世代 (Gen 1) ハードウェアとの比較です。

ストレージ SKU

ストレージ ノードのネットワーク速度

コンピューティング サービスとストレージの間のネットワーク

ロード バランサー

ジャーナリング (英語) に使用するストレージ デバイス

Gen 1

1 Gbps

階層型ネットワーク

ハードウェア ロード バランサー

ハード ディスク ドライブ

Gen 2

10 Gbps

フラット ネットワーク

ソフトウェア ロード バランサー

SSD

第 2 世代 SKU の展開とソフトウェアの機能強化により、フラット ネットワーク (英語) トポロジが使用され、コンピューティング サービスとストレージの間で高い帯域幅が確保されます。Windows Azure に実装されたフラット ネットワークは、"Quantum 10" (Q10) ネットワーク アーキテクチャと呼ばれています。Q10 は完全な非ブロッキング型の 10 Gbps 通信をベースとして使用する完全なメッシュ型ネットワークで、各 Windows Azure データセンターでは帯域幅 50 Tbps 超の集約型バックプレーンが実現されます。また、ロード バランサーがハードウェア制御からソフトウェア制御に変更されたことも大きな変更点の 1 つで、信頼性とスループットが向上しています。さらに、ストレージのアーキテクチャと構造 (詳細はこちらの記事 (英語) を参照) は新しい Q10 ネットワークに合わせて調整されており、Windows Azure ストレージではフラット ネットワーク ストレージが最大限に活用されます。

このような機能強化の結果、Windows Azure ストレージのスケーラビリティ目標が引き上げられ、新しいストレージ アカウントに対してはすべて第 2 世代ハードウェア SKU が適用されます。この新しいスケーラビリティ目標は、2012 年 6 7 以降に作成されたすべてのストレージ アカウントに適用されます。それ以前に作成されたストレージ アカウントは、従来のスケーラビリティ目標が引き続き適用されます (詳細はこちらの記事 (英語) を参照)。ストレージ アカウントの移行はできないため、この新しいスケーラビリティ目標の対象は 2012 年 6 月 7 日以降に作成されたストレージ アカウントのみとなります。どうぞご了承ください。

現在ご使用中のストレージ アカウントの作成日は、新しいポータルで対象のストレージ アカウントをクリックすると、[概要(quick glance)] セクションで確認できます (下図参照)。

ストレージ アカウントのスケーラビリティ目標

2012 年末までには、フラット ネットワーク構造に合わせたソフトウェア機能強化を完了する予定です。これに伴い、2012 年 6 月 7 日以降に作成された各ストレージ アカウントに対するスケーラビリティ目標は次のようになります。

  • 容量 – 最大 200 TB
  • トランザクション – 1 秒あたり最大 20,000 エンティティ/メッセージ/BLOB
  • 地理的冗長ストレージ アカウントの帯域幅
    • 受信 – 5 ギガビット/秒
    • 送信 – 10 ギガビット/秒
  • ローカル冗長ストレージ アカウントの帯域幅
    • 受信 – 10 ギガビット/秒
    • 送信 – 15 ギガビット/秒

ストレージ アカウントは地理的冗長ストレージの使用が既定で有効になっており、地理的な冗長性が確保されます。これを無効にしてローカル冗長ストレージを使用することもできます。この場合、地理的冗長ストレージよりも料金が安く、送受信速度の目標値は高くなります (2012 年末まで)。地理的冗長ストレージおよびローカル冗長ストレージの詳細については、こちらの記事を参照してください。

実際のストレージ アカウントでのトランザクション目標および帯域幅目標の達成状況は、使用するアプリケーションが処理するオブジェクトのサイズ、アクセス パターン、およびワークロードの種類によって大きく変化します。この目標では不十分な場合は、BLOB コンテナー、テーブル、キュー、およびオブジェクトをパーティション分割し、複数のストレージ アカウントを使用して処理するようにサービスを構築します。既定では、1 つの Windows Azure サブスクリプションで 20 個のストレージ アカウントが使用できます。データ量がペタバイト単位になるなど、さらに多くのデータを扱うためにストレージ アカウントが不足する場合は、カスタマー サポートにお問い合わせください。

パーティションのスケーラビリティ目標

ストレージ アカウント内のオブジェクトはすべてパーティション分割されます (詳細はこちらの記事 (英語) を参照)。そのため、抽象化ストレージの 1 パーティションあたりのパフォーマンス目標を把握しておくことが重要です。その値を次に示します (キューおよびテーブルのスループットは 1 KB のオブジェクトを使用して計測した場合)。

  • キュー 1 つあたりの値– 単一キュー内の全メッセージに対するアクセスは、単一のキュー パーティションを経由して実行されます。キュー 1 つあたりの処理速度の目標値:
    • 最大 2,000 メッセージ/秒
  • テーブル パーティション 1 つあたりの値– テーブル パーティションとは、同じパーティション キー値を持つテーブルの全エンティティを指します。通常、1 つのテーブルには複数のパーティションが存在します。テーブル パーティション 1 つあたりのスループットの目標値:
    • 最大 2,000 エンティティ/秒
    • これは 1 パーティションあたりの値で、1 テーブルあたりの数値ではありません。テーブルを適切にパーティション分割すると、最大 20,000 エンティティ/秒の処理が可能です。これが、先ほど説明したアカウント全体での目標値となります。
  • BLOB 1 つあたりの値 – BLOB のパーティション キーは "コンテナー名 + BLOB 名" です。つまり、BLOB は 1 パーティションにつき 1 BLOB となるように分割できます。これにより、BLOB へのアクセスをサーバー全体に分散させることができます。BLOB 1 つあたりのスループットの目標値:
    • 最大 60 メガバイト/秒

上記のスループットは最大目標値です。実際に使用するアプリケーションで達成可能なスループットは、アクセス対象のオブジェクトのサイズ、作業の種類 (ワークロード)、アクセス パターンにより大きく変化します。すべてのサービスについて、パーティション レベルでワークロードのパフォーマンス テストを実施することを推奨します。

アプリケーションのワークロードが単一パーティションの処理量の上限に達すると、"503 Server Busy" または "500 Operation Timeout" という応答が返されるようになります。このようなエラーが返される場合、アプリケーションは指数バックオフを使って再試行します。指数バックオフが実行されるとパーティションの負荷が減少し、そのパーティションに対するトラフィックのスパイクが緩和されます。

今回は、フラット ネットワーク ストレージの提供に向けたマイクロソフトの初期段階の取り組みについてご説明しました。今後も、コンピューティング サービスとストレージの間の帯域幅強化に向けて投資を続けると共に、ストレージ アカウントおよびパーティションのスケーラビリティ目標の向上に取り組んでいく予定です。

Brad Calder、Aaron Ogus Windows Azure ストレージ