Come posso risolvere l'errore “Nessuno spazio rimasto sul dispositivo” di Batch AWS?

4 minuti di lettura
0

Ricevo il messaggio di errore “Nessuno spazio rimasto sul dispositivo” quando il mio processo Batch AWS fallisce. Come posso risolvere il problema?

Breve descrizione

Batch AWS può restituire un errore “Nessuno spazio rimasto sul dispositivo” per due motivi:

  • Lo spazio su disco sul volume Docker ospitato su Amazon Elastic Block Store (Amazon EBS) non è sufficiente.
  • (Solo per Amazon Linux 1) Hai raggiunto il limite di archiviazione Docker predefinito di 10 GiB.

Per risolvere l'errore, verifica innanzitutto che il volume Docker ospitato su Amazon EBS disponga di spazio su disco sufficiente. Se lo spazio su disco non è sufficiente, aumenta le dimensioni del tuo volume Amazon EBS. Se lo spazio su disco è sufficiente, aumenta il limite di archiviazione Docker predefinito.

Entrambe le soluzioni richiedono la creazione di un nuovo modello di avvio personalizzato e di un nuovo ambiente di elaborazione. Non puoi aggiungere un nuovo modello di avvio personalizzato a un ambiente di elaborazione esistente in Batch AWS.

**Nota:**Amazon Linux Amazon Machine Image (AMI) 1 ottimizzato per Amazon Elastic Container Service (Amazon ECS) è obsoleto. AMI Amazon Linux 2 ottimizzata per Amazon ECS è l'immagine predefinita utilizzata per creare un ambiente di elaborazione gestito in Batch AWS. Per ulteriori informazioni, consulta Configurazione dell’archiviazione AMI. Questo articolo fa riferimento ad Amazon Linux 1 solo per motivi di compatibilità con le versioni precedenti.

  • Se disponi di un ComputeEnvironment Batch AWS che utilizza AMI Amazon Linux 1 ottimizzate per ECS per lanciare istanze Amazon Elastic Compute Cloud (Amazon EC2), è consigliabile creare un nuovo ComputeEnvironment. Batch AWS utilizza quindi l'AMI Amazon Linux 2 ottimizzata per ECS più recente disponibile al momento della creazione.
  • Se visualizzi l'errore “Nessuno spazio rimasto sul dispositivo” per i processi in esecuzione su un'istanza Amazon EC2 avviata utilizzando l'AMI Amazon Linux 2 ottimizzata per ECS, aumenta la dimensione del volume root (/dev/xvda) per rendere disponibile più spazio di archiviazione per il container.

Risoluzione

Nota: Se ricevi errori durante l'esecuzione dei comandi dell’Interfaccia della linea di comando AWS (AWS CLI), assicurati di utilizzare la versione più recente dell'interfaccia della linea di comando AWS. Puoi anche usare AWS CloudShell per eseguire i seguenti comandi.

Verifica se il tuo volume Docker ospitato su Amazon EBS dispone di spazio su disco sufficiente o meno

Segui le istruzioni nella sezione Per determinare lo spazio di archiviazione disponibile per Docker o configurazione dell’archiviazione AMI.

Se lo spazio su disco non è sufficiente, consulta la sezione Per aumentare la dimensione dei volumi Amazon EBS in Batch AWS di questo articolo.

-oppure-

Se lo spazio su disco è sufficiente, consulta la sezione (Solo per Amazon Linux 1) Per aumentare il limite di archiviazione Docker predefinito di questo articolo.

Aumenta le dimensioni dei volumi Amazon EBS in Batch AWS

  1. Crea un nuovo modello di avvio personalizzato che ridimensiona (aggiunge “VolumeSize” più grande dell'attuale) il volume di dati Docker (/dev/xvda sull'immagine AL2 ottimizzata ECS predefinita) sulle tue risorse di elaborazione Batch AWS. Per istruzioni, consulta il supporto dei modelli di avvio.

Nota:Se utilizzi Amazon Linux 1, assicurati di inserire entrambi i volumi Docker richiesti (/dev/xvda e /dev/xvdcz) per il valore DeviceName.

  1. Crea un nuovo ambiente di elaborazione che utilizzi il nuovo modello di avvio.

**Nota:**Le istanze Amazon EC2 associate mostrano le nuove dimensioni delle unità quando Batch AWS avvia le istanze.

(Solo per Amazon Linux 1) Per aumentare il limite di archiviazione Docker predefinito

  1. Crea un nuovo modello di avvio personalizzato utilizzando il formato di archivio multiparte MIME che aumenta il limite di archiviazione Docker predefinito. Per ulteriori informazioni, consulta i dati utente di Amazon EC2 nei modelli di avvio.

Esempio di file MIME multiparte che sovrascrive le impostazioni predefinite dell'immagine Docker per una risorsa di elaborazione Batch AWS

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 utilizzi l'interfaccia della linea di comando AWS o un SDK AWS, devi prima codificare in base64 i dati utente. Quindi, invia quella stringa come valore del parametro UserData quando chiami l'API CreateLaunchTemplate.

  1. Crea un nuovo ambiente di elaborazione che utilizzi il nuovo modello di avvio.

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa