Windows2019のAzure VMでRAID構成を組みDiskSpdを使ってIOPSを測定
Windowsの仮想マシン(Azure VM)でソフトウェアRAID構成を組む手順です。
RAID構成を組んだ場合と、組んでない場合でのディスクのIOPS測定も実施しています。
RAID構成は、RAID0としています。
Windows Serverは、2019 Datacenter Editionを利用しています
※本記事では、Azure Virtual Machines(Azure VM)を仮想マシンと表記しています。
※本記事では、Azure Managed Disksをマネージドディスクとして表記しています。
※一般的なディスクドライブの場合や、メニューを指定する場合はディスクと表記しています。
※IOPSの測定にはDiskSpdを使用しています。
仮想マシンに接続されているマネージドディスクのIOPSについて
仮想マシンでIOPSやスループットが決まる要件は以下の2つになります。
どちらか低い方の上限が実際のパフォーマンスの上限となります。
-
- マネージドディスクの種類およびサイズによるIOPS/スループットの上限
- 仮想マシンのシリーズおよびサイズによるIOPS/スループットの上限
IOPSとは
IOPSは、"Input/Output Operations Per Second"の略称です。
IOPSはディスクが1秒あたりに処理できるI/O(入力・出力)アクセスの回数を表し、ディスクの性能を評価する際の指標となります。
一般的に、IOPSの値が高いほど、1秒間により多くのI/Oアクセスを処理できるため、ディスクのパフォーマンスが高いことを示します。
1秒間に読み書きできるデータ転送量(スループット)も増える傾向があります。
なお、実際のデータ転送量(スループット)は、次の式で計算されます。
スループット = IOPS × IO Size(1回のI/Oのデータサイズ)
マネージドディスクのIOPSについて
マネージドディスクでは、マネージドディスクのサイズに応じて最大IOPSやスループットが規定されています。
マネージドディスクサイズが大きくなるほど、最大IOPSやスループットの上限も高くなり、マネージドディスクI/O性能が向上します。
Premium SSDやStandard SSDでは、一時的に最大IOPSやスループットの上限を超えてパフォーマンスを引き上げるバースト機能が利用可能です。
サイズによっては、オンデマンド バーストを有効にするための追加料金が発生します。
今回使用したP1(Premium SSD)(4 GiB)では、以下のようなスペックとなっています。
ディスク層 | サイズ | プロビジョニングされた IOPS | 最大バースト IOPS | 最大スループット |
P1 | 4 GiB | 120 | 3500 | 25 MB/秒 |
仮想マシンのIOPSについて
仮想マシンのシリーズやサイズによって、IOPSやスループットの上限が設定されています。
基本的には、仮想マシン全体で利用可能なIOPSやスループットの上限が定められています。
今回使用した仮想マシンの構成における上限値は、以下の通りです。
仮想マシンサイズ | 最大 IOPS |
Standard_D2s_v4 | 3200 |
Standard_D4s_v4 | 6400 |
Standard_D8s_v4 | 12800 |
※仮想マシンのサイズやマネージドディスクの構成(本数やキャッシュ)によってマネージドディスク性能(IOPS)が変わります。
※シリーズやサイズによって1台のVMに接続できるマネージドディスクの数やIOPSにも上限があります。
※Dsv4シリーズの各サイズごとのIOPS上限は、公式サイトに記載されています。
RAID構成を組む事でIOPSを向上させる事が出来る
RAID構成を組むことでIOPSを集約することができます。
たとえば、RAID0の場合はマネージドディスク本数 × 各マネージドディスクのIOPSが、理論上の総IOPSとなります。
そのため、SQL Serverのデータベース用マネージドディスクなど、高いIOPSが求められる用途ではRAID0の活用が有効です。
RAID0ではマネージドディスク1本でも障害が発生するとボリューム全体が障害となり、耐障害性は非常に低くなります。
マネージドディスクは同一データセンター内でのレプリケーションにより、ある程度の冗長性を持っています。
※マネージドディスクのレプリケーションはプラットフォームレベルのデータ保護です。RAID1と同一の冗長性や即時性は保証されません。
マネージドディスクのパフォーマンスレベルの変更については、こちらで紹介しています。
—広告—
Windows仮想マシンでソフトウェアRAIDを構成する手順
仮想マシンでのRAID構成はソフトウェアRAIDとなります。
検証用の構成としています。
-
- 構成内容
- Windows OSのソフトウェアRAID(マネージドディスクのストライピング)を使用
- P1(Premium SSD 4 GiB)を利用
- マネージドディスク本数は3本
- RAID構成はRAID0(ストライピング)
- 構成内容
仮想マシン作成時にデータディスクを追加する手順
仮想マシンを作成する際に、データディスクを追加する手順です。
仮想マシン作成時にマネージドディスクを追加する | |
仮想マシン作成時のマネージドディスク設定画面です。 |
|
ディスクの作成画面が表示されます。 “サイズを変更します"を選択します。 |
|
ディスクサイズの選択画面が表示されます。 |
|
ディスクサイズが変更されていることを確認します。 |
|
ディスク追加作業を合計3回繰り返します。
|
仮想マシン作成後にデータディスクを追加する手順
仮想マシン作成後にデータディスクを追加する手順です。
仮想マシン作成後にマネージドディスクを追加 | |
ディスクのメニューを開きます。 |
※ディスクの追加は仮想マシンが起動中でも実行可能です。
Windows Serverのデータディスク追加手順は、こちらで紹介しています。
Windows Server 2019 Datacenter上でRAIDを構成する手順
Windows Server 2019 Datacenter上でRAIDを構成します。
3本のマネージドディスクを使用してRAID 0(ストライピング)を構成します。
—広告—
DiskSpdを使用してRAID構成した場合のディスクIOPSを測定する
Windows OS上でIOPSを測定します。
Use DiskSpd to test workload storage performance
Azure Stack HCI向けの記事ですが、Windows環境でのIOPS測定にもそのまま利用できます。
DiskSpdのセットアップ手順
DiskSpdは、ファイルをダウンロードして解凍するだけで利用できます。
GitHubからダウンロード可能です。
今回は、ダウンロードしたZipファイルを解凍し、Cドライブ直下に配置しています。
マネージドディスク単体でのIOPSを測定
最初に、マネージドディスクのP1(Premium SSD 4GiB)単体でIOPSを測定します。
仮想マシンのサイズにはStandard_D2s_v4を使用しています。
DiskSpdはコマンドラインで実行します。
DiskSpdの実行コマンドやパラメータの詳細については、公式サイトを参照ください。
今回はサンプルを参考に、書き込み(Write)25%、ファイルサイズ1GiBの条件で実行しています
DiskSpdを実行 | |
|
|
DiskSpdの実行結果です。 I/O per s(IOPS)の項目を確認すると、合計で3,499.51となっています。
|
RAID0を構成した場合のIOPSを測定
DiskSpdを利用して、P1×3本でRAID0を構成した場合のIOPSを測定してみました。
DiskSpdを実行する | |
|
結果は4,079.92となり、P1単体バースト時のIOPS上限値を上回る性能が発揮されていることが分かりました。
RAID0を構成することでIOPSを向上できることが確認できましたが、今回は約4,000 IOPSという結果となっています。
この値は理論値より控えめであり、仮想マシンのIOPS上限やマネージドディスクのバースト制御の影響を受けている可能性があります。
マネージドディスクの種類や仮想マシンのサイズを変更し、IOPSの測定を継続します。
仮想マシンサイズを変更してIOPSを測定
マネージドディスクバーストの影響を排除するため、今回はP30(Managed Disks)を使用して測定します。
-
- RAID構成内容
- Windows OSのソフトウェアRAID(ディスクのストライピング)を使用
- P30(Premium SSD 1024 GiB)を利用
- マネージドディスク本数は3本
- RAID構成はRAID0(ストライピング)
- RAID構成内容
マネージドディスク層 | サイズ | プロビジョニングされた IOPS | 最大バースト IOPS |
P30 | 1024 GiB | 5000 | 30000 |
仮想マシンサイズごとの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 | 単体の場合は、マネージドディスク上限IOPSに達している RAID0の場合のは仮想マシン上限IOPSに達している |
Standard_D8s_v4 | 12800 | 5099.78 | 14959.04 | 単体の場合もRAID0の場合もマネージドディスク上限IOPSに達している |
RAID構成によって、IOPSが向上していることが確認できました。
仮想マシンのIOPS上限によって性能が頭打ちになっていることも確認できました。
一部の測定結果では、仮想マシンの本来のIOPS上限値を上回る数値(D2s_v4で約+800、D4s_v4で約+1,600)が記録されています。
これは測定ツールの影響によるものなのかどうかは分かりませんでした。
—広告—
最後に
Windowsの仮想マシン(Azure VM)でソフトウェアRAID構成を組む手順を確認しました。
IOPS測定した結果、ソフトウェアRAIDの構成を組むことで性能向上の効果がありそうでした。
利用には注意が必要ですが、検証目的や性能測定時のみに利用するなどに使えるかもと思いました。
引き続き、いろいろ試してみたいと思います。
Windows ServerのOSマネージドディスクサイズ変更手順については、こちらで紹介しています。
Linuxの仮想マシンのデータディスク拡張手順は、こちらで紹介しています。
マネージドディスク拡張後にIOPSを測定しています。