如何使用启动模板增加 AWS Batch 中 Amazon EBS 卷的大小?
上次更新时间:2020 年 8 月 19 日
我想使用启动模板增加 AWS Batch 中 Amazon Elastic Block Store (Amazon EBS) 卷的大小。
简短描述
要增加 AWS Batch 中 Amazon EBS 卷的大小,您必须首先创建一个启动模板,然后将该模板与您的计算环境关联。
您可以使用 Amazon Elastic Compute Cloud (Amazon EC2) 控制台或 AWS 命令行界面 (AWS CLI) 创建启动模板。以下解决方法将为您演示如何使用 AWS CLI 创建启动模板。
注意:根据您使用的 Amazon Elastic Container Service (Amazon ECS) 优化 Amazon 系统映像 (AMI) 版本,启动模板中的 DeviceName 参数可能不同。在默认情况下,AWS Batch 基于 Amazon Linux 1,其中自带两个 Amazon EBS 卷(/dev/xvda 和 /dev/xvdcz)。如果您使用的是 Amazon Linux 2,AWS Batch 只有单个卷 (/dev/xvda)。有关更多信息,请参阅 AMI 存储配置。
重要提示:要提高 Amazon Linux 1 存储限制,使其高于 Docker 存储限制(每个容器 10GiB),请参阅如何解决 AWS Batch 中的“设备上没有剩余空间”错误?
解决方法
注意:如果在运行 AWS CLI 命令时遇到错误,请确保您使用的是最新版本的 AWS CLI。
创建启动模板
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/xvda 为 50G,/dev/xvdcz 为 75G。