#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-autoscale3. О! Вы добавили библиотеку для мониторинга и масштабирования томов EBS. Я никогда раньше не видел эту библиотеку.
4. @spitfiredd: Например, установлено ли разрешение IAM, чтобы можно было увеличить объем EBS. Вы можете обратиться github.com/awslabs/… , это дает представление о том, какие разрешения IAM необходимы.
Ответ №1:
После исследования я обнаружил, что было намного проще обновить спецификацию запуска с увеличенным объемом.
Пакет AWS не поддерживает обновление вычислительной среды с помощью новой версии шаблона запуска. При обновлении шаблона запуска необходимо создать новую вычислительную среду с новым шаблоном, чтобы изменения вступили в силу.
https://docs.aws.amazon.com/batch/latest/userguide/launch-templates.html