AWS Batch에서 "No space left on device(디바이스에 남은 공간 없음)" 오류를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 4월 23일

AWS Batch 작업이 실패하면 "디바이스에 남은 공간 없음"이라는 오류 메시지가 표시됩니다. 이 오류를 해결하려면 어떻게 해야 합니까?

간략한 설명

다음과 같은 일반적인 시나리오로 인해 이 오류가 발생할 수 있습니다.

  • Amazon Elastic Block Store(Amazon EBS) 볼륨(dev/xvdcz)에 디스크 공간이 부족합니다.
  • 기본 Docker 스토리지 제한인 10GiB에 도달했습니다.

참고: 다음 해결 방법은 Amazon Elastic Container Service(Amazon ECS)에 최적화된 Amazon Linux 1 Amazon 머신 이미지(AMI)에 적용됩니다. Amazon ECS 최적화 AMI는 AWS Batch에서 관리형 컴퓨팅 환경을 생성할 때 사용되는 기본 이미지입니다. Docker가 LVM(논리적 볼륨 관리) 디바이스를 사용하는 방법을 이해하려면 버전 2015.09.d 이상을 참조하십시오.

해결 방법

Docker(dev/xvdcz)에 사용할 수 있는 스토리지 용량을 확인하려면 AMI 스토리지 구성을 참조하고 Docker에 사용할 수 있는 스토리지를 확인하려면의 지침을 따르십시오.

AWS Batch에서 시작한 인스턴스에 대해 Amazon EBS 볼륨을 확장해야 하는 경우 시작 템플릿을 사용하여 AWS Batch의 Amazon EBS 볼륨을 늘립니다.

Amazon EBS 볼륨 확장이 해당 시나리오에 가장 적합한 솔루션이 아니고 기본 스토리지 한도인 10GiB를 초과해야 하는 경우, Amazon Linux 1 AMI에서 시작된 Amazon ECS 인스턴스에 대한 Docker 컨테이너 스토리지 볼륨 한도를 늘리십시오.

참고: 시작 템플릿을 사용하여 AWS Batch에서 시작한 모든 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에 적용되는 구성 템플릿을 빌드할 수 있습니다. 시작 템플릿을 사용하면 사용자 지정 AMI를 사용하지 않고 AWS Batch에서 사용하는 기본 Amazon ECS 최적화 AMI를 사용자 지정할 수 있습니다.

Amazon EC2 콘솔에서 시작 템플릿에 사용자 데이터를 추가하는 경우 사용자 데이터를 일반 텍스트로 붙여 넣거나 파일에서 사용자 데이터를 업로드합니다.

AWS 명령줄 인터페이스(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==--

이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?