こんにちは。技術二課の伊藤Kです。
Sysprepについて、こんな記事を書きました。 【EC2】Sysprepの手順【Windows】
上記手順に沿ってSysprepを実施したところ、OSのドライブレターが、 Sysprep前は「システム:C、データ:G」だったのに・・・
Sysprep後に「システム:C、データ:D」になってしまいました・・・。
もともと「システム:C、データ:D」のときは変化なし、「システム:C、データ:E、データ:G」のとき「システム:C、データ:D、データ:E」になってしまうので、データドライブがDから順番に並べなおされるように見えます。
今日は、データドライブのSysprep前のドライブレターを維持する方法についてです。
はじめに
前提として、まずこの現象はバグではなく仕様です。
EC2Configの場合
EC2Config サービスを使用した Windows インスタンスの設定
システムは、インスタンスにアタッチされたボリュームにドライブ文字をマッピングします。Amazon EBS ボリュームの場合、デフォルトでは D: から Z: のドライブ文字が割り当てられます。
EC2Launchの場合
EC2Launch を使用した Windows インスタンスの設定 こちらは明示的な記述はありませんが、動きはEC2Configと同じです。
ドライブ文字のマッピング
冒頭に「Sysprep前のドライブレターを維持する方法」と書きましたが、イメージとしては「維持する」というよりも、「指定する」となります。Sysprep前と同一のレターの指定も可能です。
EC2Configの場合
まず、ドライブ文字を割り当てたいドライブには、あらかじめOSの設定より「ボリュームラベル」を設定しておきます。 ここでは、Hドライブに「FILES」のボリュームラベルを設定しました。
EC2Configを用いたSysprepの手順内で、プログラム一覧よりEC2Configを開いた後に「Storage」タブを選択し、 「Drive Letter Mappings」のペインより [Mappings] をクリックします。
「Volume Name」に設定した「ボリュームラベル」の値を入力し、「Drive Letter」に指定するドライブレターを入力します。 維持するなら「Hドライブ」でよいのですが、ここでは「Gドライブ」に変更してみます。 [OK] をクリックします。
その後は通常のSysprepと同様に [Shutdown with sysprep] をクリックしてSysprepします。
Sysprepが完了してシャットダウン状態となったインスタンスよりイメージ(AMI)を作成し、作成したイメージよりインスタンスを起動すると、指定したボリュームラベルのドライブに、指定したドライブレターが付与されています。
EC2Launchの場合
※ 記事作ってから気づきました。OSの「ディスクの管理」からドライブ文字を普通に振りなおせばよくないか、と。 以下は参考情報として載せておきます。
EC2Launchには、「Drive Letter Mappings」の項目がありません。 EC2Configの場合と同様に、ドライブ文字を割り当てたいドライブには、あらかじめOSの設定より「ボリュームラベル」を設定しておきます。
さらに、「C:\ProgramData\Amazon\EC2-Windows\Launch\Config\DriveLetterMappingConfig.json」をメモ帳等で開き、以下の通り記載します。
{
"driveLetterMapping": [
{
"volumeName": "DATA",
"driveLetter": "G"
}
]
}
その後は通常のSysprepと同様に [Shutdown with sysprep] をクリックしてSysprepします。
Sysprepが完了してシャットダウン状態となったインスタンスよりイメージ(AMI)を作成し、作成したイメージよりインスタンスを起動すると、今度はDドライブになってしまいます。
ここで、以下パスのPowerShellスクリプトを実行します。 C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeDisks.ps1
すると、ドライブレターが上記「DriveLetterMappingConfig.json」で指定した文字に変更されます。