次の方法で共有


SMB Azure ファイル共有のパフォーマンスを向上させる

この記事では、SMB マルチチャネルやメタデータ キャッシュの使用など、SSD (Premium) SMB Azure ファイル共有のパフォーマンスを向上させる方法について説明します。

適用対象

管理モデル 課金モデル メディア レベル 冗長性 中小企業 ネットワークファイルシステム(NFS)
Microsoft.Storage プロビジョニング済み v2 HDD (標準) ローカル (LRS) はい いいえ
Microsoft.Storage プロビジョニング済み v2 HDD (標準) ゾーン (ZRS) はい いいえ
Microsoft.Storage プロビジョニング済み v2 HDD (標準) geo (GRS) はい いいえ
Microsoft.Storage プロビジョニング済み v2 HDD (標準) ジオゾーン (GZRS) はい いいえ
Microsoft.Storage プロビジョニング済み v1 SSD (プレミアム) ローカル (LRS) はい いいえ
Microsoft.Storage プロビジョニング済み v1 SSD (プレミアム) ゾーン (ZRS) はい いいえ
Microsoft.Storage 従量課金制 HDD (標準) ローカル (LRS) はい いいえ
Microsoft.Storage 従量課金制 HDD (標準) ゾーン (ZRS) はい いいえ
Microsoft.Storage 従量課金制 HDD (標準) geo (GRS) はい いいえ
Microsoft.Storage 従量課金制 HDD (標準) ジオゾーン (GZRS) はい いいえ

パフォーマンスの最適化

次のヒントを参考にして、パフォーマンスを最適化することができます。

  • ストレージ アカウントとクライアントを同じ Azure リージョンに共存させて、ネットワーク待ち時間を短縮します。
  • マルチスレッド アプリケーションを使用し、複数のファイルに負荷を分散します。
  • SMB マルチチャネルのパフォーマンス上の利点は、負荷を分散するファイルの数と共に増えます。
  • SSD 共有のパフォーマンスは、IOPS とスループット、単一ファイルの制限など、プロビジョニングされた共有サイズによって制限されます。 詳細については、 プロビジョニング v1 モデルの理解を参照してください。
  • 1 つの VM クライアントの最大パフォーマンスは VM の制限に引き続き縛られます。 たとえば、 Standard_D32s_v3 は約 1.86 GiB/秒の最大帯域幅をサポートできます。VM からのエグレス (ストレージへの書き込み) は従量制課金されます。 イングレス (ストレージからの読み取り) は行われません。 ファイル共有のパフォーマンスは、コンピューターのネットワーク制限、CPU、使用可能な内部ストレージのネットワーク帯域幅、IO サイズ、並列処理、およびその他の要因の影響を受けます。
  • 通常、最初のテストはウォームアップです。 結果を破棄し、テストを繰り返します。
  • パフォーマンスが 1 つのクライアントによって制限されていて、ワークロードがプロビジョニングされた共有制限をまだ下回っている場合は、複数のクライアントに負荷を分散することでパフォーマンスを向上させることができます。

IOPS、スループット、I/O サイズの関係

スループット = IO サイズ * IOPS

I/O サイズが大きくなるとスループットが向上して、待ち時間が多くなり、その結果、正味の IOPS 数が少なくなります。 I/O サイズが小さいと IOPS が高くなりますが、ネット スループットと待機時間が低下します。 詳細については、「Azure Files のパフォーマンスについて」を参照してください。

SMB マルチチャネル

SMB マルチチャネルにより、SMB クライアントが SMB ファイル共有に複数のネットワーク接続を確立できます。 Azure Files では、Windows クライアントの SSD ファイル共有で SMB マルチチャネルがサポートされています。 サーバー側では、SMB マルチチャネルが、すべての Azure リージョンで新しく作成された Azure ストレージ アカウントに対して既定で有効になりました。 SMB マルチチャネルを有効にするためのその他のコストはありません。

メリット

