この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは、坂巻です。
Windows Server 2016でRAIDボリュームを作成する機会がありましたので、ご紹介したいと思います。
前提
EC2が作成済みであること。OSはWindows Server 2016を使用しています。
- Windows_Server-2016-Japanese-Full-Base-2019.02.13 - ami-0071141e8929a58d5
作成済みのEC2は、ルートデバイス以外のEBSボリュームはアタッチしていない状態です。
EBSボリューム作成/アタッチ
2つのEBSでRAIDボリュームを構築したいので、EBSボリュームを2つ作成します。ここではボリュームサイズは10GiBで作成しています。
EBS(Name:test-1)
EBS(Name:test-2)
EBSボリュームが作成できました。EC2にアタッチしていない状態ですので、ボリュームの状態は「available」となります。
作成したEBSボリュームを選択し「アクション」-「ボリュームのアタッチ」をクリックします。
アタッチ先のインスタンスを選択し「アタッチ」をクリックします。
作成したEBSボリュームをそれぞれEC2にアタッチします。アタッチ後にEC2を確認するとブロックデバイスが追加されている事が確認できます。
Windows作業
記憶域プール作成
記憶域プールを作成します。記憶域プールは、複数のディスクをまとめ1つの大きなディスクとして扱う機能です。 ディスクの容量や組み合わせ方法等によらず、ユーザー側からは1つのディスクとして参照できるようになります。
対象のEC2にログインし「サーバマネージャー」-「ファイルサービスと記憶域サービス」-「記憶域プール」をクリックします。 Windowsからは物理ディスクが2つ認識されている状態です。
物理ディスクのペインにて、右クリック「記憶域プールの新規作成」をクリックします。
「次へ」をクリックします。
名前(記憶域プール名)を入力し「次へ」をクリックします。
全ての物理ディスクにチェックを付け「次へ」をクリックします。ここでは割当を「自動」にしています。 「自動」は記憶域プールのアクティブなディスクとなりますが、「ホットスペア」にすると代替ディスクとして利用されます。
「作成」をクリックします。
タスクの状態がすべて完了したことを確認し「閉じる」をクリックします。
記憶域プールが作成できました。
仮想ディスク作成
仮想ディスクを作成します。作成した記憶域プールを選択し「仮想ディスクの新規作成」をクリックします。
記憶域プールを選択し「OK」をクリックします。
「次へ」をクリックします。
名前(仮想ディスク名)を入力し「次へ」をクリックします。
「次へ」をクリックします。
レイアウトを選択します。ここでは「Simple」を選択しました。なお、レイアウトの種別により、以下のような違いがあります。
- Simples…ストライプ化により、容量が最大化されスループットが向上しますが、信頼性は低下します。
- Mirror…複数のディスクにデータを複製し信頼性が向上しますが、容量は減少します。
- Parity…ストライプ化して複数ディスクに書き込む際、パリティを保存します。信頼性が向上し、容量とパフォーマンスが多少低下します。
「固定」を選択し「次へ」をクリックします。なお「最小限」を選択した場合は、記憶域プールの容量に関係なく、任意のサイズの仮想ディスクを作成できます。もちろん、物理ディスクの容量を超えたデータの書き込みはできませんので、その際は記憶域プールにディスクを追加し領域の拡張が必要になります。
「最大サイズ」を選択し「次へ」をクリックします。
「作成」をクリックします。
タスクの状態がすべて完了したことを確認し「閉じる」をクリックします。「このウィザートを閉じる時にボリュームを作成します」にチェックを付けておくことで、このままボリュームの作成画面に遷移します。
ボリューム作成
「次へ」をクリックします。
「次へ」をクリックします。
「次へ」をクリックします。
ドライブ文字を割当て「次へ」をクリックします。
「次へ」をクリックします。
「作成」をクリックします。
タスクの状態がすべて完了したこを確認し「閉じる」をクリックします。
RAID(ストライピング)ボリュームであるDドライブが作成できました。
確認
書き込みテストを行ってみたいと思います。Diskspdを利用し2つのEBSボリューム(ここではDドライブ)にアクセスがあるか確認します。 WebブラウザよりDiskSpd: A Robust Storage Performance Toolにアクセスし、ツールをダウンロードします。
ダウンロードしたファイルを展開し、コマンドプロンプトを管理者権限で起動します。管理者権限で起動することでファイルの作成が速くなるようです。
展開したファイルには、ツールのバージョンが異なる3つのサブフォルダがありますので、該当のバージョンを確認し、実行ファイルがあるフォルダに移動します。
C:\Users\Administrator>echo %PROCESSOR_ARCHITECTURE%
AMD64
C:\Users\Administrator>cd C:\Users\Administrator\Downloads\DiskSpd-2.0.21a\amd64
C:\Users\Administrator\Downloads\DiskSpd-2.0.21a\amd64>dir
ドライブ C のボリューム ラベルがありません。
ボリューム シリアル番号は 428D-DE02 です
C:\Users\Administrator\Downloads\DiskSpd-2.0.21a\amd64 のディレクトリ
2019/02/26 05:38 <DIR> .
2019/02/26 05:38 <DIR> ..
2018/09/28 15:57 240,456 diskspd.exe
1 個のファイル 240,456 バイト
2 個のディレクトリ 15,642,849,280 バイトの空き領域
以下のコマンドを実行します。
diskspd.exe –b128K –d60 –L –h -w100 -c500M d:\io.dat
ここでは128Kのブロックサイズで、500MB測定ファイル(d:\io.dat)に書き込みを行い60秒間測定します。また、キャッシュを無効にし、レイテンシー情報も表示しています。
Dドライブでの実行結果
C:\Users\Administrator\Downloads\DiskSpd-2.0.21a\amd64>echo %time% & diskspd.exe -b128K -d60 -L -h -w100 -c500M d:\io.dat
17:01:39.09
Command Line: diskspd.exe -b128K -d60 -L -h -w100 -c500M d:\io.dat
Input parameters:
timespan: 1
-------------
duration: 60s
warm up time: 5s
cool down time: 0s
measuring latency
random seed: 0
path: 'd:\io.dat'
think time: 0ms
burst size: 0
software cache disabled
hardware write cache disabled, writethrough on
performing write test
block size: 131072
using sequential I/O (stride: 131072)
number of outstanding I/O operations: 2
thread stride size: 0
threads per file: 1
using I/O Completion Ports
IO priority: normal
System information:
computer name: EC2AMAZ-PGP6IMC
start time: 2019/02/26 08:02:44 UTC
Results for timespan 1:
*******************************************************************************
actual test time: 60.01s
thread count: 1
proc count: 2
CPU | Usage | User | Kernel | Idle
-------------------------------------------
0| 4.56%| 0.21%| 4.35%| 95.44%
1| 0.16%| 0.13%| 0.03%| 99.84%
-------------------------------------------
avg.| 2.36%| 0.17%| 2.19%| 97.64%
Total IO
thread | bytes | I/Os | MiB/s | I/O per s | AvgLat | LatStdDev | file
-----------------------------------------------------------------------------------------------------
0 | 12799836160 | 97655 | 203.41 | 1627.26 | 1.229 | 3.837 | d:\io.dat (500MiB)
-----------------------------------------------------------------------------------------------------
total: 12799836160 | 97655 | 203.41 | 1627.26 | 1.229 | 3.837
Read IO
thread | bytes | I/Os | MiB/s | I/O per s | AvgLat | LatStdDev | file
-----------------------------------------------------------------------------------------------------
0 | 0 | 0 | 0.00 | 0.00 | 0.000 | N/A | d:\io.dat (500MiB)
-----------------------------------------------------------------------------------------------------
total: 0 | 0 | 0.00 | 0.00 | 0.000 | N/A
Write IO
thread | bytes | I/Os | MiB/s | I/O per s | AvgLat | LatStdDev | file
-----------------------------------------------------------------------------------------------------
0 | 12799836160 | 97655 | 203.41 | 1627.26 | 1.229 | 3.837 | d:\io.dat (500MiB)
-----------------------------------------------------------------------------------------------------
total: 12799836160 | 97655 | 203.41 | 1627.26 | 1.229 | 3.837
total:
%-ile | Read (ms) | Write (ms) | Total (ms)
----------------------------------------------
min | N/A | 0.754 | 0.754
25th | N/A | 1.047 | 1.047
50th | N/A | 1.106 | 1.106
75th | N/A | 1.170 | 1.170
90th | N/A | 1.235 | 1.235
95th | N/A | 1.280 | 1.280
99th | N/A | 1.405 | 1.405
3-nines | N/A | 6.118 | 6.118
4-nines | N/A | 145.554 | 145.554
5-nines | N/A | 201.130 | 201.130
6-nines | N/A | 201.130 | 201.130
7-nines | N/A | 201.130 | 201.130
8-nines | N/A | 201.130 | 201.130
9-nines | N/A | 201.130 | 201.130
max | N/A | 201.130 | 201.130
CloudWatchメトリクスを確認します。追加したEBSボリュームの書き込み総数「VolumeWriteOps」メトリクスを確認しました。 事前に何回かコマンドを実施してしまい少々見づらいですが、2つのボリュームに対しアクセスがあることが確認できました。
なお、ストライプ化していない、Cドライブに対して同様のコマンドを行うと、Write IO等の速度に違いがみられました。
- Cドライブ:128.15(MiB/s)
- Dドライブ:203.41(MiB/s)
実行結果を以下に記載しておきます。
Cドライブでの実行結果
C:\Users\Administrator\Downloads\DiskSpd-2.0.21a\amd64>echo %time% & diskspd.exe -b128K -d60 -L -h -w100 -c500M c:\io.dat
17:04:50.15
Command Line: diskspd.exe -b128K -d60 -L -h -w100 -c500M c:\io.dat
Input parameters:
timespan: 1
-------------
duration: 60s
warm up time: 5s
cool down time: 0s
measuring latency
random seed: 0
path: 'c:\io.dat'
think time: 0ms
burst size: 0
software cache disabled
hardware write cache disabled, writethrough on
performing write test
block size: 131072
using sequential I/O (stride: 131072)
number of outstanding I/O operations: 2
thread stride size: 0
threads per file: 1
using I/O Completion Ports
IO priority: normal
System information:
computer name: EC2AMAZ-PGP6IMC
start time: 2019/02/26 08:05:55 UTC
Results for timespan 1:
*******************************************************************************
actual test time: 60.01s
thread count: 1
proc count: 2
CPU | Usage | User | Kernel | Idle
-------------------------------------------
0| 2.16%| 0.16%| 2.00%| 97.84%
1| 0.13%| 0.10%| 0.03%| 99.87%
-------------------------------------------
avg.| 1.15%| 0.13%| 1.02%| 98.85%
Total IO
thread | bytes | I/Os | MiB/s | I/O per s | AvgLat | LatStdDev | file
-----------------------------------------------------------------------------------------------------
0 | 8063942656 | 61523 | 128.15 | 1025.18 | 1.951 | 3.328 | c:\io.dat (500MiB)
-----------------------------------------------------------------------------------------------------
total: 8063942656 | 61523 | 128.15 | 1025.18 | 1.951 | 3.328
Read IO
thread | bytes | I/Os | MiB/s | I/O per s | AvgLat | LatStdDev | file
-----------------------------------------------------------------------------------------------------
0 | 0 | 0 | 0.00 | 0.00 | 0.000 | N/A | c:\io.dat (500MiB)
-----------------------------------------------------------------------------------------------------
total: 0 | 0 | 0.00 | 0.00 | 0.000 | N/A
Write IO
thread | bytes | I/Os | MiB/s | I/O per s | AvgLat | LatStdDev | file
-----------------------------------------------------------------------------------------------------
0 | 8063942656 | 61523 | 128.15 | 1025.18 | 1.951 | 3.328 | c:\io.dat (500MiB)
-----------------------------------------------------------------------------------------------------
total: 8063942656 | 61523 | 128.15 | 1025.18 | 1.951 | 3.328
total:
%-ile | Read (ms) | Write (ms) | Total (ms)
----------------------------------------------
min | N/A | 0.910 | 0.910
25th | N/A | 1.480 | 1.480
50th | N/A | 1.860 | 1.860
75th | N/A | 2.077 | 2.077
90th | N/A | 2.656 | 2.656
95th | N/A | 2.943 | 2.943
99th | N/A | 3.279 | 3.279
3-nines | N/A | 4.865 | 4.865
4-nines | N/A | 145.560 | 145.560
5-nines | N/A | 251.939 | 251.939
6-nines | N/A | 251.939 | 251.939
7-nines | N/A | 251.939 | 251.939
8-nines | N/A | 251.939 | 251.939
9-nines | N/A | 251.939 | 251.939
max | N/A | 251.939 | 251.939
さいごに
EBSの最大サポートサイズ(現在、16TiB)を超えた、ディスク要件がある場合等にRAIDを検討してもよさそうですね。 ただし、EBSはMulti-AZではありませんので、バックアップの仕組み等の検討は別途必要ですね!