次の方法で共有


Azure VM の SQL Server 向けのストレージを構成する

適用対象: Azure VM 上の SQL Server

この記事では、Premium SSD を用いた Azure Marketplace を介してデプロイした Azure Virtual Machines (VM) で SQL Server 用にストレージを構成する方法について説明します。

マーケットプレース イメージを使用してデプロイされた SQL Server VM は、デプロイ時に変更できる既定のストレージのベスト プラクティスに自動的に従います。 これらの構成設定の一部は、デプロイ後に変更できます。

Note

この記事は、Premium SSD v2 ストレージ ではなく、Premium Storage を使用する Azure VM 上の SQL Server にのみ適用されます。

前提条件

自動化されたストレージ構成設定を使用するには、仮想マシンには次の特性が必要です。

新しい VM

次のセクションでは、新しい SQL Server 仮想マシンのストレージを構成する方法について説明します。

Azure portal

SQL Server のギャラリー イメージを使用して Azure VM をプロビジョニングするときは、[SQL Server の設定] タブの [ストレージ][構成の変更] を選んで、[ストレージの構成] ページを開きます。 既定値のままにすることも、ワークロードに基づいてご自分のニーズに最適なディスク構成の種類に変更することもできます。

[SQL Server の設定] タブと [構成の変更] オプションが強調表示されているスクリーンショット。

Note

サポートされている VM サイズを選択した場合は、Premium SSD v2 を使用することで、ディスク サイズ、IOPS、処理能力をきめ細かく制御できます。

データ ファイルとログ ファイルのドライブの場所を選び、ディスクの種類とディスク数を指定します。 IOPS 値を使用して、ビジネス ニーズを満たす最適なストレージ構成を決定します。 プレミアム ストレージを選択すると、「SQL Server VM のパフォーマンスのベスト プラクティス」に関する記事に従って、キャッシュ がデータ ドライブについては [読み取り専用] に、ログ ドライブについては [なし] に設定されます。

Azure portal での、プロビジョニング中の SQL Server VM ストレージ構成ページのスクリーンショット。

ディスク構成は完全にカスタマイズ可能であるため、SQL Server VM のワークロードに必要なストレージ トポロジ、ディスクの種類、IOPS を構成できます。 また、SQL Server VM がサポートされているリージョンにあり、サブスクリプションの Ultra Disks を有効にしている場合は、 ディスクの種類 のオプションとして Ultradisk を使用することもできます。

[TempDb のストレージ] で、データベース ファイルの場所、ファイルの数、初期サイズ、自動拡張サイズ (MB 単位) などの tempdb データベース設定を構成します。

  • 現在、デプロイ時の tempdb ファイルの最大数は 8 ですが、SQL Server VM のデプロイ後はさらにファイルを追加できます。
  • 推奨どおりに D: のローカル SSD ボリュームに SQL Server インスタンス tempdb を構成した場合、SQL IaaS Agent 拡張機能は、再プロビジョニング時に必要なフォルダーとアクセス許可を管理します。 Azure Marketplace のイメージを使用して SQL 仮想マシンを作成する必要はありません。

SQL VM の tempdb ストレージを構成できる場所のスクリーンショット。

さらに、ディスクのキャッシュを設定することもできます。 Premium ディスクで使用する場合、Azure VM には BLOB キャッシュと呼ばれる多層キャッシュ テクノロジがあります。 BLOB キャッシュでは、仮想マシンの RAM とローカル SSD の組み合わせがキャッシュに使用されます。

Premium SSD のディスク キャッシュは、[読み取り専用]、*読み取り書き込み、または [なし] にすることができます。

  • "読み取り専用" キャッシュは、Premium Storage に格納されている SQL Server データ ファイルの場合に非常にメリットがあります。 "読み取り専用" キャッシュを使用すると、読み取りは VM メモリおよびローカル SSD 内にあるキャッシュから実行されるので、読み取り待機時間は短く、読み取り IOPS は高く、スループットは高くなります。 これらの読み取りは、Azure Blob Storage に存在するデータ ディスクからの読み取りよりはるかに高速です。 Premium Storage では、ディスクの IOPS と処理能力のために、キャッシュからの読み取りはカウントされません。 そのため、アプリケーションの総 IOPS と総スループットを向上させることができます。

  • ログ ファイルは順次に書き込まれ、[読み取り専用] キャッシュによるメリットがないため、SQL Server ログ ファイルがホストされるディスクには [なし] キャッシュ構成を使用する必要があります。

  • SQL Server では 読み取り書き込み キャッシュでのデータ整合性がサポートされていないため、読み取り書き込み キャッシュを使用して SQL Server ファイルをホストしないでください。 書き込みが "読み取り専用" BLOB キャッシュ層を通過すると、書き込みによって "読み取り専用" BLOB キャッシュの容量が無駄になり、待機時間が若干増加します。

    ヒント

    ストレージ構成が、選択した VM サイズによって課される制限と一致していることを確認してください。 VM サイズのパフォーマンス上限を超えるストレージ パラメーターを選択すると、次の警告が発生します: The desired performance might not be reached due to the maximum virtual machine disk performance cap。 ディスクの種類を変更して IOPS を減らすか、VM サイズを増やしてパフォーマンスの上限を上げてください。 これにより、プロビジョニングは停止しません。

