[amazon-web-services] EC2 인스턴스에 스왑을 어떻게 추가합니까?

나는 현재 ec2 마이크로 인스턴스를 실행 중이며 인스턴스에 때때로 메모리가 부족하다는 것을 발견했습니다.

더 큰 인스턴스 크기를 사용하는 것 외에 다른 작업을 수행 할 수 있습니까?



답변

이 문제에 대한 수정 프로그램을 추가하는 것입니다 swap(즉, paging인스턴스에) 공간.

페이징은 하드 드라이브에 영역을 만들고 추가 메모리에 사용하여 작동합니다.이 메모리는 일반 메모리보다 훨씬 느리지 만 더 많은 메모리를 사용할 수 있습니다.

이 여분의 공간을 인스턴스에 추가하려면 다음을 입력하십시오.

sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
sudo /sbin/mkswap /var/swap.1
sudo chmod 600 /var/swap.1
sudo /sbin/swapon /var/swap.1

1024 이상이 필요하면 더 높은 것으로 변경하십시오.

재부팅 후 기본적으로 활성화하려면 다음 행을 / etc / fstab에 추가하십시오.

/var/swap.1   swap    swap    defaults        0   0


답변

스왑은 EBS 디바이스가 아닌 인스턴스 스토리지 (일시적) 디스크에서 이루어져야합니다. 교환하면 많은 IO가 발생하고 EBS 비용이 증가합니다. EBS는 또한 인스턴스 스토어보다 느리고 인스턴스 스토어에는 특정 유형의 EC2 인스턴스 가 무료로 제공됩니다 .

일반적으로 / mnt에 마운트되지만 실행되지 않으면

sudo mount /dev/xvda2 /mnt

이 장치에서 스왑 파일을 만들려면 4GB 스왑 파일에 대해 다음을 수행하십시오.

sudo dd if=/dev/zero of=/mnt/swapfile bs=1M count=4096

다른 사용자가 스왑 파일을 볼 수 없도록하십시오

sudo chown root:root /mnt/swapfile
sudo chmod 600 /mnt/swapfile

스왑으로 만들고 플래그 지정

sudo mkswap /mnt/swapfile
sudo swapon /mnt/swapfile

다음을 / etc / fstab에 추가 / 확인하십시오

/dev/xvda2      /mnt    auto    defaults,nobootwait,comment=cloudconfig 0   2
/mnt/swapfile swap swap defaults 0 0

마지막으로 스왑을 활성화

sudo swapon -a


답변

ajtrichards가 언급 한 단계를 적용한 후이 명령을 사용하여 Amazon 프리 티어 인스턴스가 스왑을 사용 중인지 확인할 수 있습니다.

cat /proc/meminfo

결과:

ubuntu@ip-172-31-24-245:/$ cat /proc/meminfo
MemTotal:         604340 kB
MemFree:            8524 kB
Buffers:            3380 kB
Cached:           398316 kB
SwapCached:            0 kB
Active:           165476 kB
Inactive:         384556 kB
Active(anon):     141344 kB
Inactive(anon):     7248 kB
Active(file):      24132 kB
Inactive(file):   377308 kB
Unevictable:           0 kB
Mlocked:               0 kB

스왑 총계 : 1048572 kB

스왑 무료 : 1048572 kB

Dirty:                 0 kB
Writeback:             0 kB
AnonPages:        148368 kB
Mapped:            14304 kB
Shmem:               256 kB
Slab:              26392 kB
SReclaimable:      18648 kB
SUnreclaim:         7744 kB
KernelStack:         736 kB
PageTables:         5060 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     1350740 kB
Committed_AS:     623908 kB
VmallocTotal:   34359738367 kB
VmallocUsed:        7420 kB
VmallocChunk:   34359728748 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:      637952 kB
DirectMap2M:           0 kB


답변

다음 명령을 사용하여 인스턴스에 1GB 스왑을 추가 할 수 있습니다.

sudo dd if=/dev/zero of=/swapfile bs=1M count=1024
sudo mkswap /swapfile
sudo swapon /swapfile

재부팅 후 기본적으로 활성화하려면 다음에 다음 줄을 추가하십시오 /etc/fstab.

/swapfile swap swap defaults 0 0


답변

당신은에있는 경우 t2인스턴스 ( t2.micro, t2.medium, t2.small), 당신에게 가능한 임시 또는 인스턴스 스토리지가 없습니다. 따라서 EBS유스 케이스에 따라 좋은 아이디어가 아닐 수도있는 스왑을 작성해야합니다 . 그렇지 않으면 @David의 답변을 따르고 임시 스토리지에서 스왑을 생성하여 EBS 비용 지불을 피하십시오.

추가 정보 : http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html 각 인스턴스 유형에 대해 얼마나 많은 임시 스토리지를 얻는 지 보여주는 표가 있습니다.


답변

다음 단계를 사용하여 스왑 공간을 만들 수 있습니다. /home/

  1. dd if=/dev/zero of=/home/swapfile1 bs=1024 count=8388608
    여기서 카운트는 스왑 공간의 킬로바이트 수입니다.

  2. mkswap /home/swapfile1

  3. vi /etc/fstab
    입장하다 :
    /home/swapfile1 swap swap defaults 0 0

  4. 운영:
    swapon -a


답변

모든 서버에 스왑 공간을 추가 할 수 있습니다

dd 명령을 사용하여 파일 작성

 #dd if=/dev/zero of=/swapfile bs=1M count=2048
                    or
 #dd if=/dev/zero of=/swapfile bs=1024M count=2

bs는 블록 크기 이며 countMB 또는 GB 단위크기를 나타냅니다.

우리는 그 반대로도 사용할 수 있습니다

작성 후 파일의 권한을 변경하십시오.

 #chmod 600 /swapfile

그런 다음 파일을 바꿉니다.

 #mkswap /swapfile

그런 다음 swapon 명령으로 swap 파일을 활성화하십시오.

 #swapon  /swapfile

스왑이 활성화되어 있는지 여부를 free 명령으로 확인하십시오.

 #free -h
 #swapon -s