インスタンスストアボリュームをもつインスタンスタイプにおけるWindows ServerのOSバージョンによる初期設定の違いについて

AWS運用自動化サービス「Cloud Automator」

こんにちは、技術4課の城です。
サーバーワークスではコロナウイルスが脅威になっていて、フルリモートで業務遂行中です。
そんな中、我が家では感染性胃腸炎が蔓延しており、妻⇒娘⇒?と前門の虎、後門の狼状態になっています。

さておき、先日M3のインスタンスタイプでOSがWindows Server 2012R2のEC2インスタンスを、M5のインスタンスタイプに変更するという作業を実施しました。
その際にWindows Server 2012R2のデフォルト設定で「へぇー」となったものがありました。
ちょっとしたTipsではありますが、紹介します。

前提

さすがにM3ファミリーをこれから使おうという方はいないと思いますので、今回はM5d.largeを利用して確認していきます。
なお、これから紹介するデフォルトの設定については、M3.largeにおいても同様の設定となっていました。
利用したAMIについては次のAMIとなります。
※比較用にWindows Server 2016もローンチしてみました。

インスタンスストアボリュームのデフォルト設定

Windows Server 2012R2ではEC2 Configによって初期設定がなされます。
Windows Server 2012R2でのディスクの初期設定は次のスクリーンショットのようになっています。

Windows Server 2016だと次のようにそもそもオンラインになっておらず、ディスクの初期化、フォーマット、ドライブレターの割り当てと実施する必要があります。

仮想メモリ設定

前述のインスタンスタイプ変更の際に「ん?」となったのがこちらの設定です。
お客様に確認したところ、「使ってないはずなんだけどー、なんかディスク使われてるんですよね。」というところから始まりました。

ディスク使用済みの部分があるんですがー・・・

中にはImportant.txtしかない。。。

確認するとどうやら仮想メモリに使っているらしいことが分かりました。
Windows Server 2012R2ではデフォルトで次の設定になっています。

[コントロールパネル]⇒[システム]⇒[システムの詳細設定]⇒[詳細設定]タブ⇒パフォーマンスの項の[設定]⇒[詳細設定]タブ⇒仮想メモリの項の[設定]とたどると確認できます。
こちらについては詳細は省きます。

ちなみにWindows Server 2016でボリュームを作成すると、仮想メモリの設定は下記となりました。

仮想メモリの実体は?

仮想メモリの実体はファイルです。
システムファイルを表示させると、pagefile.sysというファイルを確認できます。

システムファイルを表示するには[コントロールパネル]⇒[フォルダオプション]⇒表示タブ、詳細設定の[保護されたオペレーティングシステム システム ファイルを表示しない(推奨)]のチェックを外します。
こちらも詳細は省きます。

Important.txtの中身

ちょっと脇道にそれますが、Important.txtの中身にはこんなことが書かれていました。

This is an ‘Instance Store’ disk and is provided at no additional charge.

*This disk offers increased performance since it is local to the host
*The number of Instance Store disks available to an instance vary by instance type
*DATA ON THIS DRIVE WILL BE LOST IN CASES OF IMPAIRMENT OR STOPPING THE INSTANCE. PLEASE ENSURE THAT ANY IMPORTANT DATA IS BACKED UP FREQUENTLY

For more information, please refer to: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html

機械翻訳したもの

これは「インスタンスストア」ディスクであり、追加料金なしで提供されます。

*このディスクはホストに対してローカルであるため、パフォーマンスが向上します
*インスタンスで使用可能なInstance Storeディスクの数は、インスタンスタイプによって異なります
*このドライブのデータは、障害が発生した場合やインスタンスを停止した場合に失われます。 重要なデータが頻繁にバックアップされることを確認してください

詳細については、http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.htmlを参照してください。

インスタンスストアボリュームについての紹介ですね。
特に障害発生、インスタンスを停止した場合にこのインスタンスストアボリューム上のデータが失われるという点は注意が必要です。

EC2Configの仕様

この仕様差についてはEC2ConfigとEC2Launchにおける初期設定のうち、ドライブ文字列の割り当ての挙動の違いによるものとなります。
EC2Configについては次のファイルの中の記載の一部を抜粋します。
C:\Program Files\Amazon\Ec2ConfigService\Docs\Ec2ConfigService.html

Drive Letter Mapping

The system maps the volumes attached to an instance to drive letters. For Amazon EBS volumes, the default is to assign drive letters going from D: to Z:. For instance store volumes, the default depends on the driver. Citrix PV drivers assign instance store volumes drive letters going from Z: to A:.

機械翻訳したもの

Drive Letter Mapping

システムは、インスタンスに接続されたボリュームをドライブ文字にマップします。 Amazon EBSボリュームの場合、デフォルトではD:からZ:に向かうドライブ文字が割り当てられます。インスタンスストアボリュームの場合、デフォルトはドライバーによって異なります。 Citrix PVドライバーは、インスタンスストアボリュームにZ:からA:へのドライブ文字を割り当てます。

というわけで、EC2Configにおいてはドライブ文字列の割り当てまで自動でやってくれます。
EC2Launchのデフォルトではルートボリューム以外のボリュームについてはオフラインとなっており、ドライブ文字列の割り当てについても手動でする必要があります。
参考:https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/WindowsGuide/ec2launch.html

最後に

今回インスタンスストアボリュームを持つインスタンスタイプにおける、OS(EC2Config or EC2Launch)による違いを紹介しました。
今後Windows Server 2012R2を新規に構築するか、と言われると疑問はありますが、とりあえず備忘として残しておきます。
ちなみに「へぇ~」と言ってもほとんど伝わらないんじゃないか、と途中で思いつつ書いたトリビアブログでした。

ではでは。

AWS運用自動化サービス「Cloud Automator」