VM が作成されたら、ここで選択した内容に基づいて、次のストレージ構成タスクが実行されます。

  • Premium SSD を作成し、仮想マシンに接続する。
  • SQL Server にアクセスできるようにデータ ディスクを構成する。
  • 指定したサイズとパフォーマンス (IOPS とスループット) 要件に基づいて、データ ディスクを記憶域プールにまとめる。
  • 仮想マシンで記憶域プールを新しいドライブに関連付ける。

Azure portal で SQL Server VM を作成する詳しい手順については、プロビジョニング チュートリアルをご覧ください。

Resource Manager テンプレート

次の Resource Manager テンプレートを使用する場合、既定では、2 つ Premium データ ディスクが記憶域プール構成なしで接続されます。 ただし、仮想マシンに接続される Premium データ ディスクの数は、次のテンプレートをカスタマイズすることで変更できます。

クイック スタート テンプレート

次のクイック スタート テンプレートを使用すると、ストレージ最適化を使用して SQL Server VM をデプロイできます。

Note

一部の VM サイズには、一時ストレージまたはローカル ストレージがない場合があります。 一時ストレージのない Azure VM に SQL Server をデプロイすると、tempdb データ ファイルとログ ファイルはデータ フォルダーに配置されます。

既存の VM

Note

ストレージは、Azure Marketplace の SQL Server イメージからデプロイされた SQL Server VM に対してのみ構成でき、現在、Premium SSD v2 ディスクではサポートされていません。 SQL Server が自己インストールされている Azure 仮想マシンのディスク構成を変更するには、[ディスク] ウィンドウを 使用します。

既存のドライブを変更する

Azure Marketplace を通じてデプロイされた既存の SQL Server VM については、Azure portal で、SQL 仮想マシン リソースを使用するか、[ディスク] ウィンドウで一部のストレージ設定を変更できます。

ストレージ設定を変更するには、[SQL 仮想マシン リソース]を開き、[設定][ストレージの構成] を選択します。次のことが可能です。

  • 他のディスクを追加する
  • 既存のディスクを構成または拡張する

[構成] オプションと [ストレージ使用量] セクションが強調表示されているスクリーンショット。

[構成] を選択すると[データ ドライブの拡張] ページが開き、ディスクの種類を変更したり、ディスクを追加したりすることができます。 [ディスク] ウィンドウからディスクを追加することもできます。

Azure portal で、既存の SQL Server VM のストレージを構成するために使用する、[データ ドライブの拡張] ページを示すスクリーンショット。

特定の VM サイズでサポートされている最大ディスク数に既に達している場合は、[VM のサイズ変更] が必要な場合があります。

tempdb の変更

[ストレージ構成] ページを使って、tempdb ファイルの数、初期サイズ、自動増加率など、tempdb の設定を変更することもできます。 [tempdb] の横にある [構成] を選択して [tempdb 構成] ページを開きます。

[tempdb データ ファイルの構成] の横にある [はい] を選択して設定を変更し、[再起動時に tempdb データベース フォルダーを管理する] の横にある [はい] を選択して、次回 SQL Server サービスを起動したときに、tempdb の構成、フォルダー、アクセス許可を Azure が管理できるようにします。 Azure Marketplace のイメージを使用して SQL 仮想マシンを作成する必要はありません。

SQL 仮想マシン リソース ページからの Azure portal の tempdb 構成ページのスクリーンショット。

SQL Server サービスを再起動して変更を適用します。

一時ディスク サイズを増やす

一時ディスク サイズを増やすには、一時ストレージのより大きなディスク サイズをサポートする SKU に VM のサイズを変更します。

自動変更

