AWS Batch の「No space left on device (デバイスに空きスペースがありません)」エラーを解決する方法を教えてください。

最終更新日: 2020 年 4 月 23 日

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

簡単な説明

次の一般的なシナリオで、このエラーが発生することがあります。

  • Amazon Elastic Block Store (Amazon EBS) のボリューム (dev/xvdcz) に十分なディスク容量がない場合。
  • デフォルトの Docker ストレージ制限の 10 GiB に達した場合。

注: 以下の解決方法は、Amazon Elastic Container Service (Amazon ECS) 用に最適化された Amazon Linux 1 Amazon マシンイメージ (AMI) に適用されます。Amazon ECS に最適化された AMI は、AWS Batch でマネージド型コンピューティング環境を作成するときに使用するデフォルトのイメージです。Docker が Logical Volume Management (LVM) デバイスを使用する方法について詳しくは、バージョン 2015.09.d 以降をご参照ください。

解決方法

注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、最新の AWS CLI バージョンを使用していることを確認してください

Docker で使用可能なストレージ (dev/xvdcz) の容量を確認するには、AMI ストレージ設定Docker の使用可能なストレージを判断するにはで説明されている手順に従ってください。

AWS Batch で起動したインスタンスの Amazon EBS ボリュームを拡張する必要がある場合は、起動テンプレートを使用して AWS Batch で Amazon EBS ボリュームを増やします

注: 起動テンプレートを使用して、AWS Batch で起動されたすべての Amazon Elastic Compute Cloud (Amazon EC2) インスタンスに適用される設定テンプレートを構築することができます。起動テンプレートを使用すると、カスタム AMI を使用せずに、AWS Batch で使われるデフォルトの Amazon ECS 最適化 AMI をカスタマイズできます。

Amazon EC2 コンソールでユーザーデータを起動テンプレートに追加する場合、ユーザーデータをプレーンテキストとして貼り付けるか、またはユーザーデータをファイルからアップロードします。

AWS CLI または AWS SDK を使用する場合、最初にユーザーデータを base64 でエンコードする必要があります。その文字列を、CreateLaunchTemplate を呼び出すときに UserData パラメータの値として送信します。たとえば、次の JSON テンプレートの例をご覧ください。

{
    "LaunchTemplateName": "base64-user-data",
    "LaunchTemplateData": {
        "UserData": "ewogICAgIkxhdW5jaFRlbXBsYXRlTmFtZSI6ICJpbmNyZWFzZS1jb250YWluZXItdm9sdW..."
    }
}

次の MIME マルチパートファイルの例では、コンピューティングリソースのデフォルトの 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==
Content-Type: text/x-shellscript; charset="us-ascii"

#!/bin/bash
# Set any ECS agent configuration options
echo ECS_CLUSTER=default>>/etc/ecs/ecs.config
echo ECS_IMAGE_CLEANUP_INTERVAL=60m >> /etc/ecs/ecs.config
echo ECS_IMAGE_MINIMUM_CLEANUP_AGE=60m >> /etc/ecs/ecs.config
--==BOUNDARY==--

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


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