๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
6. CS ๊ธฐ์ดˆ ๐Ÿ“š/Linux & Unix ๐Ÿง

[Linux/Unix][4-2] inode์˜ ์ •๋ณด

by lxvxxu 2025. 10. 21.

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์˜ ์†์„ฑ ๋ณ€๊ฒฝ์ด ์•„๋‹ˆ๋ผ ๋””๋ ‰ํ† ๋ฆฌ ํ…Œ์ด๋ธ” ๋ณ€๊ฒฝ์ด์•ผ!