inode๋ ๋ฆฌ๋ ์ค OS์์ ๊ฐ๋ณ ํ์ผ์ ๊ด๋ จ๋ ์์ฑ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ฒด๋ก, ๋ชจ๋ ํ์ผ์ ํ๋์ inode๋ฅผ ๊ฐ๋ฆฌํค๋ฉฐ ํ์ผ ์์คํ ๋ณ ๋ด๋ถ ๊ตฌ์กฐ์ ์ ์ฅ๋๋ค. inode๋ ํ์ผ์ ์ด๋ฆ, ๋ชจ๋, ์์ ์ ์ ๋ณด, ํฌ๊ธฐ, ํ์์คํฌํ, ๋ฐ์ดํฐ๋ธ๋ก ๋ฑ์ ๋ฉํ ๋ฐ์ดํฐ๋ฅผ ๋ด๊ณ ์๋ค.
๋ชจ๋(mode)๋ inode๊ฐ ์ด๋ค ํ์ผ ์ ํ์ ํด๋นํ๋์ง ๋ํ๋ ์ ๋ณด์ ์ ๊ทผ ๊ถํ์ ๋ํ๋ด๋
์ ๋ณด๋ฅผ ์ ์ฅํ๋ค. ํ์ผ ๋๋ ๋๋ ํ ๋ฆฌ์ ๋ํ ์ฌ์ฉ์์ ๊ทธ๋ฃน ์๋ณ์๋ฅผ ์์ ์ ์ ๋ณด(owner
info)๋ก ์ ์ฅํ๋ค. ํ์ผ์ ํฌ๊ธฐ(size)๋ byte ๋จ์๋ก ํํ๋์ด ์ ์ฅ๋๋ค. ํ์์คํฌํ
(timestamps)๋ inode๊ฐ ๋ง๋ค์ด์ง ์๊ฐ๊ณผ ์ต์ข ์ ์ผ๋ก ์์ ๋ ์๊ฐ ๊ธฐ๋ก์ ๋ปํ๋ค. ๋ฐ์ดํฐ๋ธ๋ก(direct/indirect blcoks)์ inode๊ฐ ํํํ๊ณ ์๋ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ๋ธ๋ก์ ํฌ์ธํฐ๋ก ์ ์ฅํ๋ค. ์ค์ ํ์ผ์ ๋ด์ฉ์ inode๊ฐ ์๋ ๋์คํฌ์ ๋ค๋ฅธ ์์ญ์ ์ ์ฅ๋๋๋ฐ, ์ด ์์น ์ ๋ณด๊ฐ ๋ฐ์ดํฐ๋ธ๋ก์ ์ ์ฅ๋์ด ์๋ ๊ฒ์ด๋ค. inode๊ฐ ์ด ์์น ์ ๋ณด๋ฅผ ๊ฐ๊ณ ์์ด์ ์ด์ ์ฒด์ ๊ฐ ์ค์ ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์๊ฒ ํ๋ค.
‘$ ls -l’ ๋ช ๋ น์ด๋ก inode์ ์ ๋ณด๋ฅผ ํ์ธ ๊ฐ๋ฅํ๋ฉฐ, ‘$ stat FILE’ ๋ช ๋ น์ด๋ก ํน์ ํ์ผ์ ๋ํ inode ์์ฑ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์๋ค.
๐ฆ inode๋?
inode(index node)๋ ๋ฆฌ๋
์ค ํ์ผ ์์คํ
์์ ๊ฐ ํ์ผ์ ๋ฉํ๋ฐ์ดํฐ(metadata) ๋ฅผ ์ ์ฅํ๋
๋ฐ์ดํฐ ๊ตฌ์กฐ์ฒด(structure) ์ด๋ค.
์ฆ, ํ์ผ์ ์ค์ ๋ด์ฉ์ ์๋์ง๋ง,
๊ทธ ํ์ผ์ด ์ด๋ค ํ์ผ์ด๋ฉฐ ์ด๋์ ์ ์ฅ๋์ด ์๋์ง๋ฅผ ์ค๋ช
ํ๋ ‘์ ๋ถ์ฆ’ ์ญํ ์ ํ๋ค.
๐งฉ inode์ ๊ฐ๋
- ๋ชจ๋ ํ์ผ์ ๊ณ ์ ํ inode ๋ฒํธ(inode number) ๋ฅผ ๊ฐ์ง๋ค.
- inode๋ ํ์ผ์ ์ด๋ฆ์ ์ ์ธํ ๋๋ถ๋ถ์ ์์ฑ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ค.
- ๊ฐ ํ์ผ ์์คํ (ext4, xfs ๋ฑ)์ ์์ฒด์ ์ธ inode ๊ตฌ์กฐ์ฒด๋ฅผ ๋ด๋ถ์ ๋ณด์ ํ๋ค.
๐ง ์ฝ๊ฒ ๋งํด,
ํ์ผ์ ๋ด์ฉ์ ๋์คํฌ ์ด๋๊ฐ์ ์๊ณ ,
inode๋ ๊ทธ ์์น์ ์์ฑ์ ์ด์์ฒด์ ์ ์๋ ค์ฃผ๋ ์ง๋ ์ญํ ์ ํ๋ค.
๐งฑ inode์ ์ ์ฅ๋๋ ์ ๋ณด
| ๐ท๏ธ ํ์ผ ์ด๋ฆ(name) | โ inode ์์ฒด์๋ ํฌํจ๋์ง ์์! (์ด๋ฆ์ ๋๋ ํ ๋ฆฌ ์ํธ๋ฆฌ์์ ๊ด๋ฆฌ๋จ) |
| โ๏ธ ๋ชจ๋(mode) | ํ์ผ ์ ํ(์ผ๋ฐ ํ์ผ, ๋๋ ํ ๋ฆฌ ๋ฑ)๊ณผ ์ ๊ทผ ๊ถํ(rwx) ์ ๋ณด ์ ์ฅ |
| ๐ค ์์ ์ ์ ๋ณด(owner info) | ํ์ผ์ ์ฌ์ฉ์ ID(uid)์ ๊ทธ๋ฃน ID(gid)๋ฅผ ์ ์ฅ |
| ๐ ํ์ผ ํฌ๊ธฐ(size) | ํ์ผ์ ์ ์ฒด ํฌ๊ธฐ (๋จ์: byte) |
| โฐ ํ์์คํฌํ(timestamps) | ํ์ผ์ด ์์ฑ, ์์ , ์ ๊ทผ๋ ์๊ฐ(ctime, mtime, atime) |
| ๐พ ๋ฐ์ดํฐ ๋ธ๋ก(data blocks) | ์ค์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ๋ธ๋ก์ ์ฃผ์(ํฌ์ธํฐ)๋ฅผ ์ ์ฅ |
๐ก ๋ฐ์ดํฐ๋ธ๋ก(Data Block)๊ณผ์ ๊ด๊ณ
๐ inode๋ ํ์ผ ๋ฐ์ดํฐ์ ์ค์ ๋ด์ฉ์ ์ง์ ๋ด์ง ์๋๋ค.
๋์ , ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ๋์คํฌ ๋ธ๋ก์ ์์น๋ฅผ ํฌ์ธํฐ(pointer) ๋ก ๊ด๋ฆฌํ๋ค.
- Direct block : ์ค์ ๋ฐ์ดํฐ ๋ธ๋ก์ ์ง์ ๊ฐ๋ฆฌํด
- Indirect block : ํฌ์ธํฐ ๋ชฉ๋ก์ ๊ฐ๋ฆฌ์ผ, ๋์ฉ๋ ํ์ผ๋ ์ฐ๊ฒฐ ๊ฐ๋ฅ
๐ inode๊ฐ ์ด ๋ธ๋ก ์ฃผ์๋ฅผ ์๊ณ ์๊ธฐ ๋๋ฌธ์
์ด์์ฒด์ ๊ฐ ํ์ผ์ ์ด๋ฉด inode → ๋ฐ์ดํฐ๋ธ๋ก → ์ค์ ํ์ผ ๋ด์ฉ ์์๋ก ์ ๊ทผํ ์ ์๋ค.
๐ inode ์ ๋ณด ํ์ธ ๋ช ๋ น์ด
| $ ls -l | ํ์ผ์ inode ์์ฑ ์ผ๋ถ(๊ถํ, ์์ ์, ํฌ๊ธฐ, ์์ ์ผ ๋ฑ) ํ์ธ |
| $ stat ํ์ผ๋ช | ํน์ ํ์ผ์ inode ๋ฒํธ ๋ฐ ๋ชจ๋ ์์ฑ ์ ๋ณด ์์ธํ ์ถ๋ ฅ |
์์ ๐
$ stat test.txt
File: test.txt
Size: 120 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 126490 Links: 1
Access: (0644/-rw-r--r--) Uid: (1000/user) Gid: (1000/user)
Access: 2025-10-21 12:30:45.000000000 +0900
Modify: 2025-10-21 12:29:10.000000000 +0900
Change: 2025-10-21 12:29:10.000000000 +0900
๐ง ์ ๋ฆฌ ์์ฝ
| ์ ์ | ํ์ผ์ ์์ฑ ๋ฐ ๋ฐ์ดํฐ ์์น ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ๊ตฌ์กฐ์ฒด |
| ์์น | ํ์ผ ์์คํ ๋ด๋ถ์ ๊ณ ์ ๋ ์์ญ์ ์ ์ฅ |
| ํฌํจ ์ ๋ณด | ๊ถํ, ์์ ์, ํฌ๊ธฐ, ์๊ฐ, ๋ฐ์ดํฐ๋ธ๋ก ํฌ์ธํฐ ๋ฑ |
| ๋ฏธํฌํจ ์ ๋ณด | ํ์ผ ์ด๋ฆ |
| ๊ด๋ จ ๋ช ๋ น์ด | ls -l, stat ํ์ผ๋ช |
๐ฌ ์ถ๊ฐ ์ค๋ช
- ๋๋ ํ ๋ฆฌ๋ ์ค์ ๋ก “ํ์ผ๋ช
→ inode ๋ฒํธ”์ ๋งคํ ํ
์ด๋ธ์ ์ ์ฅํ๋ ํน์ ํ์ผ์ด์ผ.
๊ทธ๋์ ๋๋ ํ ๋ฆฌ๋ฅผ ํตํด inode ๋ฒํธ๋ฅผ ์ฐพ๊ณ , inode๋ฅผ ํตํด ์ง์ง ๋ฐ์ดํฐ๋ฅผ ์ฐพ๋ ๊ตฌ์กฐ์ง. - ํ์ผ ์ด๋ฆ์ ๋ฐ๊ฟ๋ inode๋ ๊ทธ๋๋ก์ด๊ธฐ ๋๋ฌธ์,
์ด๋ฆ ๋ณ๊ฒฝ(rename) ์ inode์ ์์ฑ ๋ณ๊ฒฝ์ด ์๋๋ผ ๋๋ ํ ๋ฆฌ ํ ์ด๋ธ ๋ณ๊ฒฝ์ด์ผ!
'6. CS ๊ธฐ์ด ๐ > Linux & Unix ๐ง' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Linux/Unix][5-1] stat ๊ตฌ์กฐ์ฒด์ ๋ฉค๋ฒ // st_mode (0) | 2025.10.21 |
|---|---|
| [Linux/Unix][4-3] Inode ์ ๋ณด ์ถ๋ ฅ (0) | 2025.10.21 |
| [Linux/Unix][4-1] UNIX ํ์ผ ์ข ๋ฅ (0) | 2025.10.21 |
| [Linux/Unix][3-5] shift ๋ช ๋ น ํ๋ก๊ทธ๋จ (0) | 2025.10.21 |
| [Linux/Unix][3-4] bash ํ์ผ / ๋งค๊ฐ๋ณ์ ํ์ฅ ๋ฌธ๋ฒ / ${:-}, ${:=}, ${:+}, ${:?} (0) | 2025.10.21 |