Amazon EC2 Windows インスタンス起動時に追加した複数のEBSボリュームを有効化する手順2選

2024.04.23

はじめに

Amazon EC2 Windows インスタンス起動時に追加した複数のEBSボリュームを利用するまでの手順をまとめました。

EC2 Windows インスタンスに複数のEBSボリュームを追加した状態でインスタンスを起動するだけでは、ルートボリューム(C ドライブ)以外は利用できません。

今回は、以下の2つの方法を紹介します。

  1. インスタンス起動後に手動で行う方法
  2. インスタンス起動時にユーザーデータを利用して自動で行う方法

EC2 インスタンス起動

マシンイメージは以下を利用します。

Microsoft Windows Server 2022 Base(東京リージョンのAMI ID:ami-00f0eb749082a6552)

インスタンスタイプは、t3.small、キーペアを選択します。

今回は検証目的のため、パブリックサブネット上にインスタンスを起動します。

ストレージ設定

[ストレージを設定]のアドバンスドを押下します。

[新しいボリュームを追加]から必要数を追加します。

追加をクリックすると、デバイス名はデフォルトがxvdbです。しかし、ドキュメントには、EBS ボリュームとしてデバイス名はxvd[f-z]が推奨されていますので、xvdfxvdgにします。

最終的な設定は以下の通りです。今回は、ルートボリュームに加えて2つのEBSボリュームを追加しました。

この設定でインスタンスを起動します。後述しますが、「2. ユーザーデータを利用して自動で行う方法」の場合、追加でユーザーデータの設定が必要です。

1. インスタンス起動後に手動で行う方法

EC2 インスタンスに接続します。

今回は、AWS Systems Manager Fleet ManagerからRDP接続します。設定や接続方法は以下の記事を参考ください

接続すると、Cドライブのみが利用可能であることがわかります。

AWSドキュメントに記載されている以下のスクリプトをPowerShellで実行すると、すべてのEBSボリュームが利用できるようになります。

Stop-Service -Name ShellHWDetection
Get-Disk | Where PartitionStyle -eq 'raw' | Initialize-Disk -PartitionStyle MBR -PassThru | New-Partition -AssignDriveLetter -UseMaximumSize | Format-Volume -FileSystem NTFS -NewFileSystemLabel "Volume Label" -Confirm:$false
Start-Service -Name ShellHWDetection

スクリプト以外にも、[Disk Management]から設定することもできます。

以下が実際の実行画面です。

実行後、追加したEBSボリューム2つ(DドライブとEドライブ)が表示されます。これで利用できるようになりました。

[Disk Management]からも確認できます。

スクリプト実行前が以下です。

スクリプト実行後が以下です。

2. インスタンス起動時にユーザーデータを利用して自動で行う方法

次に、ユーザーデータを利用する方法について説明します。

ユーザーデータとは、EC2 インスタンス起動時に、インスタンスに渡すことができる一連のスクリプトやコマンドです。ユーザーデータを利用することで、インスタンスの初期設定やソフトウェアのインストールなどを自動化できます。

ユーザーデータは、Windows Server 2022 では EC2Launch v2 によって処理されます。

AWSドキュメントに記載されている以下をユーザーデータに設定すると、インスタンスにアタッチされた空のEBSボリュームが初期化され、全てのEBSボリュームが利用できるようになります。執筆時点ではversionは1.1が最新です。

version: 1.1
tasks:
  - task: initializeVolume
    inputs:
      initialize: all

インスタンス起動時、以下の通りユーザーデータを設定します。

インスタンス起動後、RDP接続すると、追加したEBSボリューム2つ(DドライブとEドライブ)が利用可能であることが確認できました。

参考資料