Wie behebe ich den Fehler „Kein Speicherplatz mehr auf dem Gerät“ von AWS Batch?

Lesedauer: 4 Minute
0

Ich erhalte die Fehlermeldung „Kein Speicherplatz mehr auf dem Gerät“, wenn mein AWS Batch-Job fehlschlägt. Wie löse ich das Problem?

Kurzbeschreibung

AWS Batch kann aus zwei Gründen den Fehler „Kein Speicherplatz mehr auf dem Gerät“ ausgeben:

  • Auf Ihrem Docker-Volume, das im Amazon Elastic Block Store (Amazon EBS) gehostet wird, ist nicht genügend Speicherplatz vorhanden.
  • (Nur für Amazon Linux 1) Sie haben das standardmäßige Docker-Speicherlimit von 10 GiB erreicht.

Um den Fehler zu beheben, überprüfen Sie zunächst, ob Ihr auf Amazon EBS gehostetes Docker-Volume über ausreichend Speicherplatz verfügt. Wenn nicht genügend Speicherplatz vorhanden ist, erhöhen Sie die Größe Ihres Amazon EBS-Volumes. Wenn genügend Speicherplatz vorhanden ist, erhöhen Sie das standardmäßige Docker-Speicherlimit.

Beide Lösungen erfordern die Erstellung einer neuen benutzerdefinierten Startvorlage und einer neuen Rechenumgebung. Sie können einer vorhandenen Rechenumgebung in AWS Batch keine neue benutzerdefinierte Startvorlage hinzufügen.

**Hinweis:**Das für Amazon Elastic Container Service (Amazon ECS) optimierte Amazon Linux Amazon Machine Image (AMI) 1 ist veraltet. Das für Amazon ECS optimierte Amazon Linux 2-AMI ist das Standard-Image, das verwendet wird, wenn Sie eine verwaltete Rechenumgebung in AWS Batch erstellen. Weitere Informationen finden Sie unter AMI-Speicherkonfiguration. Dieser Artikel bezieht sich nur aus Gründen der Abwärtskompatibilität auf Amazon Linux 1.

  • Wenn Sie über eine AWS Batch-Rechenumgebung verfügen, die ECS-optimierte Amazon Linux 1-AMIs verwendet, um Amazon Elastic Compute Cloud (Amazon EC2)-Instances zu starten, empfiehlt es sich, eine neue Rechenumgebung zu erstellen. AWS Batch verwendet dann das zum Zeitpunkt der Erstellung neueste ECS Optimized Amazon Linux 2-AMI.
  • Wenn bei Jobs, die auf einer Amazon EC2-Instance ausgeführt werden, die mit ECS Optimized Amazon Linux 2 AMI gestartet wurde, die Fehlermeldung „Kein Speicherplatz auf dem Gerät übrig“ angezeigt wird, erhöhen Sie das Root-Volume (/dev/xvda), um mehr Speicherplatz für den Container zur Verfügung zu stellen.

Lösung

**Hinweis:**Wenn Sie beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehler erhalten, stellen Sie sicher, dass Sie die neueste AWS CLI-Version verwenden. Sie können AWS CloudShell ebenfalls verwenden, um die folgenden Befehle auszuführen.

Überprüfen Sie, ob Ihr auf Amazon EBS gehostetes Docker-Volume über ausreichend Speicherplatz verfügt oder nicht

Folgen Sie den Anweisungen im Abschnitt So ermitteln Sie den verfügbaren Speicher für Docker oder in der AMI-Speicherkonfiguration.

Wenn nicht genügend Festplattenspeicher verfügbar ist, lesen Sie den Abschnitt So erhöhen Sie die Größe von Amazon EBS-Volumes in AWS Batch in diesem Artikel.

-oder-

Wenn genügend Festplattenspeicher vorhanden ist, lesen Sie den Abschnitt (Nur für Amazon Linux 1) So erhöhen Sie das standardmäßige Docker-Speicherlimit in diesem Artikel.

Erhöhen Sie die Größe der Amazon EBS-Volumes in AWS Batch

1.Erstellen Sie eine neue benutzerdefinierte Startvorlage, die die Größe des Docker-Datenvolumens (/dev/xvda auf ECS-optimiertem Standard-AL2-Image) auf Ihren AWS Batch-Rechenressourcen anpasst (fügt „VolumeSize“ hinzu, das größer ist als das aktuelle). Anweisungen finden Sie unter Support für Startvorlagen.

Hinweis: Wenn Sie Amazon Linux 1 verwenden, stellen Sie sicher, dass Sie beide erforderlichen Docker-Volumes (/dev/xvda und /dev/xvdcz) für den Wert DeviceName eingeben.

2.Erstellen Sie eine neue Rechenumgebung, die die neue Startvorlage verwendet.

Hinweis: Die zugehörigen Amazon EC2-Instances zeigen die neuen Laufwerksgrößen an, wenn AWS Batch die Instances hochfährt.

(Nur für Amazon Linux 1) So erhöhen Sie das standardmäßige Docker-Speicherlimit

1.Erstellen Sie eine neue benutzerdefinierte Startvorlage mit dem mehrteiligen MIME-Archivformat, das das standardmäßige Docker-Speicherlimit erhöht. Weitere Informationen finden Sie unter Amazon EC2-Benutzerdaten in Startvorlagen.

Beispiel für eine mehrteilige MIME-Datei, die die standardmäßigen Docker-Image-Einstellungen für eine AWS Batch-Rechenressource überschreibt

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==--

Wichtig: Wenn Sie die AWS-CLI oder ein AWS-SDK verwenden, müssen Sie zuerst die Benutzerdaten base64-codieren. Senden Sie diese Zeichenfolge dann als Wert des Parameters UserData, wenn Sie die CreateLaunchTemplate-API aufrufen.

2.Erstellen Sie eine neue Rechenumgebung, die die neue Startvorlage verwendet.


AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren