AWSでWindows Server 2012インスタンスをつかってみる ~その3 EBSボリュームと記憶域プール~

Windows Server 2012で追加された新機能のひとつに、「記憶域プール」というのがあります。これは、複数のストレージを組み合わせて、ひとつの大きなストレージとして使用することができる機能です。たとえば、これまでEBSボリュームの最大容量は1TBに限られていました。1TBを超えるボリュームをWindowsから扱う必要がある場合は、複数のEBSボリュームをアタッチしてソフトウェアRAIDを組むことができました。しかし、WindowsのソフトウェアRAIDは障害時の対応やバックアップなど、かならずしも運用が容易でないところがあったのもまた事実かと思います。Windows Server 2012の記憶域プールをつかうとこれがどう変わるでしょうか?ということで、さっそくためしてみたいと思います。

まず、EBSボリュームを作成してWindows Server 2012インスタンスにアタッチします。AWS Tools for Windows PowerShellをつかっている場合、こんな感じになると思います。この例では、10GBのEBSボリュームをap-northeast-1aのアベイラビリティゾーンに作成しています。

PS C:\Program Files (x86)\AWS Tools\PowerShell> New-EC2Volume -Size 10 -AvailabilityZone ap-northeast-1a

VolumeId         : vol-405f9b62
Size             : 10
SnapshotId       :
AvailabilityZone : ap-northeast-1a
Status           : creating
CreateTime       : 2012-12-08T06:21:00.000Z
Attachment       : {}
Tag              : {}
IOPS             :
VolumeType       : standard

作成したEBSボリュームをインスタンスにアタッチするには、以下のように入力します。デバイス名として、xvdfからxvdpまでの名前をつかうことができます。

PS C:\Program Files (x86)\AWS Tools\PowerShell> Add-EC2Volume -VolumeId vol-405f9b62 -InstanceId i-4476f947 -Device xvdf

VolumeId            : vol-405f9b62
InstanceId          : i-4476f947
Device              : xvdf
Status              : attaching
AttachTime          : 2012-12-08T06:38:03.892Z
DeleteOnTermination : False

上記のようにして、複数のEBSボリュームをWindows Server 2012インスタンスにアタッチしてしまいましょう。つぎに、Windows Server 2012の「サーバーマネージャー」から、「ファイルサービスと記憶域サービス」→「ボリューム」→「記憶域プール」を選択します。「物理ディスク」に、EBSボリュームが表示されているのがわかります。

記憶域プール

「Storage Spaces」もしくは「物理ディスク」から、該当するエントリを右クリックして「記憶域プールの新規作成ウィザード」を立ち上げます。まず、記憶域プールの名前に好きな名前をつけて、利用可能なディスクのグループを選択します。そして、記憶域プールに所属させる物理ディスクを選択して、ウィザードを完了させると記憶域プールが作成できます。ここで、PhysicaDiskとして表示されているのがEBSボリュームになります。

記憶域プールの物理ディスクを選択

つぎに、「仮想ディスクの新規作成ウィザード」を起動して仮想ディスクを作成します。先ほど作成した記憶域プールを選択します。また、仮想ディスクに好きな名前を付けておきます。「記憶域のレイアウト」では、Simple、Mirror、Parityの三種類が選ぶことができます。EBSボリュームはそれ自体で冗長化の仕組みが実装されていますので、ここでは「Simple」をえらぶのがいいのではないかと思います。

記憶域のレイアウトの選択

プロビジョニングの種類の指定を行います。プロビジョニングの種類で「最小限」を選択すると、「ボリュームは、ボリュームサイズを上限に、必要に応じて記憶域プールの領域を使用します。」よくわかりませんが、とにかく先に進んでみることにしましょう。

プロビジョニングの種類の指定

ここで、仮想ディスクのサイズで100GBを指定しましたが、記憶域プールの空き領域は18.0GBしかありません。これでだいじょうぶなんでしょうか?と思いますが、問題なく100GBの仮想ディスクが作成できました!さきほどの「最小限」が、ストレージのシンプロビジョニングのような機能であることがこれでわかりますね。

仮想ディスクの新規作成ウィザード

最後に、新しいボリューム ウィザードを使用してボリュームを作成し、ボリューム文字を割り当ててあげると記憶域プールをWindowsのボリュームとして使用することができるようになります。ファイルシステムの選択で、NTFSだけでなくReFSとでてくるのが気になりますが、とりあえず今回は放っておいてNTFSを選んでおきました。

新しいボリュームウィザードを完了させると、以下のように記憶域プールが使えるようになります。使っている途中で容量が足りなくなった場合は、新規にEBSボリュームをアタッチして記憶域プールに割り当ててあげることができます!ご存じのとおり、EBSボリュームはいつでも作成することができて容量当たりの従量課金になりますのでうまく記憶域プールと組み合わせてあげることによってストレージコストの最適化ができると思います。EBSボリュームと記憶域プール。これは、まさに最強の組み合わせと言えるのではないでしょうか?

ディスク

AWS Tools for Windows PowerShellをつかってみる

Amazon Web Serviceブログでアナウンスされたとおり(http://aws.typepad.com/aws_japan/2012/12/windows-wednesday-aws-tools-for-windows-powershell.html)、ついにAWS Tools for WindowsPowerShellがリリースされました!これまで、WindowsからAWSのサービスを操作するツールとしてはAPI Toolsをコマンドプロンプトから使用するか、もしくはAWS SDK for .NETによりC#やVisual Basicでプログラムから操作する方法がありました。しかし、コマンドラインツールでは自動化のためにオールドスタイルのバッチファイルを書いたりしなければいけませんし、かといってちょっとした処理のためにいちいちVisual Studioを立ち上げてプログラムを書くのも管理者の方にとっては敷居が高いと感じられるかもしれません。

今回、あたらしくリリースされたAWS Tools for Windows PowerShellをつかうことで、Windows管理者の方はより便利かつパワフルにAWSに対して各種の操作を行えるのではないかと期待します。ということで、さっそくインストールしてみたいと思います。AWS Tools for Windows PowerShellは、以下のページからダウンロードできるようになっています。

http://aws.amazon.com/releasenotes/5239959150369789

このページにある「Download the latest Tools for Windows」のリンクをクリックすると、ツールをダウンロードすることができます。てきとうなフォルダに保存して、「AWSToolsAndSDKForNet.msi」を実行します。

AWS Tools for Windows Setup

実行してみると、ツールの名前が「AWS Tools for Windows」となっていることがわかります。さっそくインストールしてみましょう。といっても、デフォルト設定のまま「Next」をクリックしていけば数分でインストールが完了すると思います。

Custom Setup

「Custom Setup」の画面では、「AWS Tools for Windows PowerShell」が選択されています。また、このウィザードでAWS SFK for .NETやAWS Toolkit for Visual Studioがいっしょにインストールされることがわかります。インストールが完了すると、スタートメニューに「Amazon Web Services」という項目が追加されていますので、その中の「Windows PowerShell for AWS」を起動してみましょう。

Windows Powershell for AWS

いきなりcredentialsを選べと言われてすこしとまどいましたが、AWS Toolkit for Visual Studioなどですでにアカウントを登録している場合はこのようになるようです。すでに登録しているアカウントがない場合は、ここでcredentialsを登録することができますので、Access KeyとSecret Access Keyを同様にして、デフォルトのリージョンもえらぶことができます。この設定は、あとでInitialize-AWSDefaultsコマンドレットを実行することによって初期化することができます。

ためしに、以下のようにしてGet-AWSPowerShellVersionコマンドレットを実行してみましょう。

PS C:\Program Files (x86)\AWS Tools\PowerShell> Get-AWSPowerShellVersion –ListServices

Get-AWSPowerShellVersion

すると、このようにAWS SDK for .NETのバージョンとともにWindows PowerShellでの操作に対応したサービスの一覧が表示されます。かなり多くのサービスがすでにWindows PowerShellでの操作に対応していることがわかりますね!

それでは、Windows PowerShellのコマンドレットをつかってEC2インスタンスの起動をしてみましょう。インスタンスの起動は、New-EC2Instanceコマンドレットを使用して、たとえば以下のように入力します。

PS C:\Program Files (x86)\AWS Tools\PowerShell> New-EC2Instance -ImageID ami-be7cc5bf -MinCount 1 -MaxCount 1  -KeyName YourKeyName -SecurityGroup YourSecurityGroup -InstanceType t1.micro

ReservationId   : r-7e804b7d
OwnerId         : 142007360900
RequesterId     :
GroupId         : {sg-f07ae9f1}
GroupName       : {YourSecurityGroup}
RunningInstance : {}

このコマンドレットを実行することによって、Windows Server 2012インスタンスがt1.microのインスタンスタイプで起動してくるはずです。そのほかにも、各種サービスに対してさまざまな操作を行うことが可能です。ここまで見てきたように、AWS Tools for Windows PowerShellは便利かつ強力なツールです!もちろん、PowerShellスクリプトを作成して複雑な処理を自動化することもできます。その他、AWS Tools for Windows PowerShellの使い方の詳細はこちらのドキュメントを参照してみてください。

http://docs.amazonwebservices.com/powershell/latest/userguide/pstools-welcome.html

Windowsユーザーのみなさん、AWSサンタからのちょっと早いクリスマスプレゼント、AWS Tools for Windows PowerShellをおためしください!

クラウド上のストレージへのアクセスを最適化するStorage Proxyパターン

みなさんこんにちは。SAの渡邉(@gentaw0)です。おもに、Windowsまわりを得意としています。また一部では、#ヤマンの天敵とも呼ばれています。ちなみに、ヤマンとはジャマイカのパトワ語で、はい、もちろん、いいね!というような意味があります。みなさんは知ってましたか?ヤマン!←というふうにつかいます。

さて、CDP Advent Calenderに登録しましたので、今回はクラウドデザインパターン(CDP)にかかわる話を書きたいと思います。もともとは、世の中のいろんなところにデザインパターンを見出す「もしCDPが○○だったら」というネタをやろうかと思ったのですが、いきなりブログの方向性を見失いそうになるのであきらめました(※ちなみに、Glacierをセンターにしてあらゆるデータを永続的に保管する「永遠○レッシャー」パターンというのを考えました)。

かわりに、オンプレミスからクラウド上のストレージにアクセスするときのパターンについて考えてみたいと思います。みなさんは、Amazon S3などのクラウドストレージにアクセスするときはどうしていますか?たとえば、S3へのデータのアップロード/ダウンロードは、S3 APIもしくはManegement Consoleから行うことができます。このとき、S3へのアクセスはHTTP/HTTPSを使用するため、インターネット経由でストレージにアクセスできます。また、CloudBerry Explorerのようなサードパーティ製のアプリケーションを使用することによってWindowsからより便利にS3にアクセスすることができるようになります。

Storage Proxy 1

しかし、会社などの組織全体でクラウドストレージを使っていこうとすると、いくつか課題がでてくるかもしれません。

  • インターネット経由になるため、ネットワーク環境によってはパフォーマンスが出ない
  • アクセス権の集中管理が困難(たとえば、Active DirectoryやLDAPでユーザー管理したい)
  • CIFS/NFSのファイル共有として透過的につかいたい

そんなときに、オンプレミス上にS3へアクセスするためのプロキシーを置くことによってこれらの課題に対処しようというのがこの「Storage Proxy」パターンです。このネーミングは、Web Proxyにちなんで考えました。Storage Proxyパターンでは、社内からのストレージへのアクセスをいったんStorage Proxyが受けて、Storage ProxyからS3にアクセスするような形をとります。このとき、Storage ProxyにCIFS/NFSサーバーの機能をもたせることによって社内から標準的なファイル共有の仕組みでアクセスすることができるようになります。また、Storage Proxyにローカルキャッシュ用のディスクを配置すると、データの実体はクラウド上に保管しながらより低いレイテンシでストレージに読み書きすることができます。もちろん、Active DirectoryやLDAPなど社内の標準的な認証の仕組みによってアクセス権を制御することもできます。

Storage Proxy 2

ただし、このときにいくつかの注意点があります。代表的な注意点としては以下のようなことがあげられるかと思います。また、もともとオンプレミスにもう一台もサーバーを増やしたくない!という要望がある場合にはあまり向かないかもしれません。

  • Storage Proxyが単一障害点(SPOF)となることがないように保護する
  • ローカルキャッシュに十分なディスク容量およびIOPSが実現できるようサイジングを行う
  • 社内のネットワーク環境によっては、複数のStorage Proxyを配置するように考慮する

Storage Proxyパターンは、現在AWS Storage Gatewayに追加されたGateway-Cached Volumesの機能を使用することによって実装することができます。AWS Storage Gatewayには60日間の無料使用枠もありますので、ぜひカジュアルに試してみていただければと思います。また、最近マイクロソフトに買収されましたがStorSimpleなどの製品でも同様のことができるかと思います。個人的には、もっと多くの実装例がでてくることに期待したいですね。ヤマン!