Amazon web services AWS EC2-使用运行实例连接更大的卷

Amazon web services AWS EC2-使用运行实例连接更大的卷,amazon-web-services,amazon-ec2,ec2-ami,Amazon Web Services,Amazon Ec2,Ec2 Ami,使用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 "[ { \"Devi

使用
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卷(虽然不是根卷),但实例立即停止(而不是终止)。我已尝试根据重命名DeviceName属性,这是一个临时实例,我将启动它,执行一些操作,然后终止。也许我需要先运行
create volume
,然后用一系列单独的命令附加它?AWS文档似乎到处都是,我找不到一个明确的解释,尽管我遇到了一些链接和链接。建议调整分区大小,但我不确定这是否是我需要做的。据我所知,
m3.2xlarge
实例类型有EBS可用。我对分区的命名有误吗?此配置中是否有东西导致实例停止

编辑

在实例自身停止后,作为对
descripe 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

我认为您遇到了与此问题相同的问题:

您的实例是一个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 } } ]"

如果省略
--block device mapping
命令参数,实例是否正确启动?(所有其他参数保持不变)。另外,对于停止的实例,“状态转换原因”是怎么说的?@MattHouser感谢您的回答。实例启动时没有--block设备映射。状态转换原因为空,即“
”状态转换原因“:”
。实例自身停止后,StateReason属性将读取:
“StateReason”:{“Message”:“Client.instanceInitiatedShutton:实例启动的关机”,“code”:“Client.instanceInitiatedShutton”},
。非常混乱,似乎实例正在自行关闭。为了更好的衡量,我将在我的问题的编辑中发布更多的回复。因此操作系统可能会触发关机。查看实例控制台日志,查看是否有提及的内容。也可以尝试使用
/dev/xvda
而不是
/dev/sda1
@MattHouser。先生,你是个天才,谢谢你。我没有意识到PV与HVM(准虚拟与硬件虚拟)的区别。对于阅读本文的任何人来说,这是一个相当不错的解释,说明了这种差异以及在选择实例类型时应该注意的事项。谢谢