Aller au contenu principal

54. Verify Integrity and Availability of Resources and Processes


df๋กœ ๋””์Šคํฌ ๊ณต๊ฐ„ ํ™•์ธโ€‹

df(disk free) ์œ ํ‹ธ๋ฆฌํ‹ฐ๋Š” ๋””์Šคํฌ ์‚ฌ์šฉ๋Ÿ‰์„ ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ 1KB ๋ธ”๋ก์œผ๋กœ ํ‘œ์‹œ๋˜๋ฏ€๋กœ, -h ์˜ต์…˜์œผ๋กœ ์‚ฌ๋žŒ์ด ์ฝ๊ธฐ ์‰ฌ์šด ํ˜•์‹(MB, GB, TB)์œผ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

$ df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 392M 1.1M 391M 1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv 9.8G 3.9G 5.4G 43% /
tmpfs 2.0G 0.0G 2.0G 0% /dev/shm
/dev/vda2 1.8G 251M 1.4G 16% /boot
tmpfs ๋ž€?

tmpfs๋Š” ๋””์Šคํฌ๊ฐ€ ์•„๋‹Œ RAM์— ์กด์žฌํ•˜๋Š” ๊ฐ€์ƒ ํŒŒ์ผ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ์ด ์žฌ๋ถ€ํŒ…๋˜๋ฉด ๋‚ด์šฉ์ด ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

๋งˆ์šดํŠธ ํฌ์ธํŠธ์šฉ๋„
/run๋ถ€ํŒ… ์‹œ ๋Ÿฐํƒ€์ž„ ๋ฐ์ดํ„ฐ (PID ํŒŒ์ผ ๋“ฑ)
/dev/shmํ”„๋กœ์„ธ์Šค ๊ฐ„ ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ (shared memory)
/tmp์ž„์‹œ ํŒŒ์ผ

[!warning] ๋””์Šคํฌ ์šฉ๋Ÿ‰ ํ™•์ธ ์‹œ tmpfs ๋ฌด์‹œ df -h ์ถœ๋ ฅ์—์„œ tmpfs ํ•ญ๋ชฉ์€ ์‹ค์ œ ๋””์Šคํฌ ๊ณต๊ฐ„์ด ์•„๋‹™๋‹ˆ๋‹ค. ์‹ค์ œ ๋””์Šคํฌ ํŒŒ์ผ์‹œ์Šคํ…œ๋งŒ ๋ณด๋ ค๋ฉด -x ์˜ต์…˜์œผ๋กœ ์ œ์™ธํ•˜์„ธ์š”:

df -h -x tmpfs

du๋กœ ๋””๋ ‰ํ† ๋ฆฌ ์šฉ๋Ÿ‰ ํ™•์ธโ€‹

du(disk usage)๋Š” ํŒŒ์ผ ๋˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์‹ค์ œ๋กœ ์ฐจ์ง€ํ•˜๋Š” ๋””์Šคํฌ ์šฉ๋Ÿ‰์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ํ”Œ๋ž˜๊ทธโ€‹

ํ”Œ๋ž˜๊ทธ์˜๋ฏธ
-hHuman-readable (K, M, G ๋‹จ์œ„)
-sSummary โ€” ํ•˜์œ„ ํ•ญ๋ชฉ ์—†์ด ์ „์ฒด ํ•ฉ๊ณ„๋งŒ ์ถœ๋ ฅ
-sh์œ„ ๋‘ ์˜ต์…˜ ์กฐํ•ฉ (๊ฐ€์žฅ ์ž์ฃผ ์‚ฌ์šฉ)
-c๋งˆ์ง€๋ง‰ ์ค„์— grand total ์ถ”๊ฐ€
--max-depth=NN ๋‹จ๊ณ„ ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ๊นŒ์ง€๋งŒ ํ‘œ์‹œ

์‚ฌ์šฉ ์˜ˆ์‹œโ€‹

ํŠน์ • ๋””๋ ‰ํ† ๋ฆฌ ์ „์ฒด ์šฉ๋Ÿ‰:

du -sh /usr/
# 3.0G /usr/

ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์˜ ํ•˜์œ„ ํ•ญ๋ชฉ๋ณ„ ์šฉ๋Ÿ‰:

