Windows2019のAzure仮想マシンでRAID構成を組みDISKPDを使ってIOPSを測定
Azure 仮想マシンでRAID構成を組んでIOPSの測定までやってみました。
今回はRAID構成はRAID0、OSはWindows Server 2019 Datacenterを利用して実施しています。
IOPSの測定にはDISKSPDを使用しています。
仮想マシン(Azure Virtual Machines )のIOPSについて
Azure上の仮想マシンでIOPSやスループットが決まる要件は以下の2つになります。
-
-
- Azure Managed DisksのシリーズおよびサイズによるIOPS上限
- 仮想マシンのシリーズおよびサイズによるIOPS上限
-
IOPSとは
IOPSはInput/output operations per Secondの略称になります。
IOPSはディスクが1秒当たりに処理できるI/Oアクセスの数でディスクの性能を表す際に利用されます。
IOPSが高ければ高いほど、1秒間に処理されるI/Oアクセス数が大きくなります。つまり1秒間に読み書きできるデータ転送量も多くなるという事になります。
なお実際のデータ転送量(スループット)はIOPS×IO Size(1回のIOのデータサイズ)で計算されます。
Azure Managed DisksのIOPSについて
Azure Managed DisksではDiskのサイズに応じて最大 IOPSやスループットが規定されています。サイズが大きくなるほどIOPSが大きくなりDiskIO速度が上がります。
Premium SSD、Standard SSDでは、一時的に最大 IOPSの上限を超える事が出来るバーストが可能です
今回利用したP1(Premium SSD 4 GiB)の場合はこのような形になります。
ディスク層 | サイズ | プロビジョニングされた IOPS | 最大バースト IOPS |
P1 | 4 GiB | 120 | 3500 |
仮想マシンのIOPSについて
仮想マシンやシリーズやサイズによってIOPSやスループット上限が設定されています。仮想マシンによる上限詳細についてはこちらを参照頂きたいのですが基本的には仮想マシン全体でのIOPSになります。今回利用した仮想マシンの場合はこちらの値になります。
仮想マシンサイズ | 最大 IOPS |
Standard_D2s_v4 | 3200 |
Standard_D4s_v4 | 6400 |
Standard_D8s_v4 | 12800 |
※ディスク本数やディスクキャッシュ有無(仮想マシンのサイズによる)によってIOPSが変わる場合があります。
※今回利用したDsv4 シリーズの仮想マシンサイズによるIOPS上限一覧はこちらになります。
※仮想マシンのシリーズやサイズに応じて1台当たりのManaged Disks本数に上限があります。
RAID構成を組む事でIOPSを向上させる事が出来る
こちらにも記載されている通りRAID構成を組む事でIOPSを集約する事が出来ます。
RAID0の場合はディスクの本数×ディスク1本あたりのIOPSが期待できます。SQL Serverのデータベースで利用する場合などIOPS稼ぎたい場合には活用可能です。
RAID0だとディスク1本でも障害があるとボリューム障害となり耐障害性が低くなります。しかしManaged Disksの場合は同じデータセンター内でレプリケートされている為RAID1と同じ構成組んでいます(こちらを参照)。その為RAID0で構成した場合でもRAID10と同じ構成と言えます。
※RAID1の場合はミラーリングなので向上しません。RAID5の場合は増やした本数の0.3倍から0.5倍程度の期待値になります。
※こちらにも記載されていますが実際に利用する場合はブロックサイズ等について注意ください。
マネージドディスクのパフォーマンスレベルの変更についてはこちらでやっています。
Windows仮想マシンでRAIDを構成する
Azure VMのRAID構成はソフトウェアRAIDになりますので構成してみます。
-
-
- RAID作成条件
- Windows Server 2019 DatacenterのAzure仮想マシンを利用する
- Windows OSのソフトウェアRAID構成とする
- Managed DisksはP1(Premium SSD 4 GiB)を利用する
- ディスク本数は3本とする
- RAID構成は0で構成する
- RAID作成条件
-
データディスクを追加した仮想マシンを構成する
仮想マシンを新規に作成時にデータディスクを追加してみます。
仮想マシン作成時にディスクを追加する | |
仮想マシン作成時のディスク設定画面になります。 データディスクにある新しいディスクを作成し接続するを選択します。 |
|
サイズを変更するを選択します。 | |
ディスクサイズの選択画面になります。 今回はP1を選択します。 |
|
サイズが変更されている事を確認しOKをクリックします。 |
|
このディスク追加作業を3回繰り返します。 終わると3本のデータディスクが設定されている事が確認出来ます。 仮想マシン作成と同時にディスクも作成されます。
|
仮想マシン作成後にディスクを追加する
仮想マシン作成後にディスクを追加してみます。
仮想マシン作成後にディスクを追加する | |
仮想マシンのディスクメニューになります。 新しいディスクを作成し接続するを選択します。 カラムが増えますのでディスク名、ストレージの種類、サイズを選択します。 保存をクリックするとディスクが作成され仮想マシンに接続されます。ディスクの追加は仮想マシン起動中に実行可能です。 ※ディスクサイズの変更はオンラインでは出来ません。 |
Windows Serverでのディスク追加はこちらでもやっています。
Windows Server 2019 Datacenter上でRAIDを構成する
Windows Server 2019 Datacenter上でRAIDを構成する。
ディスク3本でRAID0として構成します。
Windows ServerでRAID構成を作成する | |
Windowsのメニューでディスクの管理を選択します。 | |
ディスクの初期化画面になります。 すべてのディスクにチェックがついている事を確認後OKをクリックします。 |
|
初期化が完了した後に追加したディスクで右クリックするとメニューが表示されます。
今回はRAID0なので、新しいストライプボリュームを選択します。 |
|
ウィザードが表示されますので次へを選択し開始します。 |
|
ディスクの選択画面になります。すべてのディスクを追加します。 |
|
追加後の画面はこのような感じになります。ディスク領域(MB)は1本あたりの割り当て領域です。 すべてを割り当てしますのでそのまま次へを選択します。 |
|
新しいストライプボリュームのドライブレター選択です。今回はEドライブを選択しています。 |
|
ボリュームのフォーマット画面になります。ボリュームをフォーマットします。何か指定する事が無ければそのまま次へ進みます。 |
|
確認画面が表示されます。問題が無ければそのまま完了へ進めます。ボリューム作成が開始されます。 |
|
作成開始すると確認メッセージが表示されます。はいを選択し次へ進みます。 ※ダイナミックディスクですがWindowsでは非推奨になっていますが今回はそのまま進めてます。(こちらを参照) |
|
フォーマットが完了するとこのようにE ドライブとして新しいボリュームが作成されている事が分かります。 |
DISKSPD を使用してWindows上でIOPSを測定する
Windows OS上でIOPSを測定します。今回はこちらを参考に進めます。Azure Stack HCIの記事ですがWindowsでのIOPS測定にそのまま使えます。
DISKSPDをセットアップする
DISKPDはファイルをダウンロードして解凍するだけで利用可能です。
こちらのURLから最新版をダウンロードします。2021年8月現在の最新版ファイルはこちらになります。
ダウンロードしたファイルを解凍します。今回はCドライブ直下に置いています。
Managed Disks(P1)単体でのIOPS
まず最初にManaged Disks P1(Premium SSD 4GiB)単体でのIOPS測定を行ってみました。仮想マシンのサイズはStandard_D2s_v4を使用しています。
こちらをがP1のカタログスペックになります。
ディスク層 | サイズ | プロビジョニングされた IOPS | 最大バースト IOPS |
P1 | 4 GiB | 120 | 3500 |
DISKPDはコマンドラインで実行します。DISKSPDの実行コマンドの解説詳細についてはこちらを参照ください。サンプルを参考にWrite25%、ファイル1Gとして実行しています。
DISKSPDを実行する(RAID0) | |
|
|
DISKSPDの実行結果です。非常に見やすく詳細の情報を表示してくれます。 I/O per sを確認するとトータルで3499.51となっています。P1がバースト時の性能と同じ値が出ている事が確認出来ました。
|
P1×3本でRAID0を構成した場合のIOPS
同様にDISKSPDを利用して、P1×3本でRAID0を構成した場合のIOPSを測定してみました。
DISKSPDを実行する | |
|
結果は4079.92となりP1単体でバーストした場合のIOPS上限値を超えて性能が発揮されている事が分かりました。
ただ、RAID0を構成する事でIOPSが稼げることが分かりましたが4000IOPSとなっています。仮想マシンのIOPS上限の影響やディスクバースト影響が考えられますのでManaged Disksの種類や仮想マシンのサイズを変更してIOPSを測定してみます。
仮想マシンサイズを変更しながらIOPSを測定
ディスクバーストの影響を排除する為にP30(Managed Disks)を利用して測定してみます。
こちらがP30のカタログスペックになります。なおP30 以上のディスクの場合はバーストは有料です。
ディスク層 | サイズ | プロビジョニングされた IOPS | 最大バースト IOPS |
P30 | 1024 GiB | 5000 | 30000 |
-
- RAID作成条件
- Managed DisksはP30(Premium SSD 1024 GiB)を利用する
- ディスク本数は3本とする
- RAID構成は0で構成する。
- RAID作成条件
仮想マシンを変更しながらのIOPS測定結果がこちらになります。
仮想マシンサイズ | 仮想マシンのIOPS上限 | P30単体の場合 | P30×3本をRAID1で構成した場合 | IOPS上限に関する推測 |
Standard_D2s_v4 | 3200 | 4078.69 | 4023.17 | 単体の場合もRAID0の場合も仮想マシン上限IOPSに達している |
Standard_D4s_v4 | 6400 | 5086.61 | 7966.19 |
単体の場合はManaged Disks上限IOPSに達している |
Standard_D8s_v4 | 12800 | 5099.78 | 14959.04 | 単体の場合もRAID0の場合もManaged Disks上限IOPSに達している |
RAIDの構成によりIOPSが稼げている事が分かりました。また仮想マシンの上限でIOPSが頭打ちになっている事も確認が出来ました。
実際の仮想マシン上限よりも上回った数値(D2s_v4(+800)、D4s_v4(+1600))が計測されていますがこの編は測定ツール影響なのかどうなのかは判別が難しいところです。
Windows ServerのOSディスクサイズ変更はこちら。
Linuxの仮想マシンでのIOPS測定はこちら。