Azure Storage のスケーラビリティおよびパフォーマンスのターゲット

概要

このトピックでは、Microsoft Azure Storage のスケーラビリティとパフォーマンスについて説明します。 その他の Azure の制約に関する概要は、「 Azure サブスクリプションとサービスの制限、クォータ、および制約」を参照してください。

注意

すべてのストレージ アカウントは新しいフラット ネットワーク トポロジで実行され、ストレージ アカウントがいつ作成されたかにかかわらず、以下に示すスケーラビリティおよびパフォーマンスのターゲットがサポートされます。 のフラット ネットワーク アーキテクチャおよびスケーラビリティの詳細については、 Microsoft Azure Storage の高い整合性を持つ高可用クラウド ストレージ サービスに関するページを参照してください。

重要

ここで示すスケーラビリティおよびパフォーマンスのターゲットは、ハイエンドのターゲットですが、達成可能です。 いかなる場合でも、ストレージ アカウントで達成される要求レートおよび帯域幅は、格納されたオブジェクトのサイズ、使用されているアクセス パターン、およびアプリケーションで実行されているワークロードの種類によって異なります。 必ずサービスをテストして、パフォーマンスがユーザー要件を満たしているかどうかを確認してください。 可能であれば、トラフィック量の急増を回避し、トラフィックがパーティション間でうまく分散されるようにしてください。

ワークロードがアプリケーションのパーティションで処理できる上限に達すると、Azure Storage はエラー コード 503 (サーバーがビジー状態) またはエラー コード 500 (操作タイムアウト) の応答を返しはじめます。 このような状況になった場合、アプリケーションで指数関数的バックオフによる再試行ポリシーを使用する必要があります。 指数関数的バックオフによって、そのパーティションへの負荷が減少し、そのパーティションへのトラフィック量の増加が緩和されます。

アプリケーションで必要とされるスケーラビリティが、単一ストレージ アカウントあたりのスケーラビリティ ターゲットを超えている場合、複数のストレージ アカウントを使用し、それらのストレージ アカウント間でデータが分割されるようにアプリケーションを構築できます。 ボリューム価格については、「 Azure Storage 料金 」をご覧ください。

Blob、キュー、テーブル、およびファイルのスケーラビリティ ターゲット

リソース 既定の制限
サブスクリプションあたりのストレージ アカウント数 2001
ストレージ アカウントの最大容量 500 TB2
ストレージ アカウントあたりの BLOB コンテナー、BLOB、ファイル共有、テーブル、キュー、エンティティ、メッセージの最大数 制限なし
単一の BLOB コンテナー、テーブル、キューの最大サイズ ストレージ アカウントの最大容量と同じ
ブロック BLOB 内または追加 BLOB 内の最大ブロック数 50,000
ブロック BLOB 内の最大ブロック サイズ 100 MB
ブロック BLOB の最大サイズ 50,000 x 100 MB (約 4.75 TB)
追加 BLOB のブロックの最大サイズ 4 MB
追加 BLOB の最大サイズ 50,000 x 4 MB (約 195 GB)
ページ BLOB の最大サイズ 8 TB
テーブル エンティティの最大サイズ 1 MB
テーブル エンティティの最大プロパティ数 252
キュー内の最大メッセージ サイズ 64 KB
ファイル共有の最大サイズ 5 TB
ファイル共有内の最大ファイル サイズ 1 TB (テラバイト)
ファイル共有内の最大ファイル数 制限は、ファイル共有の合計容量のみ (5 TB)
共有あたりの最大 IOPS 1,000
ファイル共有内の最大ファイル数 制限は、ファイル共有の合計容量のみ (5 TB)
コンテナー、ファイル共有、テーブル、またはキューごとの保存されるアクセス ポリシーの最大数 5
ストレージ アカウントあたりの最大要求レート BLOB: 有効な任意のサイズの BLOB に関して毎秒 20,000 要求2 (アカウントの送受信制限による制限のみ)
ファイル: ファイル共有あたり 1,000 IOPS (8 KB サイズ)
キュー: 毎秒 20,000 メッセージ (メッセージ サイズは 1 KB を想定)
テーブル: 毎秒 20,000 トランザクション (エンティティ サイズは 1 KB を想定)
単一 BLOB のターゲット スループット 毎秒最大 60 MB または毎秒最大 500 要求
単一キューのターゲット スループット (1 KB のメッセージ) 毎秒最大 2000 メッセージ
単一テーブル パーティションのターゲット スループット (1 KB のエンティティ) 毎秒最大 2000 エンティティ
単一ファイル共有のターゲット スループット 最大 60 MB/秒
ストレージ アカウントあたりの最大受信速度3 (米国リージョン) GRS/ZRS4 が有効な場合は 10 Gbps、LRS2 の場合は 20 Gbps
ストレージ アカウントあたりの最大送信速度3 (米国リージョン) RA-GRS/GRS/ZRS4 が有効な場合は 20 Gbps、LRS2 の場合は 30 Gbps
ストレージ アカウントあたりの最大受信速度3 (米国以外のリージョン) GRS/ZRS4 が有効な場合は 5 Gbps、LRS2 の場合は 10 Gbps
ストレージ アカウントあたりの最大送信速度3 (米国以外のリージョン) RA-GRS/GRS/ZRS4 が有効な場合は 10 Gbps、LRS2 の場合は 15 Gbps

