AWS EC2 Swap memory ์„ค์ •

์ฒญํฌ๋„๋ด‰๋ด‰์ดยท2023๋…„ 10์›” 12์ผ
0

AWS

๋ชฉ๋ก ๋ณด๊ธฐ
10/14
post-thumbnail

๐Ÿšฉ ๊ฐœ์š”

AWS EC2 ์„œ๋ฒ„์— docker๋ฅผ ํ†ตํ•ด jenkins ์„ค์น˜๊นŒ์ง€ ์™„๋ฃŒํ•˜์˜€๊ณ  gitHub webhook์„ ์ด์šฉํ•ด push๋ฅผ ๊ฐ์ง€ํ•˜์—ฌ ๋นŒ๋“œ๊นŒ์ง€ ๊ตฌํ˜„ํ•ด๋†จ๋‹ค.

ํ•˜์ง€๋งŒ AWS EC2 free tier์˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ 1GB์ด๊ธฐ ๋•Œ๋ฌธ์— ๋นŒ๋“œ๋ฅผ ํ•˜๋‹ค๊ฐ€ EC2 ์„œ๋ฒ„๊ฐ€ ์ฃฝ์–ด๋ฒ„๋ฆฌ๋Š” ํ˜„์ƒ์ด ์ƒ๊ฒผ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ Swap memory๋ฅผ ์ด์šฉํ•ด ํ•ด๊ฒฐํ•˜์˜€๋‹ค.


๐Ÿ‘‰ Swap memory๋ž€?

Swap ๋ฉ”๋ชจ๋ฆฌ๋Š” ์šด์˜ ์ฒด์ œ์—์„œ ๋ถ€์กฑํ•œ ๋ฌผ๋ฆฌ์ ์ธ RAM์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ์ด๋‹ค. ์‹œ์Šคํ…œ์˜ RAM์ด ๋ชจ๋‘ ์‚ฌ์šฉ๋˜๋ฉด, ์šด์˜ ์ฒด์ œ๋Š” ์ผ๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋“œ ๋””์Šคํฌ์— ์žˆ๋Š” Swap ์˜์—ญ์œผ๋กœ ์ด๋™์‹œํ‚จ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ถ”๊ฐ€์ ์ธ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋‚˜ ํ”„๋กœ๊ทธ๋žจ์„ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. Swap ์˜์—ญ์€ ํ•˜๋“œ ๋””์Šคํฌ์˜ ์ผ๋ถ€ ๊ณต๊ฐ„์œผ๋กœ ํ• ๋‹น๋˜๋ฉฐ, ์ฃผ๋กœ ์ž„์‹œ๋กœ ์‚ฌ์šฉ๋˜๊ฑฐ๋‚˜ ์ตœ๊ทผ์— ์ ‘๊ทผํ•˜์ง€ ์•Š์€ ํŽ˜์ด์ง€๋ฅผ ๋ณด๊ด€๋œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Swap ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ง€๋‚˜์น˜๊ฒŒ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋ฉด ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์‹ค์ œ RAM์„ ์ตœ๋Œ€ํ•œ ํ™•๋ณดํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

๋”ฐ๋ผ์„œ Swap Memory ์„ค์ •์„ ํ†ตํ•ด RAM์ด ๋ถ€์กฑํ•œ ํ˜„์ƒ์„ ํ•ด๊ฒฐํ•  ๊ฒƒ์ด๋‹ค.


๐Ÿšฉ ์„ค์ • ๋ฐฉ๋ฒ•


๐Ÿ‘‰ ๋ฉ”๋ชจ๋ฆฌ ํ™•์ธ

AWS EC2 free tier๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ 8GB์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ œ๊ณตํ•œ๋‹ค. (์ตœ๋Œ€ 30GB๊นŒ์ง€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.)

ํ•„์ž๋Š” 25GB์˜ ๋ฉ”๋ชจ๋ฆฌ๋กœ ์„ค์ •ํ•ด๋†“๊ณ  Swap memory ์„ค์ •์„ ํ•˜์˜€๋‹ค.

df -h #Linux ๋ฐ Unix ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋””์Šคํฌ ์—ฌ์œ  ๊ณต๊ฐ„์„ ๋ณด๊ณ ํ•˜๋Š” ๋ช…๋ น์–ด

25GB ์ •๋„๋กœ ๋˜์–ด์žˆ๋Š”๊ฑธ ํ™•์ธํ•œ๋‹ค.


๐Ÿ‘‰ Swap ํŒŒ์ผ ์ƒ์„ฑ

