Comment résoudre l'erreur « No space left on device » (Aucun espace disponible sur l'appareil) dans AWS Batch ?

Lecture de 4 minute(s)
0

Je reçois un message d'erreur « No space left on device » (Aucun espace disponible sur l'appareil) lorsque ma tâche AWS Batch échoue. Comment puis-je résoudre ce problème ?

Brève description

AWS Batch peut renvoyer l'erreur « Aucun espace restant sur l'appareil » pour deux raisons :

  • L'espace disque de votre volume Docker hébergé sur Amazon Elastic Block Store (Amazon EBS) est insuffisant.
  • (Pour Amazon Linux 1 uniquement) Vous avez atteint la limite de stockage Docker par défaut de 10 Gio.

Pour résoudre l'erreur, vérifiez d'abord que votre volume Docker hébergé sur Amazon EBS possède suffisamment d'espace disque. S'il n'y a pas assez d'espace disque, augmentez la taille de votre volume Amazon EBS. S'il y a suffisamment d'espace disque, augmentez la limite de stockage Docker par défaut.

Les deux solutions nécessitent la création d'un modèle de lancement personnalisé et d'un environnement de calcul. Vous ne pouvez pas ajouter de nouveau modèle de lancement personnalisé à un environnement de calcul existant dans AWS Batch.

Remarque : l'Amazon Machine Image (AMI) Amazon Linux 1 optimisée pour Amazon Elastic Container Service (Amazon ECS) est obsolète. L'AMI Amazon Linux 2 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 plus d'informations, consultez la section Configuration du stockage AMI. Cet article fait référence à Amazon Linux 1 pour des raisons de compatibilité avec les versions antérieurs uniquement.

  • Si vous disposez d'un environnement AWS Batch ComputeEnvironment qui utilise des AMI Amazon Linux 1 optimisées pour ECS pour lancer des instances Amazon Elastic Compute Cloud (Amazon EC2), il est recommandé de créer un environnement ComputeEnvironment. AWS Batch utilise ensuite la dernière AMI Amazon Linux 2 optimisée pour ECS disponible au moment de la création.
  • Si l'erreur « No space left on device » (Aucun espace disponible sur l'appareil) s'affiche pour les tâches exécutées sur une instance Amazon EC2 lancée en utilisant l'AMI Amazon Linux 2 optimisée pour ECS, augmentez la taille du volume racine (/dev/xvda) pour augmenter l'espace de stockage pour le conteneur.

Résolution

Remarque : si vous recevez des messages d'erreurs lors de l'exécution de commandes AWS Command Line Interface (AWS CLI), vérifiez que vous utilisez la version la plus récente d'AWS CLI. Vous pouvez également utiliser AWS CloudShell pour exécuter les commandes suivantes.

Vérifier que votre volume Docker hébergé sur Amazon EBS dispose d'un espace disque suffisant

Suivez les instructions de la section Pour déterminer le stockage disponible pour Docker ou Configuration du stockage AMI.

Si l'espace disque est insuffisant, reportez-vous à la section Pour augmenter la taille des volumes Amazon EBS dans AWS Batch de cet article.

-ou-

Si l'espace disque est suffisant, reportez-vous à la section (Pour Amazon Linux 1 uniquement) Pour augmenter la limite de stockage Docker par défaut de cet article.

Augmenter la taille des volumes Amazon EBS dans AWS Batch

1.    Créez un modèle de lancement personnalisé qui redimensionne (augmente la taille de volume (« VolumeSize ») le volume de données Docker (/dev/xvda sur l'image AL2 optimisée pour ECS par défaut) sur vos ressources de calcul AWS Batch. Pour obtenir des instructions, reportez-vous à Prise en charge des modèles de lancement.

Remarque : si vous utilisez Amazon Linux 1, assurez-vous de saisir les deux volumes Docker requis (/dev/xvda et /dev/xvdcz) pour la valeur DeviceName.

2.    Créez un environnement de calcul qui utilise le nouveau modèle de lancement.

Remarque : les instances Amazon Elastic Compute Cloud (Amazon EC2) associées affichent les nouvelles tailles de disques lorsque AWS Batch lance les instances.

(Pour Amazon Linux 1 uniquement) Pour augmenter la limite de stockage Docker par défaut

1.    Créez un modèle de lancement personnalisé à l'aide du format d'archivage partitionné MIME, qui augmente la limite de stockage Docker par défaut. Pour plus d'informations, consultez Données utilisateur Amazon EC2 dans les modèles de lancement.

L'exemple de fichier MIME à plusieurs parties remplace les paramètres d'image Docker par défaut pour une ressource de calcul 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==--

Important : si vous utilisez 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 UserData lorsque vous appelez l'API CreateLaunchTemplate.

2.    Créez un environnement de calcul qui utilise le nouveau modèle de lancement.


AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 2 ans