我该如何使用启动模板以增加 AWS Batch 中的 Amazon EBS 卷?

上次更新时间:2020 年 2 月 3 日

我想使用启动模板来增加 AWS Batch 中的 Amazon Elastic Block Store (Amazon EBS) 卷。

简短描述

您可以修改您的实例上的存储配置,并且此实例应在 AWS Batch 中创建,而无需使用自定义的 Amazon 系统映像 (AMI)。

要增加 AWS Batch 中的 Amazon EBS 卷,您必须创建启动模板,然后将该模板与您的计算环境关联。

您可以使用以下工具创建启动模板:

  • Amazon Elastic Compute Cloud (Amazon EC2) 控制台
  • AWS 命令行界面 (AWS CLI)

以下解决方法将为您介绍如何使用 AWS CLI 创建启动模板。

注:启动模板上的 DeviceName 可能有所不同,具体取决于您所使用的针对 Amazon Elastic Container Service (Amazon ECS) 经过优化的 AMI 版本。在默认情况下,AWS Batch 基于两个 Amazon EBS 卷(/dev/xvda /dev/xvdcz)中自带的 Amazon Linux 1。如果您使用的是 Amazon Linux 2,AWS Batch 只有单个卷 (/dev/xvda)。 如需更多信息,请见 AMI 存储配置

重要提示:要提高 Amazon Linux 1 存储限制,使其高于 Docker 存储限制(每个容器 10 GiB),见我该如何解决 AWS Batch 中“设备上没有剩余空间”错误?

解决方法

创建启动模板

1.    创建一个名为 launch-template-data.json 的文件,以便为您的计算环境调整卷的大小。请见以下示例。

为 Amazon Linux 1 增加卷(/dev/xvda/dev/xvdcz)的模板示例:

{
    "LaunchTemplateName":"increase-all-volume",
    "LaunchTemplateData": {
        "BlockDeviceMappings": [
          {
            "Ebs": {
              "DeleteOnTermination": true,
              "VolumeSize": 50,
              "VolumeType": "gp2"
            },
            "DeviceName": "/dev/xvda"
          },
          {
            "Ebs": {
              "DeleteOnTermination": true,
              "VolumeSize": 75,
              "VolumeType": "gp2"
            },
            "DeviceName": "/dev/xvdcz"
          }          
        ]
  }
}

为 Amazon Linux 2 增加卷 (/dev/xvda) 的模板示例:

{
    "LaunchTemplateName": "increase-volume",
    "LaunchTemplateData": {
        "BlockDeviceMappings": [
            {
                "DeviceName": "/dev/xvda",
                "Ebs": {
                    "VolumeSize": 100,
                    "VolumeType": "gp2"
                }
            }
        ]
    }
}

2.    要创建启动模板,运行以下命令:

aws ec2 --region us-east-1 create-launch-template --cli-input-json file://launch-template-data.json

注:us-east-1 替换为您的 AWS 区域。

输出应类似于以下内容:

{
    "LaunchTemplate": {
        "LaunchTemplateId": "lt-06935eb650e40f886",
        "LaunchTemplateName": "increase-volume",
        "CreateTime": "2019-12-26T09:40:46.000Z",
        "CreatedBy": "arn:aws:iam::12345678999:user/alice",
        "DefaultVersionNumber": 1,
        "LatestVersionNumber": 1
    }
}

创建新的计算环境,并将其与您的新启动模板关联

1.    打开 AWS Batch 控制台

2.    在导航窗格中,选择计算环境

3.    选择创建环境

4.    在配置您的计算资源部分中,为启动模板选择您在之前创建的启动模板。

5.    选择创建

注:当 AWS Batch 启动实例时,实例将显示新驱动器的大小。

6.    要测试卷是否调整过大小,使用 SSH 连接至由 AWS Batch 启动的实例,然后运行以下命令:

$ lsblk

输出应类似于以下示例:

NAME                                                                          MAJ:MIN   RM  SIZE RO TYPE MOUNTPOINT
xvda                                                                          202:0      0   50G  0 disk 
`-xvda1                                                                       202:1      0   50G  0 part /
xvdcz                                                                         202:26368  0   75G  0 disk 
`-xvdcz1                                                                      202:26369  0   75G  0 part 
  |-docker-docker--pool_tdata                                                 253:1      0 74.1G  0 lvm  
  | `-docker-docker--pool                                                     253:2      0 74.1G  0 lvm  
  |   `-docker-202:1-394378-b6aedb5f6f6fd8af3731edb7043bafa704d9ff9752495f8eb24e613ec5dd85fd
                                                                              253:3      0   10G  0 dm   /var/lib/docker/devicemapper/mnt/b6aedb5f6f6fd8a
  `-docker-docker--pool_tmeta                                                 253:0      0   80M  0 lvm  
    `-docker-docker--pool                                                     253:2      0 74.1G  0 lvm  
      `-docker-202:1-394378-b6aedb5f6f6fd8af3731edb7043bafa704d9ff9752495f8eb24e613ec5dd85fd
                                                                              253:3      0   10G  0 dm   /var/lib/docker/devicemapper/mnt/b6aedb5f6f6fd8a

输出会显示 /dev/xvda50G/dev/xvdcz75G


这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助?