1これには、Standard および Premium ストレージ アカウントの両方が含まれます。 必要なストレージ アカウントが 200 個を超える場合は、Azure サポートからリクエストを送信してください。 Azure Storage チームがビジネス ケースを確認します。承認された場合、最大 250 個のストレージ アカウントが与えられます。

2 Standard Storage アカウントの容量、受信/送信レート、要求レートを、公表されている上限以上の水準まで引き上げる必要がある場合は、Azure サポートにリクエストしてください。 Azure Storage チームがリクエストを審査し、ケース バイ ケースで上限の引き上げを承認します。

3"受信" とは、ストレージ アカウントに送信されるすべてのデータ (要求) のことです。 送信 とはストレージ アカウントから送信されるすべてのデータ (応答) のことです。

4Azure Storage のレプリケーションには次のオプションがあります。

  • RA-GRS: 読み取りアクセス地理冗長ストレージ。 RA-GRS が有効な場合、2 次拠点への送信ターゲットは、1 次拠点と同じになります。
  • GRS: geo 冗長ストレージ。
  • ZRS: ゾーン冗長ストレージ。 ブロック BLOB でのみ使用できます。
  • LRS: ローカル冗長ストレージ。

仮想マシンのディスクのスケーラビリティ ターゲット

Azure Virtual Machines は、複数のデータ ディスクの接続をサポートしています。 パフォーマンスを最適化するには、仮想マシンに接続する使用率が高いディスク数を制限して、スロットルを回避するようにします。 すべてのディスクの使用率が同時に高くならなければ、ストレージ アカウントは多数のディスクをサポートできます。

  • Azure Managed Disks の場合: Managed Disks 数の制限は、リージョンに適用され、ストレージの種類によっても変わります。 既定値かつ最大数は、サブスクリプション、リージョン、およびストレージの種類ごとに 10,000 個です。 たとえば、1 つのサブスクリプションと 1 つのリージョンで、10,000 個までの Standard 管理ディスクと 10,000 個までの Premium 管理ディスクを作成できます。

    管理スナップショットおよびイメージは、Managed Disks の制限に対してカウントされます。

  • Standard ストレージ アカウントの場合: Standard ストレージ アカウントには、20,000 IOPS という最大合計要求レートがあります。 Standard ストレージ アカウントの仮想マシン ディスク全体の合計 IOPS は、この制限を超えることはできません。

    1 つの Standard ストレージ アカウントでサポートされる使用率が高いディスク数は、要求レート制限に基づいて概算できます。 たとえば、次の表に示すように、Basic レベルの VM では、使用率の高いディスクの最大数は約 66 (ディスクあたり 20,000/300 IOPS) であり、Standard レベルの VM では約 40 (ディスクあたり IOPS 20,000/500) です。

  • Premium Storage アカウントの場合: Premium Storage アカウントの最大合計スループット レートは 50 Gbps です。 すべての VM ディスク全体の合計スループットは、この制限を超えることはできません。

詳細については、Windows VM のサイズLinux VM のサイズに関するページをご覧ください。

管理対象の仮想マシン ディスク

管理対象の仮想マシンの Standard ディスク

Standard ディスクの種類 S4 S6 S10 S20 S30 S40 S50
ディスク サイズ 32 GB 64 GB 128 GB 512 GB 1024 GB (1 TB) 2048 GB (2 TB) 4095 GB (4 TB)
ディスクあたりの IOPS 500 500 500 500 500 500 500
ディスクあたりのスループット 60 MB/秒 60 MB/秒 60 MB/秒 60 MB/秒 60 MB/秒 60 MB/秒 60 MB/秒

管理対象の仮想マシンの Premium ディスク: ディスクあたりの上限

Premium ディスクの種類 P4 P6 P10 P20 P30 P40 P50
ディスク サイズ 32 GB 64 GB 128 GB 512 GB 1024 GB (1 TB) 2048 GB (2 TB) 4095 GB (4 TB)
ディスクあたりの IOPS 120 240 500 2300 5000 7500 7500
ディスクあたりのスループット 25 MB/秒 50 MB/秒 100 MB/秒 150 MB/秒 200 MB/秒 250 MB/秒 250 MB/秒

管理対象の仮想マシンの Premium ディスク: VM あたりの上限

リソース 既定の制限
VM あたりの最大 IOPS GS5 VM1 で 80,000 IOPS
VM あたりの最大スループット GS5 VM1 で 2,000 MB/秒

1他の VM サイズの制限については、VM のサイズに関するトピックを参照してください。

非管理対象の仮想マシン ディスク

管理対象外の仮想マシンの Standard ディスク: ディスクあたりの上限

VM のレベル Basic レベルの VM Standard レベルの VM
ディスク サイズ 4095 GB 4095 GB
永続ディスクあたり最大 8 KB IOPS 300 500
最大 IOPS を実行するディスクの最大数 66 40

