AWS Batch の「No space left on device」というエラーを解決する方法を教えてください。

最終更新日: 2022 年 1 月 10 日

AWS Batch ジョブが失敗した際に、「No space left on device」(デバイスに空きスペースがありません) というエラーメッセージが表示されます。どうすればこの問題を解決できますか。

簡単な説明

AWS Batch は、次の 2 つの理由から「No space left on device」 (デバイスに空きスペースがありません) というエラーを返すことがあります。

  • Amazon Elastic Block Store (Amazon EBS) でホストされている Docker ボリュームに十分なディスク容量がない。
  • (Amazon Linux 1 のみ) Docker ストレージのデフォルト制限である 10 GiB に達した。

このエラーを解決するには、まず Amazon EBS でホストされている Docker ボリュームに十分なディスク容量があることを確認します。十分なディスク容量がない場合は、Amazon EBS ボリュームのサイズを大きくします。十分なディスク容量がある場合は、デフォルトの Docker ストレージ制限を増やします。

どちらのソリューションでも、新しいカスタム起動テンプレート新しいコンピューティング環境を作成する必要があります。AWS Batch の既存のコンピューティング環境に、新しいカスタム起動テンプレートを追加することはできません。

注: Amazon Elastic Container Service (Amazon ECS) に最適化された Amazon Linux Amazon マシンイメージ (AMI) 1 は廃止されました。Amazon ECS に最適化された Amazon Linux 2 AMI は、AWS Batch でマネージド型コンピューティング環境を作成するときに使用するデフォルトのイメージです。詳細については、AMI ストレージ設定を参照してください。この記事では、下位互換性のためにのみ Amazon Linux 1 を参照しています。

解決方法

注: AWS Command Line Interface (AWS CLI) コマンドの実行中にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してくださいAWS CloudShell を使用して次のコマンドを実行することもできます。

Amazon EBS でホストされている Docker ボリュームに十分なディスク容量があるかどうかを確認する

Docker で使用可能なストレージを確認するには」セクションまたは AMI ストレージ設定の手順に従います。

十分なディスク容量がない場合は、この記事の「AWS Batch で Amazon EBS ボリュームのサイズを増やすには」セクションを参照してください。

- または -

十分なディスク容量がある場合は、この記事の「(Amazon Linux 1 のみ) デフォルトの Docker ストレージ制限を増やすには」セクションを参照してください。

AWS Batch の Amazon EBS ボリュームのサイズを増やす

1.    AWS Batch コンピューティングリソースの Docker データボリューム (デフォルトの ECS 最適化 AL2 イメージでは /dev/xvda) のサイズを変更する (「VolumeSize」を現在よりも大きくする) 新しいカスタム起動テンプレートを作成します。手順については、「起動テンプレートのサポート」を参照してください。

注: Amazon Linux 1 を使用している場合は、 DeviceName の値に必要な Docker ボリューム (/dev/xvda /dev/xvdcz) の両方を必ず入力してください。

2.    新しい起動テンプレートを使用する新しいコンピューティング環境を作成します

注: AWS Batch がインスタンスをスピンアップすると、関連付けられた Amazon Elastic Compute Cloud (Amazon EC2) インスタンスに新しいドライブサイズが表示されます。

(Amazon Linux 1 のみ) デフォルトの Docker ストレージ制限を増やすには

1.    デフォルトの Docker ストレージ制限を増やす MIME マルチパートアーカイブ形式を使用して、新しいカスタム起動テンプレートを作成します。詳細については、「起動テンプレートの Amazon EC2 ユーザーデータ」を参照してください。

MIME マルチパートファイルの例では、AWS Batch のコンピューティングリソースのデフォルトの Docker イメージ設定をオーバーライドしている

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

重要: AWS CLI または AWS SDK を使用する場合、最初にユーザーデータを base64 でエンコードする必要があります。その文字列を、CreateLaunchTemplate API を呼び出すときに UserData パラメータの値として送信します。

2.    新しい起動テンプレートを使用する新しいコンピューティング環境を作成します


この記事はお役に立ちましたか。


請求に関するサポートまたは技術サポートが必要ですか?