du -sh /*
# 0 /bin
# 63M /boot
# 3.0G /usr
# ...

๊นŠ์ด ์ œํ•œ:

du -h --max-depth=1 ~

์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ์ด ์šฉ๋Ÿ‰ ํ•ฉ๊ณ„:

# ์ด๋ฏธ์ง€
find ~ -type f \( -name "*.jpg" -o -name "*.png" -o -name "*.webp" \) -exec du -ch {} + | tail -1

# ์˜์ƒ
find ~ -type f \( -name "*.mp4" -o -name "*.mkv" -o -name "*.avi" \) -exec du -ch {} + | tail -1

# ์ฝ”๋“œ
find ~ -type f \( -name "*.py" -o -name "*.js" -o -name "*.sh" \) -exec du -ch {} + | tail -1

# ํ…์ŠคํŠธ
find ~ -type f -name "*.txt" -exec du -ch {} + | tail -1
df vs du
dfdu
๋Œ€์ƒํŒŒ์ผ์‹œ์Šคํ…œ ์ „์ฒดํŠน์ • ํŒŒ์ผ/๋””๋ ‰ํ† ๋ฆฌ
์šฉ๋„๋‚จ์€ ๊ณต๊ฐ„ ํ™•์ธ์–ด๋””์„œ ์šฉ๋Ÿ‰ ์ฐจ์ง€ํ•˜๋Š”์ง€ ํ™•์ธ

free๋กœ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ํ™•์ธโ€‹

free ๋ช…๋ น์–ด๋Š” RAM ์‚ฌ์šฉ๋Ÿ‰๊ณผ ๊ฐ€์šฉ๋Ÿ‰์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค:

$ free -h
total used free shared buff/cache available
Mem: 3.6Gi 1.0Gi 1.5Gi 15Mi 1.1Gi 2.4Gi
Swap: 2.0Gi 0B 2.0Gi
free vs available โ€” ํ•ต์‹ฌ ์ฐจ์ด
์—ด์˜๋ฏธ
free์™„์ „ํžˆ ๋น„์–ด์žˆ๋Š” RAM. ์•„๋ฌด ํ”„๋กœ์„ธ์Šค๋„ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š์€ ์ˆœ์ˆ˜ ๋นˆ ๋ฉ”๋ชจ๋ฆฌ
available์ƒˆ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹ค์ œ๋กœ ํ• ๋‹น๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ (free + ํšŒ์ˆ˜ ๊ฐ€๋Šฅํ•œ buff/cache)

๋ฆฌ๋ˆ…์Šค๋Š” ๋‚จ์€ RAM์„ ๋‚ญ๋น„ํ•˜์ง€ ์•Š๊ณ  ๋””์Šคํฌ I/O ์บ์‹œ(buff/cache) ๋กœ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ์บ์‹œ๋Š” ์ƒˆ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์š”์ฒญํ•˜๋ฉด ์ฆ‰์‹œ ํ•ด์ œ๋˜๋ฏ€๋กœ, ์‚ฌ์‹ค์ƒ ๊ฐ€์šฉ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์œ„ ์˜ˆ์‹œ์—์„œ:

  • free = 1.5Gi โ†’ ์•„๋ฌด๊ฒƒ๋„ ์—†๋Š” ๋นˆ RAM

  • buff/cache = 1.1Gi โ†’ ์บ์‹œ ์šฉ๋„๋กœ ์“ฐ์ด์ง€๋งŒ ์–ธ์ œ๋“  ํšŒ์ˆ˜ ๊ฐ€๋Šฅ

  • available = 2.4Gi โ†’ ์‹ค์ œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ (โ‰ˆ free + ํšŒ์ˆ˜ ๊ฐ€๋Šฅ ์บ์‹œ)

[!warning] ์‹ค์ œ ๊ฐ€์šฉ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ™•์ธํ•  ๋• free๊ฐ€ ์•„๋‹Œ available ์„ ๋ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. free๋งŒ ๋ณด๋ฉด ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•ด ๋ณด์—ฌ๋„, ๋ฆฌ๋ˆ…์Šค๊ฐ€ ์บ์‹œ๋ฅผ ์ฆ‰์‹œ ํšŒ์ˆ˜ํ•  ์ˆ˜ ์žˆ์–ด ์‹ค์ œ๋กœ๋Š” ์ถฉ๋ถ„ํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.

uptime์œผ๋กœ CPU ๋ถ€ํ•˜ ๋ถ„์„โ€‹

$ uptime
17:24:55 up 32 min, 1 user, load average: 0.05, 0.05, 0.01

์„ธ ๊ฐœ์˜ ๋ถ€ํ•˜ ํ‰๊ท  ์ˆซ์ž: ์ตœ๊ทผ 1๋ถ„, 5๋ถ„, 15๋ถ„์˜ ํ‰๊ท  ์‹œ์Šคํ…œ ๋ถ€ํ•˜.

๋ถ€ํ•˜ ํ‰๊ท (load average) ํ•ด์„

1.0 = CPU ์ฝ”์–ด 1๊ฐœ๊ฐ€ 100% ํ™œ์šฉ๋œ ์ƒํƒœ. ์ฆ‰, ์ •์ƒ ๊ธฐ์ค€์„  = CPU ์ฝ”์–ด ์ˆ˜.

CPU ์ฝ”์–ด ์ˆ˜์ •์ƒ ๋ฒ”์œ„์ฃผ์˜์œ„ํ—˜
1์ฝ”์–ด< 1.01.0 ~ 1.5> 1.5
6์ฝ”์–ด< 6.06.0 ~ 9.0> 9.0
12์ฝ”์–ด< 12.012.0 ~ 18.0> 18.0
6์ฝ”์–ด ์‹œ์Šคํ…œ ์˜ˆ์‹œ
$ uptime
17:24:55 up 3 days, 2 users, load average: 2.10, 5.80, 8.50
๊ตฌ๊ฐ„๊ฐ’ํ•ด์„
1๋ถ„2.10ํ˜„์žฌ๋Š” ์—ฌ์œ  ์žˆ์Œ (6์ฝ”์–ด ์ค‘ ์•ฝ 2์ฝ”์–ด ์‚ฌ์šฉ)
5๋ถ„5.80์กฐ๊ธˆ ์ „๊นŒ์ง€ ๊ฑฐ์˜ ํ’€๋กœ๋“œ ์ƒํƒœ์˜€์Œ
15๋ถ„8.5015๋ถ„ ์ „์—๋Š” ๊ณผ๋ถ€ํ•˜ โ€” ์ผ๋ถ€ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ๊ธฐ๋‹ค๋ ธ์Œ

โ†’ 1๋ถ„ ๊ฐ’์ด ๋‚ฎ์•„์ง€๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๋ถ€ํ•˜๊ฐ€ ์™„ํ™”๋˜๋Š” ์ถ”์„ธ. ๋‹น์žฅ ์กฐ์น˜ ๋ถˆํ•„์š”.

์–ธ์ œ ๋น„์ •์ƒ์œผ๋กœ ๋ณผ๊นŒ?
  • 1๋ถ„ > ์ฝ”์–ด ์ˆ˜: ์ง€๊ธˆ ์ด ์ˆœ๊ฐ„ ๊ณผ๋ถ€ํ•˜
  • 15๋ถ„ > ์ฝ”์–ด ์ˆ˜: ์žฅ์‹œ๊ฐ„ ์ง€์†๋œ ๊ณผ๋ถ€ํ•˜ โ†’ ๋ฐ˜๋“œ์‹œ ์›์ธ ํŒŒ์•… ํ•„์š”
  • 1๋ถ„ >> 15๋ถ„: ๊ฐ‘์ž‘์Šค๋Ÿฌ์šด ์ŠคํŒŒ์ดํฌ โ†’ ํŠน์ • ํ”„๋กœ์„ธ์Šค๊ฐ€ ํญ์ฃผํ–ˆ์„ ๊ฐ€๋Šฅ์„ฑ

์ฝ”์–ด ์ˆ˜ ํ™•์ธ:

nproc
# ๋˜๋Š”
lscpu | grep "^CPU(s):"
๊ณผ๋ถ€ํ•˜ ์‹œ ๋Œ€์ฒ˜ ๋ฐฉ๋ฒ•

1. ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์žก์•„๋จน๋Š”์ง€ ํ™•์ธ

top        # ์‹ค์‹œ๊ฐ„ ํ™•์ธ, CPU% ๊ธฐ์ค€ ์ •๋ ฌ
htop # ๋” ๋ณด๊ธฐ ์ข‹์€ ๋ฒ„์ „

2. ํŠน์ • ํ”„๋กœ์„ธ์Šค ๊ฐ•์ œ ์ข…๋ฃŒ

kill <PID>         # ์ •์ƒ ์ข…๋ฃŒ ์š”์ฒญ
kill -9 <PID> # ๊ฐ•์ œ ์ข…๋ฃŒ

3. ํ”„๋กœ์„ธ์Šค ์šฐ์„ ์ˆœ์œ„ ๋‚ฎ์ถ”๊ธฐ (์ข…๋ฃŒ ๋Œ€์‹ )

renice +10 <PID>   # ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„๋กœ ์กฐ์ • (๊ฐ’์ด ๋†’์„์ˆ˜๋ก ์šฐ์„ ์ˆœ์œ„ ๋‚ฎ์Œ)

4. ํŠน์ • ์„œ๋น„์Šค๊ฐ€ ์›์ธ์ด๋ผ๋ฉด

systemctl status <service>
sudo systemctl restart <service>

ํŒŒ์ผ ์‹œ์Šคํ…œ ๋ฌด๊ฒฐ์„ฑ ํ™•์ธโ€‹

ํŒŒ์ผ ์‹œ์Šคํ…œ ์˜ค๋ฅ˜ ๊ฒ€์‚ฌ ์ „์— ์–ธ๋งˆ์šดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

XFS ํŒŒ์ผ ์‹œ์Šคํ…œ (Red Hat ๊ธฐ๋ณธ):

$ sudo xfs_repair -v /dev/vdb1

ext4 ํŒŒ์ผ ์‹œ์Šคํ…œ (Ubuntu ๊ธฐ๋ณธ):

$ sudo fsck.ext4 -v -f -p /dev/vdb2
ํ”Œ๋ž˜๊ทธ์˜๋ฏธ
-v์ƒ์„ธ ์ถœ๋ ฅ ์ฆ๊ฐ€
-f๊ฑด๊ฐ•ํ•œ ํŒŒ์ผ์‹œ์Šคํ…œ๋„ ๊ฐ•์ œ ๊ฒ€์‚ฌ
-p๊ฐ„๋‹จํ•œ ๋ฌธ์ œ ์ž๋™ ์ˆ˜์ •

์ฃผ์š” ํ”„๋กœ์„ธ์Šค ๋ฐ ์„œ๋น„์Šค ํ™•์ธโ€‹

systemd ์œ ๋‹› ์˜์กด์„ฑ์„ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ํŠน์ • ์„œ๋น„์Šค๊ฐ€ ์‹œ์ž‘๋˜๊ธฐ ์œ„ํ•ด ๋ฌด์—‡์ด ๋จผ์ € ์‹คํ–‰๋˜์–ด์•ผ ํ•˜๋Š”์ง€ ํ™•์ธํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

$ systemctl list-dependencies
default.target
โ— โ”œโ”€accounts-daemon.service
โ— โ”œโ”€cloud-init.target
โ— โ”‚ โ”œโ”€cloud-config.service
โ— โ”‚ โ””โ”€cloud-final.service
โ— โ”œโ”€ssh.service
โ— โ””โ”€multi-user.target
โ””โ”€...
์ถœ๋ ฅ ์•„์ด์ฝ˜ ์˜๋ฏธ
์•„์ด์ฝ˜์˜๋ฏธ
โ— (์ดˆ๋ก)์‹คํ–‰ ์ค‘
โ—‹ (ํฐ์ƒ‰)์ค‘์ง€๋จ
โœ— (๋นจ๊ฐ•)์‹คํŒจ

ํŠน์ • ์„œ๋น„์Šค์˜ ์˜์กด์„ฑ ํ™•์ธ:

$ systemctl list-dependencies ssh.service
ssh.service
โ— โ”œโ”€system.slice
โ— โ”œโ”€sysinit.target
โ— โ”‚ โ”œโ”€dev-hugepages.mount
โ— โ”‚ โ””โ”€...
โ— โ””โ”€network.target

์—ญ๋ฐฉํ–ฅ โ€” ์ด ์„œ๋น„์Šค์— ์˜์กดํ•˜๋Š” ๊ฒƒ๋“ค ํ™•์ธ (--reverse):

$ systemctl list-dependencies --reverse ssh.service
# ssh.service๋ฅผ ํ•„์š”๋กœ ํ•˜๋Š” ์œ ๋‹›๋“ค์ด ํ‘œ์‹œ๋จ
์–ธ์ œ ์“ฐ๋‚˜?
  • ์„œ๋น„์Šค๊ฐ€ ์‹œ์ž‘ ์•ˆ ๋  ๋•Œ โ†’ ์˜์กด ์„œ๋น„์Šค ์ค‘ ์‹คํŒจํ•œ ๊ฒƒ์ด ์žˆ๋Š”์ง€ ํ™•์ธ
  • ์‹œ์Šคํ…œ ๋ถ€ํŒ… ์ˆœ์„œ ํŒŒ์•…
  • ํŠน์ • ์„œ๋น„์Šค๋ฅผ ์ค‘์ง€ํ–ˆ์„ ๋•Œ ์˜ํ–ฅ๋ฐ›๋Š” ์„œ๋น„์Šค ์‚ฌ์ „ ํ™•์ธ (--reverse)

์„œ๋น„์Šค ์ƒํƒœ ํ™•์ธ:

$ systemctl status atd.service

์„œ๋น„์Šค ์‹œ์ž‘:

$ sudo systemctl start atd.service

์„œ๋น„์Šค ๋กœ๊ทธ ๊ฒ€ํ† :

$ journalctl -u atd.service

์š”์•ฝโ€‹

df, du, free, uptime, ํŒŒ์ผ ์‹œ์Šคํ…œ ์œ ํ‹ธ๋ฆฌํ‹ฐ(xfs_repair, fsck.ext4), ์„œ๋น„์Šค ๋ชจ๋‹ˆํ„ฐ๋ง ๋ช…๋ น์–ด(systemctl, journalctl)๋ฅผ ๊ฒฐํ•ฉํ•˜์—ฌ ์„œ๋ฒ„ ๋ฆฌ์†Œ์Šค ๋ฌด๊ฒฐ์„ฑ๊ณผ ํ”„๋กœ์„ธ์Šค ๊ฐ€์šฉ์„ฑ์„ ์‚ฌ์ „์— ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.