SQL Server VM のストレージを構成する
適用対象: Azure VM 上の SQL Server
この記事では、Azure Virtual Machines (VM) で SQL Server 用にストレージを構成する方法について説明します。
マーケットプレース イメージを使用してデプロイされた SQL Server VM は、デプロイ時に変更できる既定のストレージのベスト プラクティスに自動的に従います。 これらの構成設定の一部は、デプロイ後に変更できます。
前提条件
自動化されたストレージ構成設定を使用するには、仮想マシンには次の特性が必要です。
- SQL Server ギャラリー イメージでプロビジョニングされている。
- Resource Manager デプロイ モデルを使用している。
- premium SSD を使用している。
新しい VM
次のセクションでは、新しい SQL Server 仮想マシンのストレージを構成する方法について説明します。
Azure portal
SQL Server のギャラリー イメージを使用して Azure VM をプロビジョニングするときは、[SQL Server の設定] タブの [ストレージ] で [構成の変更] を選んで、[ストレージの構成] ページを開きます。 既定値のままにすることも、ワークロードに基づいてご自分のニーズに最適なディスク構成の種類に変更することもできます。
データ ファイルとログ ファイルのドライブの場所を選び、ディスクの種類とディスク数を指定します。 IOPS 値を使用して、ビジネス ニーズを満たす最適なストレージ構成を決定します。 Premium Storage を選択すると、SQL Server VM のパフォーマンスのベスト プラクティスに関する記事に従って、キャッシュがデータ ドライブについては "読み取り専用" に、ログ ドライブについては "なし" に設定されます。
ディスク構成は完全にカスタマイズ可能であるため、SQL Server VM のワークロードに必要なストレージ トポロジ、ディスクの種類、IOPS を構成できます。 また、SQL Server VM がサポートされているリージョン (米国東部 2、東南アジア、北ヨーロッパ) にあり、サブスクリプションで Ultra Disks を有効にしている場合は、 [ディスクの種類] のオプションとして UltraSSD (プレビュー) を使用することもできます。
[TempDb のストレージ] で、データベース ファイルの場所、ファイルの数、初期サイズ、自動拡張サイズ (MB 単位) などの tempdb
データベース設定を構成します。 現在、デプロイ時の tempdb
ファイルの最大数は 8 ですが、SQL Server 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 をデプロイできます。
既存の VM
既存の SQL Server VM については、Azure ポータルで一部のストレージ設定を変更できます。 SQL 仮想マシン リソースを開き、 [概要] を選択します。 SQL Server の [概要] ページに、VM の現在のストレージ使用量が表示されます。 このグラフには、VM 上のすべてのドライブが示されており、 ドライブごとに、次の 4 つのセクションの記憶域スペースが表示されます。
- SQL data
- SQL ログ
- その他 (非 SQL ストレージ)
- 利用可能
ストレージ設定を変更するには、[設定] の下で [ストレージの構成] を選びます。
SQL Server VM の作成プロセス中に構成されたドライブのディスク設定を変更できます。 [構成] を選ぶとドライブ変更ページが開き、ディスクの種類を変更したり、ディスクを追加したりすることができます。
Azure portal から直接、tempdb
の設定を構成することもできます。たとえば、データ ファイルの数、初回サイズ、自動拡張率を構成できます。 詳細については、「tempdb の構成」を参照してください。
自動変更
このセクションでは、Azure portal での SQL Server VM のプロビジョニングまたは構成時に自動的に行われる、ストレージ構成の変更に関するリファレンス情報を提供します。
- Azure では、VM から選択されたストレージから記憶域プールが構成されます。 このトピックの次のセクションでは、記憶域プールの構成について詳しく説明します。
- 自動ストレージ構成では、必ず Premium SSD P30 データ ディスクが使用されます。 結果として、選択したテラバイト数と、VM に接続されているデータ ディスク数は 1 対 1 で対応しています。
料金情報については、 Storage 料金 ページの「 Disk Storage 」タブを参照してください。
記憶域プールの作成
Azure では、次の設定を使用して、SQL Server VM で記憶域プールを作成します。
設定 | 値 |
---|---|
ストライプ サイズ | 256 KB (データ ウェアハウス)、64 KB (トランザクション) |
ディスク サイズ | 各 1 TB |
キャッシュ | Read |
アロケーション サイズ | 64 KB NTFS アロケーション ユニット サイズ |
Recovery | シンプルな復元 (回復性なし) |
列の数 | データ ディスクの数 (最大 8)1 |
1 記憶域プールの作成後、その記憶域プールの列数を変更することはできません。
ワークロード最適化の設定
次の表では、使用可能な 3 つのワークロードの種類のオプションと、対応する最適化について説明します。
ワークロードの種類 | 説明 | 最適化 |
---|---|---|
全般 | ほとんどのワークロードをサポートする既定の設定 | なし |
トランザクション処理 | 従来のデータベース OLTP ワークロード用にストレージを最適化します | トレース フラグ 1117 トレース フラグ 1118 |
データ ウェアハウス | 分析とレポートのワークロード用にストレージを最適化します | トレース フラグ 610 トレース フラグ 1117 |
Note
ワークロードの種類の指定は、SQL Server 仮想マシンをプロビジョニングするときに、ストレージ構成手順の中でそれを選択することでのみ実行できます。
キャッシュの有効化
ディスク レベルでキャッシュ ポリシーを変更します。 そのためには、Azure portal、PowerShell、または Azure CLI を使用できます。
Azure portal でキャッシュ ポリシーを変更するには、次の手順に従います。
SQL Server サービスを停止します。
Azure Portal にサインインします。
仮想マシンに移動し、 [設定] で [ディスク] を選択します。
ドロップダウンから、ディスクの適切なキャッシュ ポリシーを選択します。
変更が有効になったら、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 を使用して書き込みアクセラレーションを有効にするには、次の手順を実行します。
SQL Server サービスを停止します。 ディスクがストライピングされている場合は、仮想マシンをシャットダウンします。
Azure Portal にサインインします。
仮想マシンに移動し、 [設定] で [ディスク] を選択します。
ディスクの書き込みアクセラレータ付きのキャッシュ オプションをドロップダウンから選択します。
変更が有効になったら、仮想マシンと SQL Server サービスを開始します。
ディスク ストライピング
スループットを向上させるために、データ ディスクをさらに追加し、ディスク ストライピングを使用できます。 データ ディスクの数を特定するには、ログと tempdb を含む、SQL Server データ ファイルに必要なスループットと帯域幅を分析します。 スループットと帯域幅の制限は、VM のサイズによって異なります。 詳細については、VM のサイズに関する記事を参照してください。
Windows 8/Windows Server 2012 以降の場合は、次のガイドラインに従った記憶域スペースを使用します。
パーティションの不整合によるパフォーマンスへの影響を回避するために、インタリーブ (ストライプ サイズ) を 64 KB (65,536 バイト) に設定します。 これは、PowerShell を使って設定する必要があります。
カラム数 = 物理ディスク数を設定します。 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 サイズによって異なることに注意してください。 詳細については、 仮想マシンのサイズに関するページをご覧ください。
次のステップ
Azure VM での SQL Server の実行に関するその他のトピックについては、「 Azure Virtual Machines における SQL Server」を参照してください。