このセクションでは、Azure portal での SQL Server VM のプロビジョニングまたは構成時に自動的に行われる、ストレージ構成の変更に関するリファレンス情報を提供します。

  • Azure では、VM から選択されたストレージから記憶域プールが構成されます。 この記事の次のセクションでは、記憶域プールの構成について詳しく説明します。
  • 自動ストレージ構成では、必ず Premium SSD P30 データ ディスクが使用されます。 さて、選択したテラバイト数と、VM に接続されているデータ ディスク数は 1 対 1 で対応しています。

料金情報については、 Storage 料金 ページの「 Disk Storage 」タブを参照してください。

記憶域プールの作成

Azure では、次の設定を使用して、SQL Server VM で記憶域プールを作成します。

設定
ストライプ サイズ 64 KB
ディスク サイズ 各 1 TB
キャッシュ Read
アロケーション サイズ 64-KB NTFS アロケーション ユニット サイズ
Recovery シンプルな復元 (回復性なし)
列の数 データ ディスクの数 (最大 8)1

1 記憶域プールの作成後、その記憶域プールの列の数を変更することはできません。

Note

Optimize-StoragePooOptimize-Volume を使用してプール内の領域の割り当てを再調整し、ランダムにキューに入れた I/O パターンを持つワークロードの種類のパフォーマンスを最適化します。

キャッシュの有効化

Premium SSD の場合は、ディスク レベルでキャッシュ ポリシーを変更できます。 そのためには、Azure portal、PowerShell、または Azure CLI を使用できます。

Azure portal でキャッシュ ポリシーを変更するには、次の手順に従います。

  1. SQL Server サービスを停止します。

  2. Azure Portal にサインインします。

  3. 仮想マシンに移動し、 [設定][ディスク] を選択します。

    Azure portal の VM ディスク構成ウィンドウを示すスクリーンショット。

  4. ドロップダウン リストの、[読み取り専用]、または [なし] からディスクの適切なキャッシュ ポリシーを選択します。

    Azure portal のディスク キャッシュ ポリシー構成を示すスクリーンショット。

  5. 変更が有効になったら、SQL Server VM を再起動した上で SQL Server サービスを開始します。

書き込みアクセラレータを有効にする

書き込みアクセラレータ は、M シリーズの Virtual Machines (VM) でのみ使用できるディスク機能です。 書き込みアクセラレーションの目的は、大量のミッション クリティカルな OLTP ワークロードまたはデータウェアハウス環境によって、一桁の I/O 待機時間が必要な場合に、Azure Premium Storage に対する書き込みの I/O 待機時間を向上させることです。

書き込みアクセラレータを有効にする前に、一部の 制限 事項を確認して、ビジネスで許容されることを確認します。

書き込みアクセラレーション ポリシーを変更する前に、すべての SQL Server アクティビティを停止し、SQL Server サービスをシャットダウンしてください。

ディスクがストライピングされている場合は、各ディスクの書き込みアクセラレーションを個別に有効にします。変更を行う前に、Azure VM をシャットダウンする必要があります。

Azure portal を使用して書き込みアクセラレーションを有効にするには、次の手順を実行します。

  1. SQL Server サービスを停止します。 ディスクがストライピングされている場合は、仮想マシンをシャットダウンします。

  2. Azure Portal にサインインします。

  3. 仮想マシンに移動し、 [設定][ディスク] を選択します。

    Azure portal の VM ディスク構成ウィンドウを示すスクリーンショット。

  4. ディスクの書き込みアクセラレータ付きのキャッシュ オプションをドロップダウン リストから選択します。

    書き込みアクセラレータ キャッシュ ポリシーを示すスクリーンショット。

  5. 変更が有効になったら、仮想マシンと SQL Server サービスを開始します。

ディスク ストライピング

スループットを向上させるために、データ ディスクをさらに追加し、ディスク ストライピングを使用できます。 データ ディスクの数を特定するには、ログと tempdb を含む、SQL Server データ ファイルに必要なスループットと帯域幅を分析します。 スループットと帯域幅の制限は、VM のサイズによって異なります。 詳細については、「VM のサイズ」を参照してください。

  • Windows 8/Windows Server 2012 以降の場合は、次のガイドラインに従った記憶域スペースを使用します。

    1. パーティションの不整合によるパフォーマンスへの影響を回避するために、インタリーブ (ストライプ サイズ) を 64 KB (65,536 バイト) に設定します。 これは、PowerShell を使って設定する必要があります。

    2. カラム数 = 物理ディスク数を設定します。 8 つを超えるディスクを構成する場合は PowerShell を使用します (Server Manager の UI ではない)。

