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

所要時間2分
0

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 を参照しています。

  • ECS Optimized Amazon Linux 1 AMI を使用して Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを起動する AWS Batch ComputeEnvironment がある場合は、新しい ComputeEnvironment を作成することをお勧めします。次に AWS Batch は、作成時に利用可能な最新の ECS Optimized Amazon Linux 2 AMI を使用します。
  • あなたが見れば**「デバイスに空き容量がありません」**ECS Optimized Amazon Linux 2 AMI を使用して起動された Amazon EC2 インスタンスで実行されているジョブでエラーが発生した場合は、ルート ボリューム (/dev/xvda) のサイズを増やして、コンテナで使用できるストレージ容量を増やしてください。

解決方法

注: 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デフォルトの ECS 最適化 AL2 イメージ) を AWS Batch コンピューティング リソースに。手順については、「起動テンプレートのサポート」を参照してください。

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

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

ノート: 関連付けられた Amazon EC2 インスタンスは、AWS Batch がインスタンスをスピンアップすると、新しいドライブ サイズを示します。

(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.    新しい起動テンプレートを使用する新しいコンピューティング環境を作成します


AWS公式
AWS公式更新しました 2年前
コメントはありません

関連するコンテンツ