实例启动时快照中的 Windows EBS 卷处于脱机状态

实例启动时快照中的 Windows EBS 卷处于脱机状态

使用 Powershell 启动 Server 2012 R2 计算机。我可以从库存 Server 2012R2 AMI 启动一个实例,并在 d: 驱动器上定义新的 EBS 卷,并且在启动时处于在线状态,并且运行良好。

如果我使用相同的代码并仅添加从快照创建卷,它将启动,卷在那里,但它显示为脱机。一旦进入磁盘管理器,将其标记为在线,一切又恢复正常,我有一个 D: 驱动器。

我尝试了几种不同的方法来创建快照(运行、离线、分离、实例停止)。似乎没有什么区别。

编辑:还尝试启动没有卷的实例、配置卷并将其附加到实例。结果相同

有什么想法吗?

谢谢

凸轮

我正在使用的代码:

#configure D:\ drive
$Volume2 = New-Object Amazon.EC2.Model.EbsBlockDevice
$Volume2.DeleteOnTermination = $True
$Volume2.VolumeSize = 10
$Volume2.VolumeType = "gp2"
$Volume2.SnapshotId = "snap-xxxxxx"
#and map it 
$Mapping2 = New-Object Amazon.EC2.Model.BlockDeviceMapping
$Mapping2.DeviceName = 'xvdf'
$Mapping2.Ebs = $Volume2
#create the instance
$NewInstance = New-EC2Instance -ImageId $ImageId -MinCount 1 -MaxCount 1 -InstanceType "t2.medium" -SecurityGroupIds xxxx  -SubnetId xxxxx -UserData $UserdataBase64Encoded -KeyName XXX -AvailabilityZone us-east-1c  -BlockDeviceMapping $Mapping2

答案1

Windows Server 2012 的现有服务器对于其找到的要安装的新存储具有默认的 OFF-LINE 策略。您可以更改该策略,但它不再是“现有”的。“现有服务器”没有 D: 驱动器,因此您必须采取一些措施。

在某些时候,您必须从“stock Server”+D:drive 内部执行代码。

此示例将脱机的磁盘变为联机。

  • Windows PowerShell PS C:> Set-Disk -Number 5 -IsOffline $False

问题是,如何从“股票服务器”执行此代码? 亚马逊Windows AMI“库存服务器”包含由 Amazon Web Services 安装的附加服务,即 EC2Config 服务。EC2Config 的“用户数据”可让您在首次启动时将脚本注入实例元数据。默认情况下,所有 Amazon AMI 都已启用初始启动时的用户数据执行。

有关详细信息,请参阅使用 EC2Config 服务配置 Windows 实例

答案2

使用 Packer 制作 AMI 时,我遇到了同样的问题 - 当我启动由 Packer 制作的 AMI 时,任何添加的驱动器都处于离线状态。

我通过在 Packer 中现有的 PowerShell 脚本提供程序中添加以下行来修复此问题:

Set-StorageSetting -NewDiskPolicy OnlineAll

由于这是一个安全敏感的环境,安全扫描可能会发现它并将其标记为 STIG 违规或类似的东西,但它确实解决了问题。

相关内容