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)๋ ํ ์ผ ๋๋ ๋๋ ํ ๋ฆฌ๊ฐ ์ค์ ๋ก ์ฐจ์งํ๋ ๋์คํฌ ์ฉ๋์ ํ์ธํฉ๋๋ค.
์ฃผ์ ํ๋๊ทธโ
| ํ๋๊ทธ | ์๋ฏธ |
|---|---|
-h | Human-readable (K, M, G ๋จ์) |
-s | Summary โ ํ์ ํญ๋ชฉ ์์ด ์ ์ฒด ํฉ๊ณ๋ง ์ถ๋ ฅ |
-sh | ์ ๋ ์ต์ ์กฐํฉ (๊ฐ์ฅ ์์ฃผ ์ฌ์ฉ) |
-c | ๋ง์ง๋ง ์ค์ grand total ์ถ๊ฐ |
--max-depth=N | N ๋จ๊ณ ํ์ ๋๋ ํ ๋ฆฌ๊น์ง๋ง ํ์ |
์ฌ์ฉ ์์โ
ํน์ ๋๋ ํ ๋ฆฌ ์ ์ฒด ์ฉ๋:
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 dudf | du | |
|---|---|---|
| ๋์ | ํ์ผ์์คํ ์ ์ฒด | ํน์ ํ์ผ/๋๋ ํ ๋ฆฌ |
| ์ฉ๋ | ๋จ์ ๊ณต๊ฐ ํ์ธ | ์ด๋์ ์ฉ๋ ์ฐจ์งํ๋์ง ํ์ธ |
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๋ถ์ ํ๊ท ์์คํ ๋ถํ.
1.0= CPU ์ฝ์ด 1๊ฐ๊ฐ 100% ํ์ฉ๋ ์ํ. ์ฆ, ์ ์ ๊ธฐ์ค์ = CPU ์ฝ์ด ์.
CPU ์ฝ์ด ์ ์ ์ ๋ฒ์ ์ฃผ์ ์ํ 1์ฝ์ด < 1.0 1.0 ~ 1.5 > 1.5 6์ฝ์ด < 6.0 6.0 ~ 9.0 > 9.0 12์ฝ์ด < 12.0 12.0 ~ 18.0 > 18.0
$ 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.50 | 15๋ถ ์ ์๋ ๊ณผ๋ถํ โ ์ผ๋ถ ํ๋ก์ธ์ค๊ฐ 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)๋ฅผ ๊ฒฐํฉํ์ฌ ์๋ฒ ๋ฆฌ์์ค ๋ฌด๊ฒฐ์ฑ๊ณผ ํ๋ก์ธ์ค ๊ฐ์ฉ์ฑ์ ์ฌ์ ์ ๊ฒ์ฆํ ์ ์์ต๋๋ค.