我在使用aws ec2 run-instances
的单个命令中启动EC2实例并增加根分区的大小时遇到了困难:
aws ec2 run-instances \
--image-id ami-0b33d91d \
--count 1 \
--instance-type m3.2xlarge \
--key-name my_key \
--security-group-ids "sg-xxxxxxx" \
--ebs-optimized \
--block-device-mapping "[ { \"DeviceName\": \"/dev/sda1\", \"Ebs\": { \"VolumeSize\": 120 } } ]"
实例启动,我可以在控制台中看到列出的新120GB卷(虽然不是root用户),但实例会立即停止(不终止)。我已经尝试按these conventions重命名DeviceName属性,这是我要启动,执行操作然后终止的临时实例。也许我需要首先运行create-volume
然后用一系列单独的命令附加它?虽然我发现了一些链接here和here,但AWS文档似乎已经到处都是,我无法找到明确的解释。 This SO question建议调整分区大小,但我不确定这是否是我需要做的。据我所知,m3.2xlarge
实例类型有EBS可用。我错误地命名分区了吗?此配置中的某些内容是否导致实例停止?
修改
在实例停止后,我将跟随作为对describe-instances
:
"BlockDeviceMappings": [
{
"DeviceName": "/dev/xvda",
"Ebs": {
"Status": "attached",
"DeleteOnTermination": true,
"VolumeId": "vol-xxxx",
"AttachTime": "2017-03-05T00:57:23.000Z"
}
},
{
"DeviceName": "/dev/sda1",
"Ebs": {
"Status": "attached",
"DeleteOnTermination": true,
"VolumeId": "vol-xxxx",
"AttachTime": "2017-03-05T00:57:23.000Z"
}
}
],
"Architecture": "x86_64",
"StateReason": {
"Message": "Client.InstanceInitiatedShutdown: Instance initiated shutdown",
"Code": "Client.InstanceInitiatedShutdown"
},
"RootDeviceName": "/dev/xvda",
"VirtualizationType": "hvm",
"AmiLaunchIndex": 0
答案 0 :(得分:3)
我认为你遇到了这个问题所带来的同样问题:
您的实例是HVM实例,并希望使用/dev/xvda
作为根设备。但是,您需要指定/dev/sda1
。这是(a)创建一个辅助卷,但随后(b)阻止实例启动,因为它是一个PV相关设备而不是HVM。
因此,作为解决方案,请使用/dev/xvda
作为设备名称。与以下命令行类似:
aws ec2 run-instances \
--image-id ami-0b33d91d \
--count 1 \
--instance-type m3.2xlarge \
--key-name my_key \
--security-group-ids "sg-xxxxxxx" \
--ebs-optimized \
--block-device-mapping "[ { \"DeviceName\": \"/dev/xvda\", \"Ebs\": { \"VolumeSize\": 120 } } ]"