Пакетное задание AWS — на устройстве не осталось места, но включено автоматическое масштабирование EBS

#amazon-web-services #amazon-cloudformation #aws-batch

Вопрос:

Я получаю следующую ошибку в своем пакетном задании.

Я сталкиваюсь с проблемой, из-за которой я получаю a java.lang.RuntimeException: java.io.IOException: No space left on device в своих пакетных заданиях. Я думал, что том EBS, используемый в качестве директории монтирования, имеет автоматическое масштабирование EBS.

Мое пакетное задание запускает bbnorm.sh bbtools на двух парных fq.gz файлах, размер каждого файла составляет примерно 22 ГБ.

Этот базовый проект, из которого был взят этот шаблон, можно найти здесь: Вторичный анализ геномики с использованием функций AWS Step и пакета AWS.

Вот мой шаблон:

 Resources:
  LaunchTemplate:
    Type: "AWS::EC2::LaunchTemplate"
    Properties:
      LaunchTemplateData:
        BlockDeviceMappings:
          - Ebs:
              # root volume
              Encrypted: True
              DeleteOnTermination: True
              VolumeSize: 50
              VolumeType: gp2 
            DeviceName: /dev/xvda
          - Ebs:
              # ecs optimized ami docker storage volume, kept for compatibility
              Encrypted: True
              DeleteOnTermination: True
              VolumeSize: 22
              VolumeType: gp2 
            DeviceName: /dev/xvdcz
          - Ebs:
              # docker storage volume (amazon-ebs-autoscale managed)
              Encrypted: True
              DeleteOnTermination: True
              VolumeSize: 100
              VolumeType: gp2 
            DeviceName: /dev/sdc
        TagSpecifications:
          - ResourceType: volume
            Tags:
              - Key: Project
                Value: !Ref Project
              - Key: SolutionId
                Value: !FindInMap ['solution', 'metadata', 'id']
        UserData:
          Fn::Base64: |
            MIME-Version: 1.0
            Content-Type: multipart/mixed; boundary="==BOUNDARY=="

            --==BOUNDARY==
            Content-Type: text/cloud-config; charset="us-ascii"

            packages:
            - jq
            - btrfs-progs
            - wget
            - git
            - bzip2

            runcmd:
            - pip3 install -U awscli boto3

            - systemctl stop ecs
            - systemctl stop docker

            # install amazon-ebs-autoscale
            - cp -au /var/lib/docker /var/lib/docker.bk
            - rm -rf /var/lib/docker/*
            - EBS_AUTOSCALE_VERSION=$(curl --silent "https://api.github.com/repos/awslabs/amazon-ebs-autoscale/releases/latest" | jq -r .tag_name)
            - cd /opt amp;amp; git clone https://github.com/awslabs/amazon-ebs-autoscale.git
            - cd /opt/amazon-ebs-autoscale amp;amp; git checkout $EBS_AUTOSCALE_VERSION
            - sh /opt/amazon-ebs-autoscale/install.sh /var/lib/docker /dev/sdc 2>amp;1 > /var/log/ebs-autoscale-install.log
            - sed -i 's OPTIONS=.* OPTIONS="--storage-driver btrfs" g' /etc/sysconfig/docker-storage
            - cp -au /var/lib/docker.bk/* /var/lib/docker
            
            # install miniconda/awscli
            - wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
            - bash Miniconda3-latest-Linux-x86_64.sh -b -f -p /opt/miniconda
            - /opt/miniconda/bin/conda install -c conda-forge -y awscli
            - chown -R ec2-user:ec2-user /opt/miniconda
            - rm Miniconda3-latest-Linux-x86_64.sh

            - trap "systemctl start docker;systemctl enable --now --no-block ecs" INT ERR EXIT

            --==BOUNDARY==--
 

Комментарии:

1. Amazon EBS не выполняет автоматическое масштабирование.

2. @JohnRotenstein — не следует ли amazon-ebs-autoscale расширить и добавить больше блоков хранения? github.com/awslabs/amazon-ebs-autoscale

3. О! Вы добавили библиотеку для мониторинга и масштабирования томов EBS. Я никогда раньше не видел эту библиотеку.

4. @spitfiredd: Например, установлено ли разрешение IAM, чтобы можно было увеличить объем EBS. Вы можете обратиться github.com/awslabs/… , это дает представление о том, какие разрешения IAM необходимы.

Ответ №1:

После исследования я обнаружил, что было намного проще обновить спецификацию запуска с увеличенным объемом.

Пакет AWS не поддерживает обновление вычислительной среды с помощью новой версии шаблона запуска. При обновлении шаблона запуска необходимо создать новую вычислительную среду с новым шаблоном, чтобы изменения вступили в силу.

https://docs.aws.amazon.com/batch/latest/userguide/launch-templates.html