Wie behebe ich den Fehler „Kein Speicherplatz mehr auf dem Gerät“ von AWS Batch?
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.
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor einem Jahr
- AWS OFFICIALAktualisiert vor 2 Jahren