SMB マルチチャネルを使用すると、クライアントから、複数のネットワーク接続を使用して、パフォーマンスを向上させることができ、所有コストも削減します。 複数の NIC の帯域幅を集約し、Receive Side Scaling (RSS) サポートを利用して NIC の I/O 負荷を複数の CPU に分散できるようにすることで、パフォーマンス向上を達成します。

  • スループットの向上: 複数接続により、複数のパスでデータを並列で転送できるため、ファイルのサイズが大きく、I/O のサイズが大きいファイルを使用し、単一の VM または小さな VM セットからの高スループットを必要とするワークロードに大きなメリットがあります。 これらのワークロードには、コンテンツ作成やコード変換のためのメディアやエンターテインメント、ゲノミクス、金融サービスのリスク分析などがあります。
  • 高 IOPS:NIC RSS 機能を使用すると、複数の CPU で複数の接続がある場合に効果的な負荷分散を行うことができます。 これは、より高い IOPS スケールと VM CPU の有効活用に役立ちます。 これは、データベース アプリケーションなど、I/O のサイズが小さいワークロードに便利です。
  • ネットワーク フォールト トレランス: 複数接続により、クライアントが単一の接続に依存しなくなるため、中断のリスクが軽減されます。
  • 自動構成: クライアントとストレージ アカウントで SMB マルチチャネルを有効にすると、既存の接続を動的に検出できるようになり、必要に応じて追加の接続パスを作成できます。
  • コストの最適化: ワークロードは、SSD ファイル共有に接続しながら、単一の VM または少数の VM からより高いスケールを実現できます。 これにより、ワークロードを実行および管理するために必要な VM の数が減り、総保有コストを削減できます。

SMB マルチチャネルの詳細については、Windows のドキュメントを参照してください。

この機能により、マルチスレッド アプリケーションのパフォーマンスが向上するメリットが得られますが、通常シングルスレッド アプリケーションには役立ちません。 詳細については、「パフォーマンスの比較」セクションを参照してください。

制限事項

Azure ファイル共有の SMB マルチチャネルには、現在、次の制限があります。

  • SSD ファイル共有でのみ使用できます。 HDD Azure ファイル共有では使用できません。
  • SMB 3.1.1 を使用しているクライアントでのみサポートされます。 SMB クライアント オペレーティング システムに推奨レベルの修正プログラムが適用されていることを確認します。
  • チャネルの最大数は 4 です。詳細については、こちらを参照してください。

構成

SMB マルチチャネルは、機能がクライアント側 (お使いのクライアント) とサービス側 (お使いの Azure ストレージ アカウント) の両方で有効になっている場合にのみ機能します。

Windows クライアントでは、SMB マルチチャネルが既定で有効になっています。 次の PowerShell コマンドを実行して、構成を確認できます。

Get-SmbClientConfiguration | Select-Object -Property EnableMultichannel

Azure ストレージ アカウントで SMB マルチチャネルが有効になっていない場合は、SMB マルチチャネルの状態に関するページを参照してください。

SMB マルチチャネルを無効にする

ほとんどのシナリオ (特にマルチスレッドのワークロード) では、クライアントのパフォーマンスは SMB マルチチャネルにより向上するはずです。 しかしながら、シングルスレッドのワークロードやテスト目的など、特定のシナリオでは、SMB マルチチャネルを無効にした方がよい場合があります。 詳細については、「パフォーマンスの比較」と SMB マルチチャネルの状態に関するページを参照してください。

SMB マルチチャネルが正しく構成されていることを確認する

  1. 新しい SSD ファイル共有を作成するか、既存の SSD ファイル共有を使用します。
  2. クライアントが SMB マルチチャネルをサポートしている (1 つまたは複数のネットワーク アダプターの Receive Side Scaling が有効になっている) ことを保証します。 詳細については、Windows のドキュメントを参照してください。
  3. クライアントにファイル共有をマウントします。
  4. アプリケーションで負荷を生成します。 robocopy /MT などのコピー ツールや Diskspd などのパフォーマンス ツールを使用してファイルの読み取り/書き込みを行うと、負荷を生じさせることができます。
  5. 管理者として PowerShell を開き、次のコマンドを使用します: Get-SmbMultichannelConnection |fl
  6. MaxChannels および CurrentChannels プロパティを検索します。

パフォーマンスの比較

読み取り/書き込みのワークロード パターンには、シングルスレッドとマルチスレッドの 2 つのカテゴリがあります。 ほとんどのワークロードで複数のファイルが使用されますが、共有内の 1 つのファイルを使ってワークロードが動作する特殊なユース ケースがあります。 このセクションでは、それぞれのユース ケースとパフォーマンスへの影響について説明します。 一般に、ほとんどのワークロードはマルチスレッドであり、ワークロードが複数のファイルに分散されるため、SMB マルチチャネルを使用することでパフォーマンスの大幅な向上が見られるはずです。

  • マルチスレッド、複数ファイル: ワークロード パターンによっては、複数のチャネルでの読み取りと書き込みの I/O のパフォーマンスが大幅に向上するはずです。 IOPS、スループット、待ち時間について、パフォーマンスが 2 から 4 倍向上します。 このカテゴリでは、最適なパフォーマンスを実現するために SMB マルチチャネルを有効にする必要があります。
  • マルチスレッド/単一ファイル: このカテゴリのほとんどのユース ケースでは、特にワークロードの平均 I/O サイズが最大 16,000 > の場合、ワークロードで SMB マルチチャネルを有効にするとメリットがあります。 SMB マルチチャネルのメリットが得られるシナリオ例としては、大きな単一ファイルのバックアップや回復があります。 例外として SMB マルチチャネルを無効にした方がよいのは、I/O が小さくてワークロードが重い場合です。 この場合、10% ほどのわずかなパフォーマンス低下が見られることがあります。 ユース ケースに応じて、複数のファイルに負荷を分散させるか、機能を無効にすることを検討してください。 詳細については、「構成」セクションを参照してください。
  • シングルスレッド、複数ファイルまたは単一ファイル: ほとんどのシングルスレッド ワークロードでは、並列処理がないため、パフォーマンス上の利点は最小限にとどまります。 SMB マルチチャネルが有効になっている場合、通常は 10% ほどのわずかなパフォーマンスの低下が見られます。 この場合は、SMB マルチチャネルを無効にすることをお勧めします。ただし、例外が 1 つあります。 シングルスレッドのワークロードで複数のファイルに負荷を分散でき、かつ大きめの平均 I/O サイズ (約 16k 超) で使用する場合は、SMB マルチチャネルによって多少のパフォーマンス上の利点が得られます。

パフォーマンス テストの構成

この記事のグラフで使用されている構成は、単一の標準 D32s v3 VM で、単一の RSS 対応 NIC を備え、チャネルは 4 つです。 負荷の生成には、diskspd.exe をマルチスレッドで使用しました。IO 深度は 10、様々な I/O サイズのランダムな I/O です。

SMB マルチチャネルを使用した、マルチスレッド/複数ファイル

負荷は、IO サイズが異なる 10 個のファイルに対して生成されました。 スケールアップ テストの結果には、SMB マルチチャネルを有効にした IOPS とスループットのテスト結果の両方で大幅な改善が示されました。 それぞれの結果を以下の図に示します。

パフォーマンスのダイアグラム。

スループットのパフォーマンスの図。

  • 単一の NIC で、読み取りの場合は 2 から 3 倍のパフォーマンス向上、書き込みの場合は IOPS とスループットの両方で 3 から 4 倍の向上が見られました。
  • NIC が 1 つ、チャネルが 4 つという制限があっても、SMB マルチチャネルにより、IOPS とスループットが VM の制限に達することができました。
  • エグレス (またはストレージへの読み取り) は従量制課金されないため、読み取りスループットは VM 発行の約 1.86 GiB/秒の制限を超えることができました。テスト > 2.7 GiB/秒を達成しました。イングレス (またはストレージへの書き込み) には、引き続き VM の制限が適用されます。
  • 複数のファイルに負荷を分散することにより、大幅な改善が可能になりました。

このテストで使用されるコマンドの例を次に示します。

diskspd.exe -W300 -C5 -r -w100 -b4k -t8 -o8 -Sh -d60 -L -c2G -Z1G z:\write0.dat z:\write1.dat z:\write2.dat z:\write3.dat z:\write4.dat z:\write5.dat z:\write6.dat z:\write7.dat z:\write8.dat z:\write9.dat

SMB マルチチャネルを使用したマルチスレッド、単一ファイルのワークロード

この負荷は、128 GiB の単一ファイルに対して生成されました。 SMB マルチチャネルを有効にすると、マルチスレッド、単一ファイルを使用したスケールアップ テストのほとんどの場合に改善が見られました。 それぞれの結果を以下の図に示します。

IOPS パフォーマンスの図。

単一ファイルのスループット パフォーマンスの図。

  • 平均 I/O サイズが大きい (約 16k 超) の単一の NIC では、読み取りと書き込みの両方が大幅に改善しました。
  • I/O サイズが小さい場合は、SMB マルチチャネルが有効になっていると、パフォーマンスに与える影響はわずかで 10% ほどでした。 これは、複数のファイルに負荷を分散するか、機能を無効にすることで軽減できます。
  • パフォーマンスは、単一ファイルの制限に引き続き縛られます。

SSD ファイル共有のメタデータ キャッシュ

メタデータ キャッシュは、次の改善を目的とした SSD Azure ファイル共有の機能強化です。

  • メタデータの待ち時間を短縮する
  • メタデータ スケール制限の引き上げ
  • 待機時間の一貫性、利用可能な IOPS の向上、ネットワーク スループットの向上

この機能により、次のメタデータ API が向上し、Windows クライアントと Linux クライアントの両方から使用できます。

  • 作成
  • 開く
  • 閉じる
  • 削除

現在、この機能は SSD ファイル共有でのみ使用できます。 この機能の使用に関連する追加コストはありません。 また、登録して SSD ファイル共有のファイル ハンドルの制限を増やすこともできます (プレビュー)。

メタデータ キャッシュ機能に登録する

使用を開始するには、Azure portal または Azure PowerShell を使用してこの機能に登録します。

  1. Azure portal にサインインします。
  2. [プレビュー機能] を検索して選択します。
  3. [種類] フィルターを選択し、[Microsoft.Storage] を選択します。
  4. Azure Premium Files メタデータ キャッシュを選択し、[登録] を選択します。

重要

  • プレビュー機能の一覧に記載されていますが、GA SLA が適用され、間もなくすべてのアカウントでこの設定が既定値になり、登録が不要になります。
  • 登録が完了したら、アカウントのオンボードに 2 ~ 6 時間かかります。

メタデータ キャッシュによるパフォーマンスの向上

メタデータを含むほとんどのワークロードまたは使用パターンは、メタデータ キャッシュを使うことでメリットがあります。 ワークロードにメタデータが含まれるかどうかを判断するには、Azure Monitor を使用して、API ディメンション別にトランザクションを分割できます。

一般に、次のようなワークロードと使用パターンでメタデータが多くなります。

  • Web サービスやアプリ サービス
  • DevOps タスク
  • インデックス作成ジョブやバッチ ジョブ
  • ホーム ディレクトリや、多くの小さいファイル、ディレクトリ、またはハンドルと主に対話するその他のワークロードを含む仮想デスクトップ

次の図は、可能性のある結果を示したものです。

メタデータの待ち時間を短縮する

メタデータ キャッシュを使って、将来の検索のためにファイルとディレクトリのパスをキャッシュすると、メタデータの多い大規模なワークロードの場合、頻繁にアクセスされるファイルとディレクトリの待ち時間を 30% 以上短縮できます。

メタデータ キャッシュがある場合とない場合の待機時間をミリ秒単位で示すグラフ。

使用可能な IOPS を増やす

メタデータ キャッシュを使うと、メタデータの多い大規模なワークロードの場合、利用できる IOPS を 60% より多く増やすことができます。

メタデータ キャッシュがある場合とない場合の使用可能な IOPS を示すグラフ。

ネットワーク スループットを増やす

メタデータ キャッシュを使うと、メタデータの多い大規模なワークロードの場合、ネットワーク スループットを 60% より多く増やすことができます。

メタデータ キャッシュがある場合とない場合のネットワーク スループットを示すグラフ。

ファイルハンドル上限値の引き上げに登録する (プレビュー)

SSD SMB ファイル共有のファイルとディレクトリごとの同時実行ハンドルの最大数を 2,000 から 10,000 に増やすには、Azure portal または Azure PowerShell を使用してプレビュー機能に登録します。 ご質問がある場合は、メール azfilespreview@microsoft.com。

  1. Azure portal にサインインします。
  2. [プレビュー機能] を検索して選択します。
  3. [種類] フィルターを選択し、[Microsoft.Storage] を選択します。
  4. [Azure Premium Files の最大オープン ハンドル数の増加] を選択し、[登録] を選択します。

次のステップ