sudo dd if=/dev/zero of=/swapfile bs=128M count=16
  • sudo: ์Šˆํผ์œ ์ €(root) ๊ถŒํ•œ์œผ๋กœ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์‹œ์Šคํ…œ ๊ด€๋ฆฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๊ถŒํ•œ์„ ์–ป๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค.
  • dd: ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•˜๊ฑฐ๋‚˜ ๋ณ€ํ™˜ํ•˜๋Š” ์œ ํ‹ธ๋ฆฌํ‹ฐ์ด๋‹ค.
  • if=/dev/zero: ์ž…๋ ฅ ํŒŒ์ผ(input file)๋กœ /dev/zero๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. /dev/zero๋Š” null ๋ฌธ์ž(0x00)๋กœ ๊ตฌ์„ฑ๋œ ๋ฌดํ•œ๋Œ€์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํŠน์ˆ˜ ์žฅ์น˜์ด๋‹ค.
  • of=/swapfile: ์ถœ๋ ฅ ํŒŒ์ผ(output file)๋กœ /swapfile์„ ์‚ฌ์šฉํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ /swapfile์€ ์ƒ์„ฑ๋  Swap ํŒŒ์ผ์˜ ๊ฒฝ๋กœ์™€ ์ด๋ฆ„์ด๋‹ค.
  • bs=128M: ํ•œ ๋ฒˆ์— ์ฝ๊ฑฐ๋‚˜ ์“ธ ๋ฐ์ดํ„ฐ ๋ธ”๋ก ํฌ๊ธฐ(block size)๋ฅผ 128MB๋กœ ์„ค์ •ํ•œ๋‹ค. ์ด ๊ฐ’์€ ํ•„์š”์— ๋”ฐ๋ผ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • count=16: ์ž…๋ ฅ ํŒŒ์ผ์—์„œ ์ฝ์„ ๋ฐ์ดํ„ฐ ๋ธ”๋ก(block)์˜ ๊ฐœ์ˆ˜๋ฅผ 16๊ฐœ๋กœ ์„ค์ •ํ•œ๋‹ค. ์ฆ‰, ์ด 16 * 128MB = 2GB์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.

์ด ๋ช…๋ น์–ด๋Š” /dev/zero์—์„œ ๊ฐ€์ ธ์˜จ null ๋ฌธ์ž์—ด ๋ฐ์ดํ„ฐ๋ฅผ /swapfile์— ์ง€์ •๋œ ๊ฒฝ๋กœ์™€ ์ด๋ฆ„์œผ๋กœ ์ถœ๋ ฅํ•˜์—ฌ Swap ํŒŒ์ผ์„ ์ƒ์„ฑํ•œ๋‹ค. Swap ํŒŒ์ผ์€ ์ถ”๊ฐ€์ ์ธ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์œผ๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ, ์ฃผ๋กœ ์‹œ์Šคํ…œ์˜ RAM์ด ๋ถ€์กฑํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.

Swap ํŒŒ์ผ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ƒ์„ฑ๋˜๋ฉด, ํ•ด๋‹น ํŒŒ์ผ์€ Swap ์˜์—ญ์œผ๋กœ ์‚ฌ์šฉ๋˜๋„๋ก ์„ค์ •๋˜์–ด์•ผ ํ•œ๋‹ค. ์ด๋Š” ๋ณดํ†ต swapon ๋ช…๋ น์–ด๋‚˜ /etc/fstab ์„ค์ •์„ ํ†ตํ•ด ์ˆ˜๋™์œผ๋กœ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

sudo chmod 600 /swapfile # Swap ํŒŒ์ผ ์ฝ๊ธฐ, ์“ฐ๊ธฐ ๊ถŒํ•œ ๋ถ€์—ฌ
sudo mkswap /swapfile # Swap ํŒŒ์ผ์„ ์ดˆ๊ธฐํ™”
sudo swapon /swapfile # ํ•ด๋‹น Swap ์˜์—ญ์„ ํ™œ์„ฑํ™”
sudo swapon -s # ์ •์ƒ์ ์œผ๋กœ ์„ค์ • ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ

2GB๊ฐ€ ํ• ๋‹น๋œ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ์Šค์™‘ ํŒŒ์ผ์„ EC2 ์ธ์Šคํ„ด์Šค ๋ถ€ํŒ…์‹œ ์ž๋™์œผ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค.

sudo vi /etc/fstab

์•„๋ž˜์˜ ์ฝ”๋“œ๋ฅผ ์œ„์™€ ๊ฐ™์ด ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.

/swapfile swap swap defaults 0 0 # `/etc/fstab` ํŒŒ์ผ์— Swap ํŒŒ์ผ์„ ์ž๋™์œผ๋กœ ๋งˆ์šดํŠธํ•˜๊ธฐ ์œ„ํ•œ ์„ค์ •

์ด๋ ‡๊ฒŒ ๋นŒ๋“œ๋ฅผ ์„ค์ •์„ ํ•˜๊ณ  jenkins๋กœ ๋นŒ๋“œ๋ฅผ ํ•˜๋ฉด ์•„์ฃผ ์ž˜ ์‹คํ–‰์ด ๋ฉ๋‹ˆ๋‹ค!




์ฐธ๊ณ  ๋งํฌ

AWS EC2๋ฅผ ์ด์šฉํ•ด ๋ฐฐํฌํ•ด๋ณด์ž (6) - Swap area ์„ค์ •ํ•˜๊ธฐ

profile
์„œ๋ฒ„ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž

0๊ฐœ์˜ ๋Œ“๊ธ€