Comment puis-je résoudre l'erreur « Aucun espace restant sur l'appareil » dans AWS Batch ?

Date de la dernière mise à jour : 23/04/2020

Je reçois le message d'erreur suivant lorsque ma tâche AWS Batch échoue : « Aucun espace restant sur l'appareil ». Comment puis-je remédier à cela ?

Brève description

Il existe deux explications courantes possibles pour cette erreur :

  • Vous n'avez pas suffisamment d'espace disque sur votre volume Amazon Elastic Block Store (Amazon EBS) (dev/xvdcz).
  • Vous avez atteint la limite de stockage Docker par défaut qui est de 10 Gio.

Remarque : la résolution suivante s'applique aux Amazon Machine Images (AMI) Amazon Linux 1 optimisées pour Amazon Elastic Container Service (Amazon ECS). Une AMI optimisée pour Amazon ECS est l'image par défaut utilisée lorsque vous créez un environnement de calcul géré dans AWS Batch. Pour comprendre comment Docker utilise le périphérique de gestion des volumes logiques (LVM), consultez Version 2015.09.d et versions ultérieures.

Résolution

Pour voir l'espace de stockage disponible pour Docker (dev/xvdcz), consultez la page Configuration du stockage AMI et suivez les instructions de la section Pour déterminer le stockage disponible pour Docker.

Si vous devez étendre les volumes Amazon EBS pour vos instances lancées par AWS Batch, augmentez les volumes Amazon EBS dans AWS Batch à l'aide d'un modèle de lancement.

Si l'extension des volumes Amazon EBS n'est pas la meilleure solution pour votre scénario et que vous devez aller au-delà de la limite de stockage par défaut de 10 Gio, augmentez votre limite de volume de stockage de conteneur Docker pour les instances Amazon ECS lancées à partir des AMI Amazon Linux 1.

Remarque : Vous pouvez utiliser un modèle de lancement pour créer un modèle de configuration qui s'applique à toutes vos instances Amazon Elastic Compute Cloud (Amazon EC2) lancées par AWS Batch. Un modèle de lancement vous permet de personnaliser l'AMI optimisée pour Amazon ECS par défaut utilisée par AWS Batch sans utiliser d'AMI personnalisée.

Si vous ajoutez des données utilisateur à un modèle de lancement dans la console Amazon EC2, collez les données utilisateur sous forme de texte brut ou chargez-les à partir d'un fichier.

Si vous utilisez l'interface de ligne de commande AWS (AWS CLI) ou un kit SDK AWS, vous devez d'abord encoder les données utilisateur en base64. Ensuite, soumettez cette chaîne en tant que valeur du paramètre DonnéesUtilisateur lorsque vous appelez CréerUnModèleDeLancement. Par exemple, consultez le modèle JSON suivant :

{
    "LaunchTemplateName": "base64-user-data",
    "LaunchTemplateData": {
        "UserData": "ewogICAgIkxhdW5jaFRlbXBsYXRlTmFtZSI6ICJpbmNyZWFzZS1jb250YWluZXItdm9sdW..."
    }
}

L'exemple suivant de fichier MIME en plusieurs parties remplace les paramètres d'image Docker par défaut pour une ressource de calcul :

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==
Content-Type: text/x-shellscript; charset="us-ascii"

#!/bin/bash
# Set any ECS agent configuration options
echo ECS_CLUSTER=default>>/etc/ecs/ecs.config
echo ECS_IMAGE_CLEANUP_INTERVAL=60m >> /etc/ecs/ecs.config
echo ECS_IMAGE_MINIMUM_CLEANUP_AGE=60m >> /etc/ecs/ecs.config
--==BOUNDARY==--

Cet article vous a-t-il été utile ?

Cette page peut-elle être améliorée ?


Vous avez besoin d’aide ?