Windows Server 2008 R2で複数のEBSをまとめて単一ドライブとして扱う

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。望月です。今日はWindows Serverで複数のEBSを統合して扱う方法を調べてみました。
Windows Serverよく分かっていないので、手探りで調べながら & Windowsスペシャリストの@jkudo氏に助けを求めながら試してみました :)

背景・やりたいこと

AWSのブロックデバイスサービスであるEBSに課せられている制限の一つとして、単一ディスクのサイズ制限が挙げられます。一つのEBSにつき割り当てられる上限が1TBとなっているため、それ以上のサイズのファイルシステムを構築したい場合は、複数のEBSを組み合わせて使用する必要があります。
LinuxであればLVMを利用して実現できることは知っているのですが、今回はWindows Server 2008 R2で実施する必要があったので、調べながら実行しました。

Windows Server 2012なら

調べたところ、まず最初に行き当たったのはAWSでWindows Server 2012インスタンスをつかってみる ~その3 EBSボリュームと記憶域プール~ | The Amazing gentaw's AWS blogという方法でした。ですが、記憶域プールというのはWindowsServer 2012から利用できるようになった機能のようなので、Windows Server 2008 R2では利用できません。

Windows Server 2008 R2の場合

Windows Server 2008 R2の場合は、スパンボリュームという機能を利用することでできるようです。スパンボリュームを利用することで複数のディスクをWindowsの単一ディスクドライブとして扱うことができるようです。Windowsで利用することができるボリュームのタイプは仮想PCで学ぶ「体当たり」Windowsシステム管理:第11回 Windowsのディスク管理をマスターする(前) (4/5) - @ITを参考にして下さい。

EBSの作成

まずはボリュームの基になるEBSを作成します。今回は合計で500GiBのディスクを作るため、250GiBのEBSを2つ作成しました。

win_1

EBSを作成するときには、EBSのAvailability ZoneがEC2インスタンスと一致するように気をつけておきましょう。私はよくハマります。

ディスク状態の確認

それではEC2インスタンスを起動し、リモートデスクトップでログインしましょう。起動した後に、Management ConsoleからEBSをアタッチしておいて下さい。
起動後にサーバーマネージャを起動し、[記憶域]→[ディスクの管理]を選択します。

この時、EC2を新規作成ではなく、停止状態の時にEBSをアタッチしてから起動した場合、ディスクの状況を確認すると、以下の様に既にフォーマットされた状態になっていると思います。

win_14

これは、EC2インスタンス起動時にEC2ConfigServiceというローカルサービスが実行されるためです。 : Configuring a Windows Instance Using the EC2Config Service - Amazon Elastic Compute Cloud
EC2ConfigServiceはホスト名の設定やルートテーブルの調整など、様々な起動処理を実施してくれます。この一環でインスタンスにアタッチされていてフォーマットされていないディスク(=新規にアタッチされたEBS)のフォーマットが実施されます。

すでにフォーマットされてしまった場合は一度NTFSフォーマットを解除する必要があるので、ディスクを選択して右クリックし、「ボリュームの削除」を選択しましょう。

win_15

そうすることで、ボリュームが初期化されます。

win_2

スパンボリュームの作成

さて、それではスパンボリュームを作成しましょう。「未割り当て」となっている部分を右クリックし、「新しいスパン ボリューム」を選択します。

win_3

あとはウィザードに沿って進めていきます。まずはどのディスクをスパンボリュームとして利用するかを選択します。このリストに出てくるのは、サーバーマネージャーの画面で「未割り当て」となっていたディスクだけですので注意して下さい。

win_4

他のウィザードの選択肢は基本的には既定値のまま進めて大丈夫です。ディスクドライブレターなどは状況に応じて変更して下さい。
最後の画面まで進んだら、「完了」を押してスパンボリュームを作成します。

win_7

そうするとボリュームの色が紫色になり、複数のディスクにまたがって単一のファイルシステムが作られたのが確認できます。

win_9

エクスプローラ上からも確認しておきましょう。250GiBのボリュームが2つなので、合計で500GiBとして扱われていることが確認できます。

win_10

スパンボリュームの拡張

さて、せっかく複数ディスクを利用しているので、ディスクの追加も簡単に実施したいですよね。Windows Serverではディスクの追加も同じように簡単に実施することができます。

今回は追加で100GiBのEBSを作成とインスタンスへのアタッチを実行し、それを先ほど作成したスパンボリュームに追加してみます。既にスパンボリュームとして扱われているディスクを右クリックし「ボリュームの拡張」をクリックします。

win_11

あとは作成の時と同じウィザードを進めましょう。作成が完了すると250 + 250 + 100 = 600GiBのドライブとして認識されるようになっています。

win_13

EC2インスタンスが起動中にEBSをアタッチした場合、スパンボリュームを作成する際に失敗することがあります。その時は同じ操作をもう一度実施すると成功することがありますので、失敗した際には一度試してみてください。

まとめ

今日はWindows Serverで複数のEBSをまとめて扱う方法についてまとめてみました。これで1TB以上の巨大ファイルシステムをAWS上のWindowsでつくることができるようになります。
Windows Server 2012では記憶域プールという方法があるようなので、また別のやり方で扱うことが出来そうです。それはまた別の機会に。