Como resolvo o erro “Não há mais espaço no dispositivo” do AWS Batch?

4 minuto de leitura
0

Eu recebo uma mensagem de erro “Não há mais espaço no dispositivo” quando meu trabalho do AWS Batch falha. Como resolvo o problema?

Breve descrição

O AWS Batch pode retornar um erro “Não há mais espaço no dispositivo” por dois motivos:

  • Não há espaço em disco suficiente em seu volume do Docker hospedado na Amazon Elastic Block Store (Amazon EBS).
  • (Somente para Amazon Linux 1) Você atingiu o limite de armazenamento padrão do Docker de 10 GiB.

Para resolver o erro, primeiro verifique se o volume do Docker hospedado no Amazon EBS tem espaço em disco suficiente. Se não houver espaço em disco suficiente, aumente o tamanho do seu volume do Amazon EBS. Se houver espaço em disco suficiente, aumente o limite de armazenamento padrão do Docker.

Ambas as soluções exigem a criação de um novo modelo de execução personalizado e de um novo ambiente computacional. Você não pode adicionar um novo modelo de execução personalizado a um ambiente computacional existente no AWS Batch.

Observação: a imagem de máquina da Amazon (AMI) do Amazon Linux 1 otimizada para o Amazon Elastic Container Service (Amazon ECS) está obsoleta. A AMI do Amazon Linux 2 otimizada para o Amazon ECS é a imagem padrão usada quando você cria um ambiente computacional gerenciado no AWS Batch. Para mais informações, consulte Configuração de armazenamento da AMI. Este artigo faz referência ao Amazon Linux 1 somente para fins de compatibilidade com versões anteriores.

  • Se você tem um ambiente computacional do AWS Batch que usa AMIs do Amazon Linux 1 otimizadas para o ECS para executar instâncias do Amazon Elastic Compute Cloud (Amazon EC2), é uma prática recomendada criar um novo ambiente computacional. Em seguida, o AWS Batch usa a última AMI do Amazon Linux 2 otimizada para o ECS disponível no momento da criação.
  • Se você ver o erro “Não há mais espaço no dispositivo” para trabalhos em execução em uma instância do Amazon EC2 executada usando o AMI do Amazon Linux 2 otimizada para o ECS, aumente o tamanho do volume raiz (/dev/xvda) para disponibilizar mais espaço de armazenamento para o contêiner.

Resolução

Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), certifique-se de estar usando a versão mais recente da AWS CLI. Você também pode usar o AWS CloudShell para executar os seguintes comandos.

Verifique se o volume do Docker hospedado no Amazon EBS tem espaço em disco suficiente ou não

Siga as instruções na seção Para determinar o armazenamento disponível para o Docker ou na ](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-ami-storage-config.html)configuração de armazenamento da AMI[.

Se não houver espaço em disco suficiente, consulte a seção Para aumentar o tamanho dos volumes do Amazon EBS no AWS Batch deste artigo.

  • ou -

Se houver espaço em disco suficiente, consulte a seção (Somente para o Amazon Linux 1) Para aumentar o limite de armazenamento padrão do Docker deste artigo.

Aumente o tamanho dos volumes do Amazon EBS no AWS Batch

1.    Crie um novo modelo de execução personalizado que redimensione (adicione “volumeSize” maior que o atual) o volume de dados do Docker (/dev/xvda na imagem AL2 padrão otimizada para o ECS) em seus recursos de computação do AWS Batch. Para obter instruções, consulte Suporte para modelos de execução.

Observação: se você estiver usando o Amazon Linux 1, certifique-se de inserir os dois volumes do Docker necessários (/dev/xvda e /dev/xvdczv) para o valor deviceName.

2.    Crie um novo ambiente de computação que use o novo modelo de execução.

Observação: as instâncias associadas do Amazon EC2 mostram os novos tamanhos de drive quando o AWS Batch ativa as instâncias.

(Somente para o Amazon Linux 1) Para aumentar o limite padrão de armazenamento do Docker

1.    Crie um novo modelo de execução personalizado usando o formato de arquivo MIME de várias partes que aumenta o limite de armazenamento padrão do Docker. Para mais informações, consulte Dados do usuário do Amazon EC2 em modelos de execução.

Exemplo de arquivo MIME de várias partes que substitui as configurações padrão de imagem do Docker para um recurso de computação do AWS Batch

Content-Type: multipart/mixed; boundary="==BOUNDARY=="
MIME-Version: 1.0

--==BOUNDARY==
Content-Type: text/cloud-boothook; charset="us-ascii"
#cloud-boothook
#!/bin/bash
cloud-init-per once docker_options echo 'OPTIONS="${OPTIONS} --storage-opt dm.basesize=20G"' >> /etc/sysconfig/docker

--==BOUNDARY==--

**Importante:**Se você usa a AWS CLI ou um AWS SDK, primeiro deve codificar os dados do usuário em base64. Em seguida, envie essa string como o valor do parâmetro userData ao chamar a API CreateLaunchTemplate.

2.    Crie um novo ambiente de computação que use o novo modelo de execução.


AWS OFICIAL
AWS OFICIALAtualizada há 2 anos