前回説明したように、Microsoft Azure の仮想マシンのサイジングは重要ですが、継続的に見直して、簡単かつ短時間で変更できるという利点があります。これは、ハードウェアの調達前にピーク時負荷や可用性を考慮する必要があるオンプレミスのサイジングとは、明らかに異なるクラウドのメリットです。今回は、コア数やメモリ容量以外の、サイズ決定の判断基準について説明します。
VM シリーズのスペック表の正しい読み方
仮想マシンのインスタンスのサイズ(シリーズとサイズ)は様々ですが、前回は、最も標準的な D シリーズ(それも D v2 がお勧め)に軸足を置き、コア数やメモリ容量、ローカル ディスク容量を基準に大小のサイズを決定する、あるいはコア対メモリのバランスや他の要件を基準に D シリーズではない、別のシリーズを選択するという指針を示しました。同じシリーズ内でのサイズの変更は、再起動を伴いますが簡単かつ短時間で完了します。一部制限がある場合もありますが(A8~A11 および H シリーズ、A から高スペックのシリーズ、リージョンごとのシリーズの利用可能状況など、前回の最後に説明しました)、別のシリーズのサイズへの変更も可能です。次の図は、以下の URL で公開されている、Windows 仮想マシンの D v2 シリーズのスペック表です。
参考:
D v2 シリーズのスペック表には、CPU コア数、メモリ容量以外の要素として、ローカル SSD、ローカル ディスクの最大 IOPS/読み取り Mbps/書き込み Mbps、最大データ ディスク数/最大 IOPS、最大 NIC/帯域幅の 4 つの項目があります。ローカル SSD の部分は、A シリーズでは一時ディスクまたはローカル HDD となっています。
ローカル SSD/HDD = 一時ディスク(D:、/dev/sdb)
スペック表におけるローカル SSD/HDD とは、OS ディスク(Windows 仮想マシンの C: ドライブ、Linux 仮想マシンの /dev/sda)のことではありません。Microsoft Azure のすべての仮想マシンが備える、一時ディスク(Windows の場合は D: ドライブ、Linux の場合は /dev/sdb)のことです。
この一時ディスクは、OS やアプリケーションのための一時的なストレージを提供するもので、Windows 仮想マシンの場合はページ ファイル(Pagefile.sys)の配置先として一時ディスクが利用されます。Linux 仮想マシンの場合は、/dev/sdb のパーティションが /mnt にマウントされ、tempfs のスワップ ファイルの配置に利用されます。
A シリーズの一時ディスクは HDD(ハード ディスク ドライブ)ですが、D シリーズにおいて SSD(ソリッド ステート ドライブ)化され、ページングの I/O 性能が大幅に向上されました。大容量のメモリを搭載するサイズは、それに応じて大きなサイズのローカル SSD を搭載し、大容量メモリのページング処理が最適化されます。一時ディスクのストレージ料金は仮想マシンの単価に含まれており、別途、ストレージの料金は請求されません。なお、一時ディスクの空き領域は一時的なストレージとしてファイルの配置などに自由に利用できますが、仮想マシンのメンテナンス イベントや再デプロイのタイミングで失われる可能性があることに注意が必要です。例えば、SQL Server の データベースやトランザクション ログの配置先としては使用できませんが、高速であるため、TempDB の配置先として活用するテクニックがあります。
参考:
Azure Virtual Machines における SQL Server のパフォーマンスに関するベスト プラクティス
Premium Storage が使えるシリーズは限られる
データ ディスクの台数は、仮想マシンのサイズによって制限があるため、サイズの決定に大きく影響します。A(Basic)シリーズを除き、データ ディスクの IOPS はディスクあたり 500 ですが、そのサイズでサポートされる最大の台数のデータ ディスクを追加して、Windows Server の記憶域スペースの機能を利用して 1 つに束ね、ストライピング(Simple レイアウト)することで、ディスク台数×500 の最大 IOPS を得ることができます。
仮想マシンの OS ディスクおよびデータ ディスクは、通常、VHD ファイルとしてストレージ アカウントに配置されます。ストレージ アカウントには、HDD ベースの汎用的な Blob ストレージである Standard Storage(Standard ストレージ、Standard ディスク)と、低待機時間で高い I/O スループットを提供する SSD ベースの Premium Storage(Premium ストレージ、Premium ディスク)があります。データ ディスクの最大 IOPS は、Standard Storage のスループットを指します。
Premium Storage は、プラン(P10、P20、P30、P40、P50、P4、P6)によって最大 IOPS が異なります。P10 の最大のディスク サイズ 128 GB、ディスクあたりの最大 IOPS は500、P20 の最大のディスク サイズは 512 GB、最大 IOPS 2300、P30 の最大ディスク サイズは 1 TB、最大 IOPS は 5000 です。P40、P50、P4、P6 は 2017 年 6 月 15 日から利用可能になった新プランで、P40 と P50 は、 それぞれ最大 2 TB、最大 4 TB のディスク サイズと最大 7500 IOPS に対応しています。P4 と P6 は、それぞれ最大 32 GB/最大 120 IOPS、最大 64 GB/最大 240 IOPS という、小さなプロビジョニング向けのコスト効率の良いプランです(これらの IOPS以外にも、キャッシュの構成、仮想マシンのサイズごとの制限や IOPS、帯域幅、ディスク台数などのパフォーマンス仕様、およびストレージ アカウントごとの IOPS 上限の影響を受けます)。Standard Storage は、使用サイズ、送信データ量、およびトランザクション量に対して課金されますが、Premium Storage はプロビジョニング サイズに対する課金であることに注意してください。トランザクション量に対する課金は発生しません。
また、Premium Storage の使用は、DS、DS v2、GS、Fs、L(s)シリーズでのみサポートされます。そのため、Premium Storage を使用したい場合は、最初からこれらのシリーズを選択しておくことが重要です。Standard Storage から Premium Storage への移行も可能ですが、複雑な手順が必要です。
参考:
なお、Managed Disk (管理ディスク、管理対象ディスク)は 2017 年 2 月から正式に利用可能になった、仮想マシン専用の比較的新しいストレージ機能であり、Standard Storage と Premium Storage の両方に対応しています。ストレージ単価は、従来のストレージよりも高くなりますが、ストレージ アカウントを管理する必要がない、ストレージ アカウントの制限(アカウントあたりの IOPS の上限など)に縛られない、イメージ スナップショットの作成が可能など、管理性、信頼性、可用性、スケールに優れています。管理ディスクであれば、Standard Storage から Premium Storage への複雑な移行処理をユーザー自身で実施する必要はありません。なお、従来からの汎用的な Standard Storage、Premium Storage は、新しい Managed Disk に対して、Unmanaged Disk (非管理ディスク、非管理対象ディスク) と呼ばれます。
参考:
単純にコア数だけで決めてはいけない理由
仮想マシンのサイズの決定の際、単純に CPU のコア数だけで判断することだけは避けてください。前回図示したように、A シリーズは Microsoft Azure の IaaS 提供初期から存在するエントリ モデルであり、D および A v2 シリーズでは一時ディスクが SSD 化され、D v2 では高速な Haswell を CPU として搭載しました。この仮想マシンの世代の違いは、パフォーマンスに大きく影響します。コアあたりの単価に大差がなくても、新しい世代のほうが優れたパフォーマンスを、相対的により低いコストで提供できる場合があります。
仮想マシンのシリーズ間で CPU 性能を比較する手段を提要するため、Azure Compute Unit(ACU)が公表されています。ACU は、A シリーズ(A1)を 100 とした場合の、コアあたりの相対的な CPU 性能を示したものです。高スペックなサイズについては、より具体的な SPECInt ベンチマーク スコアも公開されています。
参考:
D シリーズと D v2 シリーズは、ほとんど同じ単価(単価はリージョンによって異なります、D v2 のほうが安いことも)で提供されています。D シリーズと D v2 シリーズの主な違いは、D v2 シリーズが CPU に Haswell を搭載している点だけです。西日本リージョンでは、両シリーズが同じ単価(2017 年 5 月現在)で提供されていますが、ACU で比較すると同じ料金で約 1.3 倍の性能を提供できます。
クラウドだからできる継続的な見直し
例えば、最も汎用的で、新世代の CPU 性能に優れた D v2 シリーズで仮想マシンを作成することにしたとして、次(最後ではありません)に決めなければならないのは、コア数とメモリ容量のサイズの大きさです。データ ディスク数、NIC 数など別の要件があれば、それによってもサイズが左右されます。
Microsoft Azure の仮想マシンは、作り直すことなく、いつでもサイズを変更することが可能です。一部のシリーズを除いて、あるシリーズから別のシリーズに変更することもできます。サイズを変更するには、Microsoft Azure のポータルで仮想マシンのプロパティを開き、新しいサイズを選択するだけです。同じシリーズ内でのサイズの変更は、仮想マシンの再起動で完了します。シリーズをまたいだサイズの変更は、仮想マシンを停止(割り当て解除)した状態で行います。この操作は、ポータル以外にも、Azure CLI や Azure PowerShell、REST API を介して行えるため、例えば、パフォーマンス データの監視に基づいて、しきい値を連続して超えた場合に、サイズを大きくする、または小さくするといった処理を自動化することも可能です。
なお、サイズを変更する際には、変更先のサイズの最大 データ ディスク数と最大 NIC 数の制限を受けることがあります。また、リージョンによって利用可能なシリーズの制限や、ストレージの種類(Standard Storage と Premium Storage)の制限の影響を受ける場合があります。
Microsoft Azure は、仮想マシンの稼働状況を監視するさまざまなオプションを用意しています。標準的に利用できる Azure Monitor(モニター)は、仮想マシンのパフォーマンス メトリックを 1 分間隔で収集し、その履歴を ストレージ アカウントに 30 日間保持します。また、Azure Advisor を利用すると、コストに関する推奨事項を提案してくれます。Azure Advisor は、仮想マシンの使用状況を 14 日間にわたって監視し、CPU の使用率が低い仮想マシン、ネットワークの使用率が低い仮想マシンのサイズのリサイズや停止を推奨します。このようなツールを活用することで、継続的な見直しを行ってください。サイズの決定が最後ではないというのは、このことです。
まとめ
基本的に D v2 を第一オプションとし、コア数やメモリ容量、データ ディスク数、NIC 数によって具体的なサイズを決めましょう。D v2 シリーズに適切なものがない場合は、メモリをそれほど必要としていないなら F シリーズ、メモリの最適化が必要なら G シリーズ、Premium Storage が必要なら _S(DS v2、GS、FS、L)シリーズのように、別のシリーズを検討すればよいのです。シリーズが決まったら、シリーズ内での大きさを仮に決め、監視と計測に基づいて、必要があればサイズの大きさを調整します。