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 の設定] タブの [ストレージ][構成の変更] を選んで、[ストレージの構成] ページを開きます。 既定値のままにすることも、ワークロードに基づいてご自分のニーズに最適なディスク構成の種類に変更することもできます。

Screenshot that highlights the SQL Server settings tab and the Change configuration option.

Note

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

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

Screenshot from the Azure portal of the SQL Server VM Storage Configuration page during provisioning.

ディスク構成は完全にカスタマイズ可能であるため、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 仮想マシンを作成する必要はありません。

Screenshot that shows where you can configure the tempdb storage for your SQL VM.

さらに、ディスクのキャッシュを設定することもできます。 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 ディスクではサポートされていません。

Azure Marketplace を介してデプロイされている既存の SQL Server VM については、Azure ポータルで一部のストレージ設定を変更できます。

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

Screenshot that highlights the Configure option and the Storage Usage section.

SQL Server VM の作成プロセス中に構成されたドライブのディスク設定を変更できます。 [構成] を選択すると[データ ドライブの拡張] ページが開き、ディスクの種類を変更したり、ディスクを追加したりすることができます。

A screenshot from the Azure portal showing the Extend Data drive page, used to configure storage for an existing SQL Server VM.

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

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

Screenshot of the tempdb configuration page of the Azure portal from the SQL virtual machines resource page.

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

自動変更

このセクションでは、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 記憶域プールの作成後、その記憶域プールの列の数を変更することはできません。

キャッシュの有効化

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

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

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

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

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

    Screenshot showing the VM disk configuration pane in the Azure portal.

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

    Screenshot showing the disk caching policy configuration in the 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. 仮想マシンに移動し、 [設定][ディスク] を選択します。

    Screenshot showing the VM disk configuration pane in the Azure portal.

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

    Screenshot showing the write accelerator cache policy.

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

SQL IaaS Agent 拡張機能が失敗状態の場合、Azure portal の[ストレージの構成]ウィンドウがグレーアウト表示される場合があります。 SQL IaaS Agent 拡張機能を修復します

ストレージ プールをカスタマイズしているか、Marketplace 以外のイメージを使っている場合、[ストレージの構成]ウィンドウの[構成]がグレーアウト表示される場合があります。

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

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