AWS 인스턴스에 디스크 공간 '/'가 충분하지 않습니다.


28

나는 지금 내가에 디스크 공간이 없습니다 얻고, AWS 클라우드 내 웹 서버를위한 우분투 11.04 인스턴스를 실행하고 / 내 서버의 파티션. df -ah이

Filesystem            Size  Used Avail Use% Mounted on
/dev/xvda1            7.9G  7.8G   97M  99% /
proc                     0     0     0   -  /proc
none                     0     0     0   -  /sys
fusectl                  0     0     0   -  /sys/fs/fuse/connections
none                     0     0     0   -  /sys/kernel/debug
none                     0     0     0   -  /sys/kernel/security
none                  3.7G  112K  3.7G   1% /dev
none                     0     0     0   -  /dev/pts
none                  3.7G     0  3.7G   0% /dev/shm
none                  3.7G   80K  3.7G   1% /var/run
none                  3.7G     0  3.7G   0% /var/lock
/dev/xvdb             414G   16G  377G   4% /mnt

지금은 약간의 여분의 공간 얻기를 위해 이러한 일을 시도 / 파티션을

  • Apache의 모든 로그 파일을 정리하십시오.
  • 서버에서 불필요한 파일을 모두 제거했습니다.
  • 홈 디렉토리 정리.

그러나 여전히 충분한 공간이 없습니다. 이 인스턴스 유형은 8GB EBS에서 m1.large 입니다. 이제 / dev / xvdb 에 충분한 디스크 공간이 있습니다.

내가 일부 디스크 공간을 할당 할 수있는 방법이 있나요 /가 에서 는 / dev / xvdb 또는 다른 방법. 가능한 해결책을 제안하십시오 . 다른 인스턴스와 동일한 / dev / xvdb 파티션 을 사용할 수 있습니까 ?


1
2017 업데이트 : Amazon은 오늘날 드라이브 (부팅 드라이브조차도)를 즉시 크기를 조정할 수 있습니다! 여기 내 SO 대답을 참조하십시오 stackoverflow.com/a/42791031/7022062
드미트리 Shevkoplyas

답변:


26

답은 두 가지입니다.

해결 방법 : 임시 데이터에 / dev / xvdb (/ mnt)를 사용하십시오.

이는 소위 Amazon EC2 인스턴스 의 임시 스토리지 이며 그 특성은 다른 곳에서 사용중인 영구 Amazon EBS 스토리지와 크게 다릅니다 . 특히,이 임시 저장소가 정지에 손실됩니다 / 사이클을 시작 하고 일반적으로 멀리 갈 수있는 당신은 확실히 거기에 값을 지속의 물건을 올려하지 않도록, 즉 에만 넣어 일시적으로 당신이 잃거나 쉽게 다시이 감당할 수있는 데이터를 , 스왑 파일 또는 계산 중에 사용중인 엄격히 임시 데이터와 같은 물론 예를 들어 거대한 인덱스를 저장할 수 있지만 어떤 이유로 든 (인스턴스 재부팅, 하드웨어 오류 등) 스토리지가 지워진 후에 인덱스를 다시 빌드 할 수 있도록 준비해야합니다.

해결 방법 : / dev / xvda1 (/) 크기를 조정하여 원하는 저장 공간을 확보하십시오.

이는 Amazon EBS 지원 EC2 인스턴스 의 소위 루트 디바이스 스토리지 로 , 특히 유연성과 내구성을 위해 Amazon EBS 를 용이하게 합니다. 99.999999999 %의 내구성을 자랑하는 Amazon S3에 저장된 EBS 볼륨의 정기적 스냅 샷을 찍어 유연성과 내구성을 더욱 향상시킬 수 있습니다 .

이 스냅 샷 기능을 사용하면 현재 8GB EBS 루트 스토리지 (/ dev / xvda1)를 원하는만큼 크게 대체 할 수있는 한 문제를 차례로 해결할 수 있습니다. 이 프로세스는 Eric Hammond의 우수한 기사 실행중인 EBS 부팅 EC2 인스턴스에서 루트 디스크 크기 조정에 설명되어 있습니다 .

EC2 인스턴스에서 약간의 가동 중지 시간 (몇 분)으로 문제가 없으면 새 인스턴스를 시작할 필요없이 더 큰 사본으로 루트 EBS 볼륨을 변경할 수 있습니다.

그가 설명하는 단계를 올바르게 준비한 경우 (절차에 익숙해 지도록 EC2 인스턴스를 먼저 폐기하거나 맞춤형 스크립트를 통해 자동화하는 것이 좋습니다) 몇 가지 방법으로 프로세스를 완료 할 수 있어야합니다 실제로 가동 중지 시간.

설명 된 대부분의 단계는 AWS Management Console 을 통해서도 수행 할 수 있으므로 Amazon EC2 API 도구를 다루지 않아도됩니다 . 이것은 다음과 같이 요약됩니다.

  • EC2 인스턴스 중지 (종료하지 않음)
  • 중지 된 인스턴스에서 EBS 볼륨을 분리하십시오.
  • 분리 된 EBS 볼륨의 스냅 샷 생성
  • 생성 된 스냅 샷에서 새로운 (더 큰) EBS 볼륨 생성
  • EC2 인스턴스에 새 EBS 볼륨을 연결하십시오 ( 중요 ! 이것이 루트 디바이스 인 경우 인스턴스의 루트 디바이스로 이름을 정확히 지정해야합니다 (예 : (/ dev / sda1) 또는 (/ dev / xdva1)) 그렇지 않으면 루트 디바이스가 아닌 블록 디바이스로 연결되며 인스턴스에 대해 루트 디바이스가 나열되지 않으므로 인스턴스를 시작할 수 없습니다.)
  • 실행중인 인스턴스에 SSH를 통해 모든 것이 올바른지 확인합니다. df -ah
    • 시스템이 파일 시스템의 크기를 자동으로 조정하지 않은 경우 Eric의 기사에 설명 된대로 수동으로 수행해야합니다.

