[小ネタ]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ボリュームはアタッチしていない状態です。
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ではありませんので、バックアップの仕組み等の検討は別途必要ですね!