[小ネタ]Windows Server 2016 RAIDボリュームの作成手順

こんにちは、坂巻です。

Windows Server 2016でRAIDボリュームを作成する機会がありましたので、ご紹介したいと思います。

前提

EC2が作成済みであること。OSはWindows Server 2016を使用しています。

  • Windows_Server-2016-Japanese-Full-Base-2019.02.13 - ami-0071141e8929a58d5

作成済みのEC2は、ルートデバイス以外のEBSボリュームはアタッチしていない状態です。 01

EBSボリューム作成/アタッチ

2つのEBSでRAIDボリュームを構築したいので、EBSボリュームを2つ作成します。ここではボリュームサイズは10GiBで作成しています。

EBS(Name:test-1)

02

EBS(Name:test-2)

03

EBSボリュームが作成できました。EC2にアタッチしていない状態ですので、ボリュームの状態は「available」となります。

04

作成したEBSボリュームを選択し「アクション」-「ボリュームのアタッチ」をクリックします。

05

アタッチ先のインスタンスを選択し「アタッチ」をクリックします。

06

作成したEBSボリュームをそれぞれEC2にアタッチします。アタッチ後にEC2を確認するとブロックデバイスが追加されている事が確認できます。

07

Windows作業

記憶域プール作成

記憶域プールを作成します。記憶域プールは、複数のディスクをまとめ1つの大きなディスクとして扱う機能です。 ディスクの容量や組み合わせ方法等によらず、ユーザー側からは1つのディスクとして参照できるようになります。

対象のEC2にログインし「サーバマネージャー」-「ファイルサービスと記憶域サービス」-「記憶域プール」をクリックします。 Windowsからは物理ディスクが2つ認識されている状態です。

08

物理ディスクのペインにて、右クリック「記憶域プールの新規作成」をクリックします。

09

「次へ」をクリックします。

10

名前(記憶域プール名)を入力し「次へ」をクリックします。

11

全ての物理ディスクにチェックを付け「次へ」をクリックします。ここでは割当を「自動」にしています。 「自動」は記憶域プールのアクティブなディスクとなりますが、「ホットスペア」にすると代替ディスクとして利用されます。

12

「作成」をクリックします。

13

タスクの状態がすべて完了したことを確認し「閉じる」をクリックします。

14

記憶域プールが作成できました。

15

仮想ディスク作成

仮想ディスクを作成します。作成した記憶域プールを選択し「仮想ディスクの新規作成」をクリックします。

16

記憶域プールを選択し「OK」をクリックします。

17

「次へ」をクリックします。

18

名前(仮想ディスク名)を入力し「次へ」をクリックします。

19

「次へ」をクリックします。

20

レイアウトを選択します。ここでは「Simple」を選択しました。なお、レイアウトの種別により、以下のような違いがあります。

  • Simples…ストライプ化により、容量が最大化されスループットが向上しますが、信頼性は低下します。
  • Mirror…複数のディスクにデータを複製し信頼性が向上しますが、容量は減少します。
  • Parity…ストライプ化して複数ディスクに書き込む際、パリティを保存します。信頼性が向上し、容量とパフォーマンスが多少低下します。

35

「固定」を選択し「次へ」をクリックします。なお「最小限」を選択した場合は、記憶域プールの容量に関係なく、任意のサイズの仮想ディスクを作成できます。もちろん、物理ディスクの容量を超えたデータの書き込みはできませんので、その際は記憶域プールにディスクを追加し領域の拡張が必要になります。

21

「最大サイズ」を選択し「次へ」をクリックします。

22

「作成」をクリックします。

23

タスクの状態がすべて完了したことを確認し「閉じる」をクリックします。「このウィザートを閉じる時にボリュームを作成します」にチェックを付けておくことで、このままボリュームの作成画面に遷移します。

24

ボリューム作成

「次へ」をクリックします。

25

「次へ」をクリックします。

26

「次へ」をクリックします。

27

ドライブ文字を割当て「次へ」をクリックします。

28

「次へ」をクリックします。

29

「作成」をクリックします。

30

タスクの状態がすべて完了したこを確認し「閉じる」をクリックします。

31

RAID(ストライピング)ボリュームであるDドライブが作成できました。

32

確認

書き込みテストを行ってみたいと思います。Diskspdを利用し2つのEBSボリューム(ここではDドライブ)にアクセスがあるか確認します。 WebブラウザよりDiskSpd: A Robust Storage Performance Toolにアクセスし、ツールをダウンロードします。

33

ダウンロードしたファイルを展開し、コマンドプロンプトを管理者権限で起動します。管理者権限で起動することでファイルの作成が速くなるようです。

展開したファイルには、ツールのバージョンが異なる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つのボリュームに対しアクセスがあることが確認できました。

34

なお、ストライプ化していない、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ではありませんので、バックアップの仕組み等の検討は別途必要ですね!

参考