管理対象外の仮想マシンの Premium ディスク: アカウントあたりの上限

リソース 既定の制限
アカウントごとのディスク容量合計 35 TB
アカウントごとのスナップショット容量合計 10 TB
アカウントごとの最大帯域幅 (受信 + 送信1) 50 Gbps 以下

1受信とはストレージ アカウントに送信されるすべてのデータ (要求) のことです。 送信 とはストレージ アカウントから送信されるすべてのデータ (応答) のことです。

管理対象外の仮想マシンの Premium ディスク: ディスクあたりの上限

Premium Storage ディスク タイプ P10 P20 P30 P40 P50
ディスク サイズ 128 GiB 512 GiB 1024 GiB (1 TB) 2048 GiB (2 TB) 4095 GiB (4 TB)
ディスクあたりの最大 IOPS 500 2300 5000 7500 7500
ディスクあたりの最大スループット 100 MB/秒 150 MB/秒 200 MB/s 250 MB/秒 250 MB/秒
ストレージ アカウントあたりの最大ディスク数 280 70 35 17 8

管理対象外の仮想マシンの Premium ディスク: VM あたりの上限

リソース 既定の制限
VM あたりの最大 IOPS GS5 VM1 で 80,000 IOPS
VM あたりの最大スループット GS5 VM1 で 2,000 MB/秒

1他の VM サイズの制限については、VM のサイズに関するトピックを参照してください。

Azure リソース マネージャーのスケーラビリティ ターゲット

次の制限は、Azure リソース マネージャーと Azure リソース グループの使用時にのみ適用されます。

リソース 既定の制限
Storage アカウント管理操作数 (読み取り) 5 分あたり 800
Storage アカウント管理操作数 (書き込み) 1 時間あたり 200
Storage アカウント管理操作数 (リスト) 5 分あたり 100

Azure Storage 内のパーティション

Azure Storage に格納されているデータを含むすべてのオブジェクト (BLOB、メッセージ、エンティティ、およびファイル) はパーティションに属し、パーティション キーによって識別されます。 Azure Storage では、BLOB、メッセージ、エンティティ、およびファイルのトラフィック ニーズに合わせて、どのようにこれらのオブジェクトの負荷をサーバー間で分散するかがパーティションによって決まります。 パーティション キーは一意であり、BLOB、メッセージ、またはエンティティを見つけるために使用されます。

上の「 標準的なストレージ アカウントのスケーラビリティ ターゲット 」の表は、サービスごとの 1 つのパーティションにおけるパフォーマンス ターゲットの一覧です。

パーティションは、各ストレージ サービスの負荷分散およびスケーラビリティに以下のような影響を与えます。

  • BLOB: BLOB のパーティション キーは、アカウント名とコンテナー名と BLOB 名を組み合わせたものです。 つまり、BLOB への負荷からの要求に応じて、各 BLOB は独自のパーティションを持つことができます。 BLOB は、アクセスをスケールアウトするために多数のサーバーに分散させることができますが、1 つの BLOB を処理できるのは 1 台のサーバーのみです。 BLOB は BLOB コンテナーに論理的にグループ化できますが、このグループ化によってパーティション分割は影響を受けません。
  • ファイル: ファイルのパーティション キーは、アカウント名とファイル共有を組み合わせた名前です。 これは、ファイル共有内のすべてのファイルも、1 つのパーティションに存在することを意味します。
  • メッセージ: メッセージのパーティション キーはアカウント名とキュー名の組み合わせであるため、キュー内のすべてのメッセージは 1 つのパーティションにグループ化され、1 台のサーバーで処理されます。 ストレージ アカウント内のキューがどんなに多くとも、負荷が分散されるように、異なるキューが別のサーバーによって処理されることがあります。
  • エンティティ: エンティティのパーティション キーは、アカウント名とテーブル名とパーティション キーを組み合わせたものです。ここでパーティション キーは、エンティティに必要なユーザー定義された PartitionKey プロパティの値です。 同じパーティション キー値を持つすべてのエンティティは、同じパーティションにグループ化され、同じパーティション サーバーで処理されます。 これは、アプリケーションを設計する際に理解しておくべき重要なポイントです。 アプリケーションでは、エンティティを複数のパーティションに分散することで得られるスケーラビリティ上のメリットと、エンティティを 1 つのパーティションにグループ化することで得られるデータ アクセスのメリットのバランスをとってください。

テーブル内のエンティティのセットを単一のパーティションにグループ化する主な利点は、パーティションが 1 台のサーバー上にあるため、同じパーティション内のエンティティすべてにアトミック バッチ操作を実行できるということです。 そのため、エンティティのグループに対してバッチ操作を実行する場合は、同じパーティション キーでエンティティをグループ化することを検討します。

一方、同じテーブル内にあっても、パーティション キーが異なるエンティティは、異なるサーバー間で負荷分散できるため、スケーラビリティもさらに大きくなります。

テーブルのパーティション分割方法の設計に関する詳しい推奨事項については、 こちらをご覧ください。

関連項目