[server] EC2 우분투 이미지에 스왑이없는 이유는 무엇입니까?

EC2에서 몇 대의 서버를 시작했는데 스왑이 없습니다.

내가 잘못하고 있거나 기계에없는 것이 있습니까?



답변

Ubuntu EC2 EBS 이미지에는 스왑 공간이 구성되어 있지 않습니다 ( 최소 11.04 ). “일반적인”인스턴스 유형 이미지에는 스왑 파티션이 있지만 테스트 한 이미지에는 896MB 만 있습니다.

일부 프로세스가 중단되고 스왑 공간이 없으면 OOM 킬러가 시작되기 전에 서버가 크롤링 정지 상태가 될 수 있지만 스왑을 사용하면 느려집니다. 따라서 충분한 RAM이 있더라도 항상 스왑 공간을 확보하고 싶습니다. 옵션은 다음과 같습니다.

  • (I는 “메모리”에 대한은 / dev / xvdm을 호출 등), EBS 볼륨 (당신의 RAM의 2 ~ 4 배 크기) 만들기 인스턴스에 첨부 sudo mkswap /dev/xvdm, fstab 파일에 추가 sudo swapon -a하고, 당신이 갈 수 있어요 . 이전 에이 작업을 수행했지만 정상적으로 작동하지만 네트워크를 통과하기 때문에 인스턴스 스토어보다 약간 느립니다.

  • 또는 스왑 파티션을 추가하기 위해 디스크를 다시 파티션 할 수 있지만 새 AMI를 만들어야 할 수도 있습니다. 루트 파일 시스템을 마운트 해제 할 수없고 디스크 장치 (/ dev / xvda)에 액세스 할 수없고 파티션 (xvda1)에만 액세스 할 수 없기 때문에 실행중인 인스턴스에서이 작업을 수행 할 수 없었습니다.

  • 또는 스왑 파일을 만들 수 있습니다. 이것이 현재 선호되는 솔루션입니다.

    sudo dd if=/dev/zero of=/var/swapfile bs=1M count=2048 &&
    sudo chmod 600 /var/swapfile &&
    sudo mkswap /var/swapfile &&
    echo /var/swapfile none swap defaults 0 0 | sudo tee -a /etc/fstab &&
    sudo swapon -a
    

    끝난. 🙂 많은 사람들이 파티션 대신 파일을 사용하는 것에 대해 불안감을 느끼지만 비상 스왑 공간으로 충분하게 작동합니다.


답변

스왑 IMHO에 가장 적합한 위치는 인스턴스 저장소입니다. 왜? AWS는 인스턴스 스토어에서 I / O에 대한 요금을 청구하지 않습니다. 게다가 인스턴스 스토어는 많은 경우 EBS보다 성능이 우수합니다. 인스턴스를 중지 한 경우 스왑 파일을 다시 생성하는 스크립트가 있는지 확인하십시오. 재부팅은 괜찮습니다. 왜 기본적으로없는 이유는 무엇입니까?

인스턴스 스토어를 찾으십시오.

root@domU-**-**-**-**-**-**:/var/log# fdisk -l

[...]

Disk /dev/xvda2: 160.1 GB, 160104972288 bytes
255 heads, 63 sectors/track, 19464 cylinders, total 312705024 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/xvda2 doesn't contain a valid partition table

Hurray, 160.1GB 무료! EBS 기반 스왑이 실수로 밀려날 때 스왑을 넣고 서버 당 100 $ 초과를 잊어 버리십시오. 유감스럽게도 여기에서 이야기하는 경험.

분명히 어떤 경우에는 인스턴스 저장소가 표시되지 않습니다.

인스턴스 유형에 따라 먼저 block-device-mapping 옵션을 사용하여 인스턴스 스토어 볼륨을 인스턴스에 연결해야합니다. 이 작업을 수행하지 않으면 / dev에 디바이스가 표시되지 않을 수도 있습니다 ( Amazon EC2에서 “인스턴스 스토어 볼륨”스토리지를 사용하는 방법에 따라 ? )


답변

참고 : Amazon은 가격 정책 을 변경했으며 2016 년 중반부터 I / O 요청에 대해 요금을 부과하지 않습니다. 역사적으로 대답은 여기에 있지만 EC2 EBS 지원 인스턴스에서 스왑을 사용하거나 사용하지 않으면 비용에 영향을주지 않습니다.


이것은 의도적으로 설계된 동작입니다. 예상치 못한 비용을 피하기 위해 EC2 EBS 지원 인스턴스에서 스왑이 기본적으로 해제되어 있습니다.

불량한 메모리 부족 앱 (예 : 작은 또는 작은 인스턴스)이있는 경우 EBS 볼륨에서 상당히 많은 양의 I / O 요청을 생성 할 수 있습니다. 아마존은 1 백만 건의 I / O 요청 당 0.10 달러를 청구합니다 ( http://aws.amazon.com/pricing/ebs/ 참조 ) .

정상적인 상황에서는 걱정하지 않아도됩니다. 일반적으로 I / O 요청 비용은 소규모 인스턴스에서도 몇 달러에 불과합니다. 따라서 적절한 크기의 인스턴스가 있고 해당 스왑이 자주 사용되지 않는 경우 계속 진행하여 활성화하십시오. 그러나 작은 인스턴스에주의하십시오.

스왑을 활성화하면 사용 보고서를 주시 할 수 있습니다. 선택적으로 CloudWatch 제어판 으로 이동 하여 총 청구 금액에 대한 새 경보를 생성하여 청구 알림을 설정할 수도 있습니다 . 이 방법으로 즉시 알림을 받으면 인스턴스에서 이상한 일이 발생합니다.


답변

/etc/fstab파일을 확인하십시오 . 사용중인 이미지에서 스왑없이 설정되었을 수 있습니다. 어떤 사람들은 총 메모리보다 더 많이 사용하지 않기를 기대하기 때문에 서버에 대한 스왑없이 실행한다고 생각합니다. 스왑은 모든 것을 매우 느리게 만듭니다.

그러나 나는 항상 메모리에 일부 프로세스 벌룬에 대해 편집증이 있으므로 스왑 드라이브를 설정하고 실행중인 ec2 인스턴스에서 이미지를 다시 만드는 것이 현명하다고 생각합니다.


답변

실행에 대한 간단한 해결책 swapEC2이미지가 실행하는 것입니다 swap압축 lz4ramzram-init.

  • 서비스 스크립트는 systemd& 에 사용할 수 있습니다 openrc.

이 솔루션은 다음 을 제거 하지 않습니다 .ramhost

여기에 이미지 설명을 입력하십시오


답변