【问题标题】:Launch new ec2 instance with powershell with increased volume size使用增加卷大小的 powershell 启动新的 ec2 实例
【发布时间】:2021-01-24 20:23:15
【问题描述】:

如何使用 New-EC2Instance 启动新的 EC2 实例,但增加了卷大小(大于 8GB 标准)。 我试过了:

...
$blockDeviceMapping = New-Object -TypeName Amazon.EC2.Model.BlockDeviceMapping
$ebsBlockDevice = New-Object -TypeName Amazon.EC2.Model.EbsBlockDevice
$blockDeviceMapping.DeviceName = '/dev/sda1'
$ebsBlockDevice.VolumeSize = '50'
$ebsBlockDevice.VolumeType = 'standard'
$blockDeviceMapping.Ebs = $ebsBlockDevice
...
$NewInstanceResponse = New-EC2Instance <...> -BlockDeviceMapping $blockDeviceMapping

但它会创建一个带有未安装卷的实例。 我正在尝试创建一个具有 1 个大小为 50GB 的存储卷的实例。

【问题讨论】:

  • 上面的代码和你写的一样吗?

标签: amazon-web-services powershell amazon-ec2 aws-cli


【解决方案1】:

删除 50 的单引号。它应该是 整数,如下所示。

"VolumeSize": 50

【讨论】:

  • 以上是我脚本中的代码 sn-p。不要误会我的意思,上面的脚本也可以,但它没有做我想要的。它实际上创建了一个新卷,它不会增加根存储卷。使用上面的代码,我得到 2 卷。一种标准大小为 8GB,另一种标准大小为 50GB。
【解决方案2】:

我首先创建了一个具有 50GB 根存储的实例,然后创建了该实例的映像,因此我可以使用具有增加的根存储的 AMI。 这可能是一种解决方法,但对我有用。 如果有更清洁的解决方案,我想听听。

【讨论】:

    【解决方案3】:

    确保您的卷名与您的实例类型的根卷名匹配。 就我而言,它是/dev/xvda

    我有一个来自 ASG LaunchTemplateData 的示例,但解决方案应该是相同的:

            BlockDeviceMappings:
              - DeviceName: /dev/xvda
                Ebs:
                  DeleteOnTermination: true
                  VolumeSize: 16
                  VolumeType: "gp2"
    

    如果我没记错的话,当我使用不同的名称时,只是创建了另一个卷 - 就像你的情况一样。

    然后,当您使用常规 8GB AMI 启动实例时,您仍会看到 8GB 文件系统。根据您的文件系统类型,您应该能够在第一次启动时在元数据中增加它。我执行以下操作:

            BLCKDEVICE=`lsblk -l | egrep 'part /$' | awk '{ print $1}' `
            DEVICE=`echo $BLCKDEVICE | cut -dp -f1`
            PARTID=`echo $BLCKDEVICE | cut -dp -f2`
            growpart /dev/$DEVICE $PARTID
            xfs_growfs -d /
    

    确保您的脚本与文件系统类型等您的 AMI 配置相匹配(在我的情况下,它是 XFS,但 ext4 也应该可以工作)。

    【讨论】:

      猜你喜欢
      • 2014-07-31
      • 1970-01-01
      • 1970-01-01
      • 2021-05-07
      • 2017-01-31
      • 2012-06-16
      • 1970-01-01
      • 2017-07-24
      • 2012-11-15
      相关资源
      最近更新 更多