You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS EC2 Image Builder构建AMI时磁盘空间不足问题解决

解决EC2 Image Builder构建AMI时磁盘空间不足的问题

问题分析

你遇到的磁盘空间不足错误,核心原因是:

  1. 你在镜像配方中定义的50GB卷是附加数据卷(/dev/sde),而非构建实例的根卷,构建过程默认将临时文件、安装内容、TOE运行数据全部写入根卷(默认8GB),导致空间耗尽。
  2. 自定义组件仅完成了附加卷的挂载,但未修改构建流程的写入路径,因此该卷完全未被利用。

方案1:直接扩大根卷大小(最简便)

Image Builder构建实例的根卷默认继承父AMI的大小(此处为8GB),只需在镜像配方中修改根卷的块设备映射,即可扩大根卷空间:

修改my_image_recipe中的block_device_mappings配置,针对根卷设备(Amazon Linux 2的根卷设备名通常为/dev/xvda,部分环境为/dev/sda)调整大小:

my_image_recipe = imagebuilder.CfnImageRecipe(self, "myImageRecipe",
    components=[{"componentArn": my_component.attr_arn}],
    name="My-Image-Recipe",
    parent_image="ami-076bca9dd71a9a5670",
    version=my_image_version,
    working_directory="/tmp",

    # 替换原附加卷配置,修改根卷为50GB
    block_device_mappings=[imagebuilder.CfnImageRecipe.InstanceBlockDeviceMappingProperty(
            device_name="/dev/xvda",  # 根卷设备名,可通过lsblk确认实际值
            ebs=imagebuilder.CfnImageRecipe.EbsInstanceBlockDeviceSpecificationProperty(
            delete_on_termination=True,
            encrypted=False,
            volume_size=50,
            volume_type="gp3"
        )
    )]
)

方案2:使用附加卷作为构建存储(适合存储分离场景)

若需使用附加卷,需修改构建流程,将所有写入操作指向挂载的卷,包括Image Builder工作目录和TOE临时目录:

步骤1:修改镜像配方的工作目录

将working_directory改为附加卷下的路径:

working_directory="/data/imagebuilder-workdir",

步骤2:更新自定义组件,完成卷挂载与路径映射

修改return_my_component_doc(),确保创建必要目录并绑定TOE路径:

def return_my_component_doc():
    my_component_doc = f'''
    name: MyDeploymentDocument_A
    description: Downloads, installs and configures on Amazon Linux
    schemaVersion: 1.0
    phases:
      - name: build
        steps:
          - name: PrepareBuildVolume
            action: ExecuteBash
            inputs:
              commands:
                - sudo mkfs -t xfs /dev/sde
                - sudo mkdir -p /data /data/imagebuilder-workdir /data/toe
                - sudo mount /dev/sde /data
                # 将TOE的临时目录绑定到附加卷,避免写入根卷
                - sudo mount --bind /data/toe /var/lib/amazon/toe
                # 调整权限,确保Image Builder进程可写入
                - sudo chown -R ec2-user:ec2-user /data
    '''  
    return my_component_doc

步骤3:修改安装脚本的写入路径

确保你的安装命令(如Splunk SOAR)将内容写入附加卷,例如:

# 示例:指定Splunk SOAR安装到/data目录
sudo ./splunk-soar-installer.sh --install-dir /data/splunk-soar

内容的提问来源于stack exchange,提问作者dredbound

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 11:24:55