행운을 빕니다!


대안

이러한 EBS 볼륨의 다목적 성과 사용 편의성을 고려할 때 추가 옵션은 더 많은 EBS 볼륨을 인스턴스에 연결하고 명확하게 분리 가능한 관심 영역을 이동시키는 것입니다.

예를 들어, 우리는 버전 당 1-2GB의 스토리지를 사용하는 꽤 무거운 Java 애플리케이션을 사용하고 있습니다. 버전을 쉽게 업그레이드하고 일반적으로이 앱을 재량에 따라 다른 인스턴스로 옮길 수 있도록 각각 전용 EBS 볼륨에 배치하고 인스턴스에 마운트 한 다음 원하는 위치 (예 : 보통 /var/lib/<app>/<version>및)에 소프트 링크합니다 /usr/local/<app>/<version>.

이 방법을 사용하면 현재 기본 크기가 8GB (루터와 마찬가지로) 인 루트 장치 스토리지로 EC2 인스턴스를 실행하고 있지만 크기가 다양 (1-15GB) 인 EBS 볼륨을 최대 8 개까지 연결하는 경우도 있습니다.

그러나 모든 EBS 볼륨이 I / O에 대해 동일한 LAN을 사용하는 한 잠재적 인 네트워크 성능 문제에 대해 알고 있어야합니다. 이렇게하면 각각의 성능이 향상되거나 극단적 인 경우 네트워크가 포화 될 수 있습니다. 사용 사례 및 작업 부하에 대한


현재 16GB 크기의 데이터베이스를 유지하기 위해 / dev / xvdb를 사용하고 있습니다. 최신 프로세스를 유지하기 위해 하나의 백그라운드 프로세스가 실행 중입니다. 따라서이 데이터베이스에 가장 적합한 영구 저장소는 무엇입니까? Amazon RDS 또는 Amazon DynamoDB로 가야합니까? 당신의 제안은 무엇입니까? 이 인스턴스에서 PHP 서버를 실행하고 있습니다.
Sumant

2
@ Sumant : 좋지 않습니다. 따라서 기본적으로 언제든지 사라질 수있는 디스크에 데이터를 보관하는 것이 가장 위험합니다. 일반적으로 그렇지 않으면 그렇게 취급해야합니다. 과정 (당신이하는 동안 피할 데이터 손실을 위해이를 완화 할 때 조심하시기 바랍니다 - 나는 꿀벌이 점에서 오해의 소지를하지 않은 희망 ?에 관계없이 데이터베이스의 백업이, 당신을)!
Steffen Opel

@Sumant : 질문과 관련하여-스토리지 문제를 해결하기 위해 앱 아키텍처 (또는 해당 DB)를 전혀 변경할 필요가 없습니다. 제안 된대로 루트 디스크의 크기를 조정하거나 더 많은 EBS 볼륨을 연결하십시오. 그러나 DB 티어도 개선 및 분리하려는 경우, 이는 원칙적으로 미래 성장을 염두에두고 있지만 시작부터 각각의 비용이 발생한다는 점에서 좋은 것이며 현재 MySQL을 실행하고 있다고 가정하면 Amazon RDS 완벽하고 편리한 선택이 될 것입니다. Amazon DynamoDB에는 완전히 새로운 앱 아키텍처가 필요하며 특정 사용 사례에만 적용됩니다.
Steffen Opel

1
@Sumant : 그러나 DB를 m1.small RDS 인스턴스로 마이그레이션 하면 EC2의 현재 MySQL보다 실제로 성능이 느려질 수 있습니다 . EC2의 경우 각각의 CPU 및 I / O 성능 이점과 함께 m1.large를 실행합니다. 그래도 현재 DB 워크로드에 따라 다릅니다. 물론이 문제를 해결하기 위해 더 큰 RDS 인스턴스를 사용할 수도 있지만 그에 따라 비용이 증가합니다.
Steffen Opel

1

그래도 간단한 방법으로 fstab하고 / var / www / html / files2 /

그런 다음 mkdir / var / www / html / files2 / website 다음 ln -s -d / var / www / html / website / var / www / html / files2 / website


명령 blkids를 사용하여 파티션을 마운트하려면 UUID를 사용하고 fdisk는 '/ dev / vxds /'라고 말하여 파티션을 작성하십시오. 사용 자정 사령관 오 당신이 마운트 위치에서 올바른 폴더를 선택하기 위해선, 다른 한 폴더에서 F6으로 파일을 이동하고 물론 당신은 fstab에에 추가 한 후 '-a 마운트'를해야합니다
다니엘 CHAY

0

오늘 나는 같은 문제가 발생했습니다. 기본적으로 EBS가 8GB 인 새 ec2 인스턴스를 중단하면. 새 intace를 만들거나 스냅 샷을 만들거나 EBS를 분리하지 않고 연결된 EBS의 크기를 수정할 수 있습니다. 다음과 같은 세 가지 단계를 수행 할 수 있습니다.

  1. EBS 볼륨 크기 조정
  2. 파티션 크기 조정
  3. 파티션 크기 조정 첫 번째 단계로 AWS 콘솔로 이동 한 후 EBS를 클릭하고 원하는 크기를 변경하고 수정을 클릭하십시오.

질문 있으시면 나머지 단계를 위해이 기사 를 따르십시오 .

감사!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.