Comment éliminer l'erreur « Aucun espace disponible sur l'appareil » dans AWS Batch ?

Date de la dernière mise à jour : 10/01/2022

Je reçois un message d'erreur « Aucun espace restant 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é descendante uniquement.

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érifiez si votre volume Docker hébergé sur Amazon EBS possède suffisamment d'espace disque ou non

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, consultez la section Pour augmenter la taille des volumes Amazon EBS dans AWS Batch de cet article.

-ou-

S'il y a suffisamment d'espace disque, consultez la section (Pour Amazon Linux 1 uniquement) Pour augmenter la limite de stockage Docker par défaut de cet article.

Pour augmenter la taille des volumes Amazon EBS dans AWS Batch

1.    Créez un modèle de lancement personnalisé qui redimensionne (ajoute une valeur « VolumeSize » supérieure au volume actuel) 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, voir 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.


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


Besoin d'aide pour une question technique ou de facturation ?