Amazon Aurora PostgreSQL ์ฒ˜๋Ÿผ ๊ด€๋ฆฌํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜์ง€ ์•Š๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๊ฐ™์ด ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ์„œ๋ฒ„๋ฅผ EC2 ์ธ์Šคํ„ด์Šค์—์„œ ์ง์ ‘ ์šด์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋ณผ๋ฅจ์˜ ์‚ฌ์šฉ๋Ÿ‰์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ์ž„๊ณ„์น˜๋ฅผ ๋„˜์–ด์„œ๋Š” ๊ฒฝ์šฐ ๋””์Šคํฌ ๋ณผ๋ฅจ์˜ ํฌ๊ธฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ํ™•์žฅํ•˜์—ฌ์•ผ ํ•œ๋‹ค.

์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด KDB+ ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ EC2 ์ธ์Šคํ„ด์Šค์— ์ง์ ‘ ์„ค์น˜ํ•˜์—ฌ ์šด์šฉํ•˜๊ณ  ์žˆ์–ด ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ทœ๋ชจ์— ๋”ฐ๋ผ ๋ณผ๋ฅจ์— ๋Œ€ํ•œ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๊ณ  ๋ณผ๋ฅจ ํฌ๊ธฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•œ๋‹ค. ์ตœ๊ทผ์—๋Š” Amazon FinSpace๋ฅผ ํ†ตํ•ด ๊ด€๋ฆฌํ˜• KDB Insight๋ฅผ ์ง€์›ํ•˜๊ธฐ๋Š” ํ•ฉ๋‹ˆ๋‹ค๋งŒ ๋ผ์ด์„ผ์Šค์™€ ์ธํ”„๋ผ ๋น„์šฉ ๋ฌธ์ œ๋กœ ๊ด€๋ฆฌํ˜• ์„œ๋น„์Šค๋กœ ์ „ํ™˜ํ•˜์—ฌ ์‚ฌ์šฉ์ค‘์ด์ง€๋Š” ์•Š๋Š”๋‹ค.

์•„๋ฌดํŠผ, Amazon EBS์˜ ํƒ„๋ ฅ์  ๋ณผ๋ฅจ์€ ์„œ๋ฒ„์— ์—ฐ๊ฒฐ๋œ ๋ณผ๋ฅจ์„ ํ•ด์ œํ•˜๊ฑฐ๋‚˜ EC2 ์„œ๋ฒ„๋ฅผ ์žฌ์‹œ์ž‘ํ•˜์ง€ ์•Š๊ณ ๋„ ๋ณ€๊ฒฝ๋œ ๋ณผ๋ฅจ์„ ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ œ๊ณตํ•ด์ฃผ์ง€๋งŒ AWS CLI ๋˜๋Š” ์›น ์ฝ˜์†”์—์„œ ๋ณผ๋ฅจ์˜ ํฌ๊ธฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๋”๋ผ๋„ ๋ฆฌ๋ˆ…์Šค ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉ์ค‘์ธ ๋ณผ๋ฅจ์„ ์ž๋™์œผ๋กœ ํ™•์žฅํ•ด์ฃผ์ง€๋Š” ์•Š๋Š”๋‹ค.

XFS ํŒŒ์ผ ์‹œ์Šคํ…œ ํ™•์žฅ

๋ณผ๋ฅจ์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ์— ๋”ฐ๋ผ xfs_growsfs ๋˜๋Š” resize2fs ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ณผ๋ฅจ์˜ ํฌ๊ธฐ๋งŒํผ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. KDB+ ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ ๋ณผ๋ฅจ์„ /data ๊ฒฝ๋กœ๋กœ ๋งˆ์šดํŠธ๋˜์–ด์žˆ์–ด ์•„๋ž˜์™€ ๊ฐ™์ด ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

Terminal
sudo df -hT /data Filesystem Type Size Used Avail Use% Mounted on /dev/nvme2n1 xfs 500G 349G 152G 70% /data sudo xfs_growfs -d /data

EBS ๋ณผ๋ฅจ ์ˆ˜์ • ์‹œ ์ฃผ์˜์‚ฌํ•ญ

  • ๋ณผ๋ฅจ ํฌ๊ธฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ ๋‚˜์„œ ์ตœ์†Œํ•œ 6์‹œ๊ฐ„ ์ด๋‚ด์— ์žฌ์ˆ˜์ •์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๋ณผ๋ฅจ ์ˆ˜์ • ํ›„์—๋„ optimizing ์ƒํƒœ์™€ ๊ฐ™์€ ๋ณผ๋ฅจ ์ˆ˜์ • ์ƒํ™ฉ์„ ๋ชจ๋‹ˆํ„ฐ๋ง ํ•ด์•ผํ•œ๋‹ค.
  • ๋ณผ๋ฅจ์„ ์ˆ˜์ •ํ•˜๊ธฐ ์ „์— ์Šค๋ƒ…์ƒท์„ ์ƒ์„ฑํ•˜์—ฌ ์˜ˆ์ƒํ•˜์ง€ ๋ชปํ•œ ์ƒํƒœ์— ๋Œ€๋น„ํ•˜์ž.

๊ทธ๋™์•ˆ ๋ณผ๋ฅจ ํฌ๊ธฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ํ™•์žฅํ•˜๋Š” ์ž‘์—…์ด ์ž์ฃผ ์ผ์–ด๋‚˜์ง€ ์•Š์•˜์œผ๋‚˜ ์‹œ๊ฐ„์ด ๋œ๋‹ค๋ฉด AWS CLI ๋˜๋Š” Lambda ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ณผ๋ฅจ ์ž„๊ณ„์น˜์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ ๋ณผ๋ฅจ์˜ ํฌ๊ธฐ๊ฐ€ ์กฐ์ •๋˜๋Š” ๋ฐฉ๋ฒ•์„ ์ ์šฉํ•ด๋ด๋„ ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค. GPT์— ๋ฌผ์–ด๋ณด๋‹ˆ ๋Œ€์ถฉ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฐฐ์‹œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‚˜๋ณด๋‹ค.

#!/bin/bash

INSTANCE_ID=$(cat /var/lib/cloud/data/instance-id)
VOLUME_ID="vol-xxxxxxxxxxxxx"
VOLUME_PATH="/data"
USAGE=$(df -h $VOLUME_PATH | grep / | awk '{ print $5 }' | sed 's/%//g')

THRESHOLD=80 # %
EXPAND_SIZE=100 # GB

if [ "$USAGE" -gt "$THRESHOLD" ]; then
  echo "[EBS] USAGE: $USAGE"

  CURRENT_SIZE=$(aws ec2 describe-volumes --volume-ids $VOLUME_ID --query "Volumes[0].Size")
  NEW_SIZE=$(($CURRENT_SIZE + $EXPAND_SIZE))
  echo "[EBS] CURRENT: $CURRENT_SIZE, NEW: $NEW_SIZE"

  aws ec2 modify-volume --volume-id $VOLUME_ID --size $NEW_SIZE
  sudo xfs_growfs -d $VOLUME_PATH
  echo "[EBS] completed"
fi