【问题标题】:AWS EC2 - Attach Larger Volume with run-instancesAWS EC2 - 使用运行实例附加更大的卷
【发布时间】:2017-07-24 05:35:04
【问题描述】:

我在使用 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,然后用一系列单独的命令附加它? AWS 文档似乎到处都是,我找不到明确的解释,尽管我遇到了一些链接 herehereThis 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

【问题讨论】:

  • 如果省略--block-device-mapping 命令参数,实例是否正确启动? (所有其他参数保持不变)。另外,在停止的实例上,“状态转换原因”是什么意思?
  • @MattHouser 感谢您的回复。该实例在没有 --block-device-mapping 的情况下可以正常启动。状态转换原因为空,即"StateTransitionReason": "",。 StateReason 属性在实例自行停止后显示为:"StateReason": { "Message": "Client.InstanceInitiatedShutdown: Instance initiated shutdown", "Code": "Client.InstanceInitiatedShutdown" }, 。非常令人困惑,似乎实例正在自行关闭。为了更好地衡量,我将在我的问题的编辑中发布更多回复。
  • 所以操作系统可能会触发关机。查看实例控制台日志,看看是否有任何提及。
  • 也可以尝试使用/dev/xvda 而不是/dev/sda1
  • @MattHouser 成功了。楼主你真是个天才,谢谢。我不知道 PV 与 HVM(准虚拟 VS 硬件 VM)的差异。对于阅读此线程的任何人,this article 是对差异以及在选择实例类型时应注意的事项的一个相当不错的解释。谢谢!

标签: amazon-web-services amazon-ec2 ec2-ami


【解决方案1】:

我认为您遇到了与这个 SO 问题相同的问题:

https://serverfault.com/questions/615188/aws-t1-to-t2-migration-client-instanceinitiatedshutdown-on-new-t2-instance

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

【讨论】:

    猜你喜欢
    • 2018-12-29
    • 1970-01-01
    • 2019-01-23
    • 1970-01-01
    • 2015-04-10
    • 2017-12-05
    • 1970-01-01
    • 1970-01-01
    • 2014-11-05
    相关资源
    最近更新 更多