Programing

EC2 인스턴스에 스왑을 어떻게 추가합니까?

lottogame 2020. 3. 23. 08:04
반응형

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

swapspace를 시도하십시오 http://pqxx.org/development/swapspace/

대부분의 배포판에는 패키지가 있습니다.

EC2에서는 "swappath"를 / mnt 또는 high-iops 디스크로 변경할 수 있습니다.


David의 인스턴스 스토리지 답변을 사용하면 처음에 (m5d.2xlarge에서) 효과가 있었지만 EC2 인스턴스를 중지하고 다시 켠 후에 인스턴스에 다시 ssh를 넣을 수 없었습니다.

인스턴스 로그는 "비상 모드에 있습니다. 로그인 한 후"journalctl -xb "를 입력하여 시스템 로그를 보거나"systemctl reboot "를 재부팅하여"systemctl default "또는"exit "를 입력하여 기본 모드로 부팅하십시오. Enter를 누르십시오. 유지 보수 "

대신이 링크의 AWS 지침을 따르고 인스턴스를 껐다가 다시 켜는 등 모든 것이 완벽하게 작동했습니다.

https://aws.amazon.com/premiumsupport/knowledge-center/ec2-memory-swap-file/

sudo dd if=/dev/zero of=/swapfile bs=1G count=4

sudo chmod 600 /swapfile

sudo mkswap /swapfile

sudo swapon /swapfile

sudo swapon -s

sudo vi /etc/fstab
/swapfile swap swap defaults 0 0

다음 스크립트를 사용하여 Amazon Linux에서 스왑을 추가 할 수 있습니다.

https://github.com/chetankapoor/swap

wget을 사용하여 스크립트를 다운로드하십시오.

wget https://raw.githubusercontent.com/chetankapoor/swap/master/swap.sh -O swap.sh

그런 다음 다음 형식으로 스크립트를 실행하십시오.

sh swap.sh 2G

완전한 자습서를 보려면 다음을 방문하십시오.

https://installvirtual.com/shell-script-to-create-swap/

참고 URL : https://stackoverflow.com/questions/17173972/how-do-you-add-swap-to-an-ec2-instance

반응형