たとえば、次の PowerShell では記憶域プールが新規作成され、インターリーブ サイズは 64 KB、カラム数はこの記憶域プール内の物理ディスクの容量と等しくなります。

$PhysicalDisks = Get-PhysicalDisk | Where-Object {$_.FriendlyName -like "*2" -or $_.FriendlyName -like "*3"}

New-StoragePool -FriendlyName "DataFiles" -StorageSubsystemFriendlyName "Windows Storage on <VM Name>" `
    -PhysicalDisks $PhysicalDisks | New-VirtualDisk -FriendlyName "DataFiles" `
    -Interleave 65536 -NumberOfColumns $PhysicalDisks.Count -ResiliencySettingName simple `
    -UseMaximumSize |Initialize-Disk -PartitionStyle GPT -PassThru |New-Partition -AssignDriveLetter `
    -UseMaximumSize |Format-Volume -FileSystem NTFS -NewFileSystemLabel "DataDisks" `
    -AllocationUnitSize 65536 -Confirm:$false

Windows Server 2016 以降では、-StorageSubsystemFriendlyName の既定値は Windows Storage on <VM Name> です

  • Windows 2008 R2 以前では、ダイナミック ディスク (OS ストライプ ボリューム) を使用できます。ストライプ サイズは常に 64 KB です。 このオプションは、Windows 8/Windows Server 2012 の時点で非推奨となっています。 詳細については、Windows Storage Management API に移行しつつある仮想ディスク サービスに関するページでサポートに関する声明をご覧ください。

  • 記憶域スペース ダイレクト (S2D)SQL Server フェールオーバー クラスター インスタンスで使用している場合は、単一プールを構成する必要があります。 その単一プール上にはさまざまなボリュームを作成できますが、それらすべて同じ特性 (たとえば、同じキャッシュ ポリシー) を共有します。

  • 負荷予測に基づいて、ご使用の記憶域プールに関連付けるディスク数を決定します。 接続できるデータ ディスクの数は VM サイズによって異なることに注意してください。 詳細については、 仮想マシンのサイズに関するページをご覧ください。

既知の問題

SQL 仮想マシン リソースの[ディスクの構成] オプションまたは [ストレージの構成]ウィンドウがグレーアウト表示されます

Storage ページは、Azure portal の SQL 仮想マシン リソース ウィンドウで次の理由で淡色表示されることがあります。

  • ご利用の SQL IaaS Agent 拡張機能が失敗状態になっています。 SQL Server VM を削除して、拡張機能をもう一度使用して登録します。
  • 記憶域プールをカスタマイズしました。
  • Marketplace 以外のイメージを使用しています。
  • アンマネージド ディスクを使用して仮想マシンを作成しました。 マネージド ディスクのみがサポートされます。

[ディスクの拡張] オプションが淡色表示

[ディスクの拡張] オプションは、次の理由で淡色表示されることがあります。

  • 記憶域プールをカスタマイズしました。 ディスクを拡張する必要がある場合は、記憶域プールにディスクを追加して仮想ディスクを拡大します。
  • 仮想ディスクまたはボリューム名を既定値から変更しました。
    • 記憶域プールの名前: SQLVMStoragePool1、SQLVMStoragePool2、SQLVMStoragePool3
    • 仮想ディスク: SQLVMVirtualDisk1、SQLVMVirtualDisk2、SQLVMVirtualDisk3
    • ボリューム: SQLVMDATA1、SQLVMLOG、SQLVMTEMPDB
  • SQL Server VM に Windows クラスターをインストールしたので、ディスクの拡張はサポートされていません。

1 TB の未割り当て領域を持つディスクがあり、記憶域プールから削除できません

記憶域プールに属しているディスクから未割り当て領域を削除するオプションはありません。

トランザクション ログがいっぱいになった

ログがいっぱいになった場合は、「トランザクション ログがいっぱいになった場合のトラブルシューティング」を参照してください。

SQL 仮想マシン リソースを使用してストレージを構成できない

次のシナリオでは、Azure portal の SQL 仮想マシン リソースの [ストレージ構成] ウィンドウが使用できないか、グレー表示されるか、[ディスクを拡張] を選択しても何も行われません:

  • SQL Server インスタンスが自己インストールされている仮想マシン。 現時点では、Azure Marketplace の SQL Server VM イメージのみがサポートされています。
  • Premium SSDv2 を使用する SQL Server VM。 現時点では、Premium SSD を搭載した SQL Server VM のみがサポートされています。
  • SQL Server 構成マネージャーで TCP/IP が無効になっている場合。