๐Ÿ–ฅ๏ธ Computer Science/Linux

[Linux] inode, ์‹ฌ๋ณผ๋ฆญ ๋งํฌ(์†Œํ”„ํŠธ ๋งํฌ), ํ•˜๋“œ๋งํฌ

Rosieblue 2023. 5. 31. 00:34
728x90

๋ฆฌ๋ˆ…์Šค์˜ ๋งํฌ์—๋Š” ๋‘ ๊ฐ€์ง€ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋‹ค. ๋ฐ”๋กœ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ(์†Œํ”„ํŠธ ๋งํฌ)์™€ ํ•˜๋“œ๋งํฌ์ด๋‹ค. ์ด๋ฅผ ์•Œ๊ธฐ ์ „์— ๋จผ์ € i-node์˜ ๊ฐœ๋…๋ถ€ํ„ฐ ๋ณด๊ณ  ๊ฐ€์ž.
 

inode 

inode๋Š” index-node์˜ ์•ฝ์ž์ด๋‹ค. 
index๋Š” ํ•œ๊ตญ์–ด๋กœ๋Š” '์ƒ‰์ธ'์ด๋‹ค. ์ฆ‰, ๋ณดํ†ต ๋ฌด์–ธ๊ฐ€๋ฅผ ์ฐพ์„ ๋•Œ ๋นจ๋ฆฌ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ ์“ฐ์ธ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฐฐ์—ด arr[3]์˜ ์ •๋ณด๋ฅผ ์ฐพ๊ธฐ์œ„ํ•ด index 3์„ ์ด์šฉํ•˜๋ฉด ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.
๋”ฐ๋ผ์„œ index-node, ์ฆ‰ inode๋Š” ๋ฌด์–ธ๊ฐ€๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์„ ์ถ”์ธกํ•  ์ˆ˜์žˆ๋Š”๋ฐ, ์—ฌ๊ธฐ์„œ ๊ทธ '๋ฌด์–ธ๊ฐ€'๊ฐ€ 'ํŒŒ์ผ'์ด ๋˜๋Š” ๊ฒƒ์ด๋‹ค.
์ฆ‰ inode๋Š” ํŒŒ์ผ์˜ ์‹ค์ œ ์œ„์น˜๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ํŒŒ์ผ๋งˆ๋‹ค ๋ถ€์—ฌ๋œ ๋…ธ๋“œ๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
 
* ์ฐธ๊ณ ๋กœ ๋ฆฌ๋ˆ…์Šค๋Š” ๋ชจ~~~๋“  ๊ฒƒ์„ ํŒŒ์ผ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ผ๋ฐ˜ ํŒŒ์ผ์ด๋‚˜ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ œ์™ธํ•˜๋”๋ผ๋„ ๋””๋ฐ”์ด์Šค, ํŒŒ์ดํ”„, ์†Œ์ผ“, ๋ช…๋ น์–ด ๋“ฑ๋งˆ์ € ์ •๋ง ๋ชจ๋“  ๊ฒƒ์ด ํŒŒ์ผ์ด๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ inode๋Š” ๋ฐฉ๊ธˆ ๋“  ํŒŒ์ผ์˜ ์˜ˆ์‹œ๋“ค์—๋„ ๋‹ค ๋ถ€์—ฌ๋ผ์žˆ๋‹ค.
 
์กฐ๊ธˆ ๋” ์ „๋ฌธ์ ์œผ๋กœ ํ‘œํ˜„ํ•˜์ž๋ฉด, inode๋Š” UFS์™€ ๊ฐ™์€ ์ „ํ†ต์  ๋ฆฌ๋ˆ…์Šค ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ ์ค‘ ํ•˜๋‚˜๋กœ, ํŒŒ์ผ์˜ ์ •๋ณด์™€ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ ์žˆ๋Š” ์‹๋ณ„์ž์ด๋‹ค. ์ฆ‰ inode๋กœ ํŒŒ์ผ์„ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.
์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ๊ฒƒ์€ ํŒŒ์ผ์€ ๊ณ ์œ ํ•œ inode๋ฅผ ๊ฐ€์ง€๋ฉฐ, i-node ๋ฒˆํ˜ธ๋ฅผ ํ†ตํ•ด ๊ตฌ๋ณ„์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
 
inode์—๋Š” ๋””์Šคํฌ ์ƒ์˜ ์‹ค์ œ ํŒŒ์ผ ์œ„์น˜๊ฐ€ ๋‹ด๊ฒจ์ ธ ์žˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด inode๋Š” ๋‹จ์ˆœํžˆ ํŒŒ์ผ ์ฃผ์†Œ๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ์ผ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ํฌ์ธํ„ฐ๋ž‘ ๋‹ค๋ฅผ๊ฒŒ ์—†์ง€ ์•Š์„๊นŒ?? 
์—ญ์‹œ๋‚˜ inode๋Š” ํŒŒ์ผ์˜ ์ฃผ์†Œ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ์ •๋ณด๋“ค๋„ ๋งŽ์ด ๋‹ด๊ณ  ์žˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด inode๊ฐ€ ๋‹ด๊ณ  ์žˆ๋Š” ์ •๋ณด๋“ค์€ ๋ฌด์—‡์ด ์žˆ์„๊นŒ?
 
์ •ํ™•ํžˆ inode๊ฐ€ ์–ด๋–ค ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ด์„œ http://books.gigatux.nl/mirror/kerneldevelopment/0672327201/ch12lev1sec6.html ์—์„œ inode๊ฐ€ ์–ด๋–ป๊ฒŒ ๊ตฌ์กฐ์ฒด๋กœ ๊ตฌํ˜„๋˜์–ด์žˆ๋Š”์ง€ ๊ฐ€์ง€๊ณ  ์™€๋ดค๋‹ค.

struct inode {
        struct hlist_node       i_hash;              /* hash list */
        struct list_head        i_list;              /* list of inodes */
        struct list_head        i_dentry;            /* list of dentries */
        unsigned long           i_ino;               /* inode number */
        atomic_t                i_count;             /* reference counter */
        umode_t                 i_mode;              /* access permissions */
        unsigned int            i_nlink;             /* number of hard links */
        uid_t                   i_uid;               /* user id of owner */
        gid_t                   i_gid;               /* group id of owner */
        kdev_t                  i_rdev;              /* real device node */
        loff_t                  i_size;              /* file size in bytes */
        struct timespec         i_atime;             /* last access time */
        struct timespec         i_mtime;             /* last modify time */
        struct timespec         i_ctime;             /* last change time */
        unsigned int            i_blkbits;           /* block size in bits */
        unsigned long           i_blksize;           /* block size in bytes */
        unsigned long           i_version;           /* version number */
        unsigned long           i_blocks;            /* file size in blocks */
        unsigned short          i_bytes;             /* bytes consumed */
        spinlock_t              i_lock;              /* spinlock */
        struct rw_semaphore     i_alloc_sem;         /* nests inside of i_sem */
        struct semaphore        i_sem;               /* inode semaphore */
        struct inode_operations *i_op;               /* inode ops table */
        struct file_operations  *i_fop;              /* default inode ops */
        struct super_block      *i_sb;               /* associated superblock */
        struct file_lock        *i_flock;            /* file lock list */
        struct address_space    *i_mapping;          /* associated mapping */
        struct address_space    i_data;              /* mapping for device */
        struct dquot            *i_dquot[MAXQUOTAS]; /* disk quotas for inode */
        struct list_head        i_devices;           /* list of block devices */
        struct pipe_inode_info  *i_pipe;             /* pipe information */
        struct block_device     *i_bdev;             /* block device driver */
        unsigned long           i_dnotify_mask;      /* directory notify mask */
        struct dnotify_struct   *i_dnotify;          /* dnotify */
        unsigned long           i_state;             /* state flags */
        unsigned long           dirtied_when;        /* first dirtying time */
        unsigned int            i_flags;             /* filesystem flags */
        unsigned char           i_sock;              /* is this a socket? */
        atomic_t                i_writecount;        /* count of writers */
        void                    *i_security;         /* security module */
        __u32                   i_generation;        /* inode version number */
        union {
                void            *generic_ip;         /* filesystem-specific info */
        } u;
};

๊ฐœ๋งŽ๋‹ค (์—ฌ๊ธฐ์—๋„ ์ž˜ ๋‚˜์™€์žˆ๋Š” ๊ฒƒ ๊ฐ™์€๋ฐ ์–ธ์ œ ํ•œ๋ฒˆ ๊ถ๊ธˆํ•˜๋ฉด ์ฝ์–ด๋ณด๋Š” ๊ฒƒ๋„ ์ข‹์„ ๋“ฏ ํ•˜๋‹ค.)
์•„๋ฌดํŠผ ์œ„์— struct๋ฅผ ๋ณด๋‹ˆ๊นŒ ์ƒ๊ฐ๋ณด๋‹ค ๋งŽ์€๋ฐ ์ผ๋‹จ ์ง€๊ธˆ ๋‹น์žฅ์€ ์ €๊ฑธ ๋ชจ๋‘ ์•Œ ํ•„์š”๋Š” ์—†๋‹ค.
 
์šฐ๋ฆฐ ์ƒ๊ฐ๋ณด๋‹ค inode๋ฅผ ๋งŽ์ด ์ ‘ํ•˜๊ณ  ์žˆ๋‹ค. ์•„๋ž˜๋ฅผ ๋ณด์ž. ์ด๋Š” ls -li๋กœ ํŒŒ์ผ ์ •๋ณด๋ฅผ ์ถœ๋ ฅํ•œ ๊ฒฐ๊ณผ์ด๋‹ค.
(์ฐธ๊ณ ๋กœ ls ์— -i ์˜ต์…˜์„ ์ฃผ๋ฉด inode ๋ฒˆํ˜ธ๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค. ์•„๋ž˜ ์‚ฌ์ง„ ์ขŒ์ธก ๋ฒˆํ˜ธ 396850์ด inode ๋ฒˆํ˜ธ์ด๋‹ค)

๊ต‰์žฅํžˆ ๋งŽ์ด ๋ณธ ์ •๋ณด ์•„๋‹Œ๊ฐ€? ์œ„์—๋Š” inode ๋ฒˆํ˜ธ, ๊ถŒํ•œ, ๋งํฌ ์ˆ˜, ์†Œ์œ ์ž,์†Œ์œ ๊ทธ๋ฃน, ํŒŒ์ผ ํฌ๊ธฐ, ์ƒ์„ฑ ๋‚ ์งœ, ์ด๋ฆ„ ๋“ฑ์ด ์ ํ˜€์žˆ๋‹ค. inode๋Š” ์ด๋Ÿฌํ•œ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. stat ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด์„œ๋„ ํŒŒ์ผ ์ •๋ณด๋ฅผ ๋งŽ์ด ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ ์ฐธ๊ณ ํ•˜์ž.

์ฆ‰ inode๋Š” ์‹ค์ œ ํŒŒ์ผ์€ ์•„๋‹ˆ์ง€๋งŒ ์ฃผ์†Œ๋ฅผ ํฌํ•จํ•œ ํŒŒ์ผ์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํŒŒ์ผ ๊ณ ์œ ์˜ ์‹๋ณ„์ž๋ผ๊ณ  ๋ณด๋ฉด ๋˜๊ฒ ๋‹ค. ๊ทธ๋ž˜์„œ ํŒŒ์ผ์— ์ ‘๊ทผํ•  ๋•Œ๋Š” ๋จผ์ € inode๋ฅผ ์ ‘๊ทผํ•˜๊ณ  inode๋ฅผ ํ†ตํ•ด ํŒŒ์ผ์˜ ์‹ค์ œ ์œ„์น˜๋กœ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

ํ•œํŽธ, ์ด๋Ÿฌํ•œ inode๋“ค์€ ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ inode list table์ด๋ž€ ๊ณณ์— ๋ชจ์•„์ ธ์žˆ๋‹ค.
 
ํŒŒ์ผ์„ ์ƒ์„ฑํ•  ๋•Œ ์ƒˆ๋กœ์šด inode๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ณ  ํŒŒ์ผ์ด ์‚ญ์ œ๋  ๋•Œ inode๋„ ๋˜ํ•œ ์‚ญ์ œ๋˜๋Š” ๊ฒƒ์„ ์‰ฝ๊ฒŒ ์ถ”์ธกํ•  ์ˆ˜ ์žˆ๋‹ค.
ํ•œํŽธ ์‚ญ์ œ๋  ๋•Œ์˜ ๊ฒฝ์šฐ์—๋Š” ์ข€๋” ์กฐ์‹ฌ์Šค๋Ÿฝ๊ฒŒ ์ ‘๊ทผํ•ด์•ผํ•˜๋Š”๋ฐ, ์ผ๋‹จ inode๊ฐ€ ์ œ๊ฑฐ๋˜๋ฉด ํ•ด๋‹น ํŒŒ์ผ์˜ ๋ฐ์ดํ„ฐ ๋ธ”๋ก๋„ ์‚ญ์ œ๋˜์–ด ์‹ค์ œ ๋””์Šคํฌ ๊ณต๊ฐ„์ด ๋ฐ˜ํ™˜๋œ๋‹ค. 
 
๋‹จ, 1)๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•ด๋‹น ํŒŒ์ผ์„ ์—ด์–ด ์‚ฌ์šฉ ์ค‘์ด๊ฑฐ๋‚˜, 2)ํŒŒ์ผ์— ๋Œ€ํ•œ ํ•˜๋“œ ๋งํฌ๊ฐ€(์•„๋ž˜์—์„œ ๋‹ค๋ฃธ) ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ํŒŒ์ผ์˜ inode๊ฐ€ ์‚ญ์ œ๋˜๋”๋ผ๋„ ์‹ค์ œ ๋ฐ์ดํ„ฐ ๋ธ”๋ก์€ ์œ ์ง€๋  ์ˆ˜ ์žˆ๋‹ค. ํŒŒ์ผ์ด ๋ชจ๋“  ํ•˜๋“œ ๋งํฌ์—์„œ ์ฐธ์กฐ๊ฐ€ ์ œ๊ฑฐ๋˜๊ณ , ํŒŒ์ผ์„ ์—ด๊ณ  ์žˆ๋Š” ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋œ ํ›„์—์•ผ ์‹ค์ œ ๋ฐ์ดํ„ฐ ๋ธ”๋ก๋„ ํ•ด์ œ๋˜์–ด ๋””์Šคํฌ ๊ณต๊ฐ„์ด ๋ฐ˜ํ™˜๋œ๋‹ค.

 

 

stat ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์•„๋ž˜์ฒ˜๋Ÿผ inode ์ •๋ณด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 


 

์‹ฌ๋ณผ๋ฆญ(์†Œํ”„ํŠธ) ๋งํฌ

์šฐ๋ฆฌ๊ฐ€ ๋ฆฌ๋ˆ…์Šค์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋งํฌ๋Š” ๋ณดํ†ต ์‹ฌ๋ณผ๋ฆญ ๋งํฌ(์†Œํ”„ํŠธ ๋งํฌ)๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์ฐธ๊ณ ๋กœ ์†ŒํฌํŠธ ๋งํฌ๊ณผ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋Š” ์™„์ „ํžˆ ๊ฐ™์€ ๋ง์ด๋‹ค. ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋Š” Windows์˜ ๋ฐ”๋กœ๊ฐ€๊ธฐ ๊ธฐ๋Šฅ๊ณผ ๋น„์Šทํ•˜๋‹ค. ์ฆ‰, ์›๋ณธํŒŒ์ผ๊ณผ ๋™์ผํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋‹จ์ง€ ์›๋ณธ ํŒŒ์ผ์„ '๊ฐ€๋ฆฌํ‚ค๋Š”' ๊ฒƒ ๋ฟ์ด๋‹ค. ์ด๋Š” C์—์„œ์˜ ํฌ์ธํ„ฐ์™€ ๋น„์Šทํ•œ ์„ฑ์งˆ์„ ์ง€๋‹ˆ๊ณ  ์žˆ๋‹ค.
 

ํ•˜๋“œ ๋งํฌ

ํ•˜๋“œ๋งํฌ๋Š” ์›๋ณธํŒŒ์ผ์ด๋ž‘ ๋˜‘๊ฐ™๋‹ค๊ณ  ๋ณด๋ฉด๋œ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๊ฐ™์€ inode๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ฐ™์€ inode๋ฉด ๋””์Šคํฌ์—์„œ ์™„์ „ ๋˜‘๊ฐ™์€ ํŒŒ์ผ์œ„์น˜๋กœ ์ ‘๊ทผํ•œ๋‹ค.

cp ๋ช…๋ น์–ด๋ž‘ ํ—ท๊ฐˆ๋ฆด ์ˆ˜๋„ ์žˆ๋Š”๋ฐ, cp๋Š” ๋‚ด์šฉ๋งŒ ๊ฐ™์€ '๋‹ค๋ฅธ' ํŒŒ์ผ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ inode ๋ฒˆํ˜ธ๋Š” ๋‹น์—ฐํžˆ ๋‹ค๋ฅด๋‹ค. ํ•œํŽธ ํ•˜๋“œ๋งํฌ๋Š” ๋‹จ์ง€ inode ๋ฒˆํ˜ธ๋งŒ ๋ณต์‚ฌํ•˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ๋™์ผํ•œ ํŒŒ์ผ์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค.

์ฐธ๊ณ ๋กœ ๋””๋ ‰ํ† ๋ฆฌ์— ์†Œํ”„ํŠธ๋งํฌ๋ฅผ ๊ฑฐ๋Š” ๊ฑด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ํ•˜๋“œ๋งํฌ๋ฅผ ๊ฑฐ๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

๋ฐœ๋กœ ๋งŒ๋“  ppt..

์—ฌ๊ธฐ์„œ ์›๋ณธ ํŒŒ์ผ, ํ•˜๋“œ ๋งํฌ ํŒŒ์ผ์€ ๋‘˜ ๋‹ค inode1์„ ๊ฐ€๋ฆฌํ‚ค๊ณ , ์‹ฌ๋ณผ๋ฆญ ๋งํฌ ํŒŒ์ผ์€ inode2๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.
inode๋Š” ๋ฆฌ๋ˆ…์Šค/์œ ๋‹‰์Šค ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ์—ฌ๋Ÿฌ ์ •๋ณด๊ฐ€ ๋‹ด๊ฒจ์ ธ ์žˆ๊ณ  ์‹ค์ œ ๋ฐ์ดํ„ฐ ์œ„์น˜ ์ฃผ์†Œ๋„ ๋‹ด๊ณ  ์žˆ๋‹ค. ์ด๋•Œ inode2๋Š” ์›๋ณธ ํŒŒ์ผ ํฌ์ธํ„ฐ๋ฅผ ๋ฐ์ดํ„ฐ๋กœ ๊ฐ€์ง€๊ณ , ์›๋ณธ ํŒŒ์ผ ํฌ์ธํ„ฐ๋Š” ์›๋ณธ ํŒŒ์ผ๋กœ ํ–ฅํ•˜๋Š” ํฌ์ธํ„ฐ์ด๋‹ค. ์ฆ‰ ํ•˜๋“œ ๋งํฌ ํŒŒ์ผ๊ณผ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ ํŒŒ์ผ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ •๋ณด๋Š” ๋‹ค๋ฅธ ๊ฒƒ์ด๋‹ค. inode๊ฐ€ ๋‹ค๋ฅด๋ฉด ๊ทธ๋ƒฅ ์•„์˜ˆ ๋‹ค๋ฅธ ํŒŒ์ผ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด๋œ๋‹ค.
 
 
์•„๋ž˜๋Š” ๋งํฌ๋ฅผ ๋งŒ๋“œ๋Š” ๋ช…๋ น์–ด์ด๋‹ค.

ln ์›๋ณธํŒŒ์ผ์ด๋ฆ„ ๋งํฌํŒŒ์ผ์ด๋ฆ„ ; ํ•˜๋“œ๋งํฌ ์ƒ์„ฑ
ln -s ์›๋ณธํŒŒ์ผ์ด๋ฆ„ ๋งํฌํŒŒ์ผ์ด๋ฆ„ ; ์†Œํ”„ํŠธ๋งํฌ(์‹ฌ๋ณผ๋ฆญ๋งํฌ) ์ƒ์„ฑ

์œ„ ๋ช…๋ น์–ด๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์ด์ œ ์ง์ ‘ ํ•˜๋“œ ๋งํฌ์™€ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ ์ƒ์„ฑ ์‹ค์Šต์„ ํ•ด๋ณด์ž. 
 

์‹ค์Šต

 
nano ์—๋””ํ„ฐ๋กœ ์›๋ณธํŒŒ์ผ์ด ๋  basefile ์„ ์ƒ์„ฑํ•ด์ค€๋‹ค. ์•ˆ์˜ ๋‚ด์šฉ์€ Hello World๋กœ ์ž…๋ ฅํ–ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ln basefile hardlink ๋กœ ํ•˜๋“œ๋งํฌ ํŒŒ์ผ์ธ hardlink๋ฅผ, ln -s basefile softlink์œผ๋กœ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ์ธ softlink๋ฅผ ์ƒ์„ฑํ•ด์ฃผ์—ˆ๋‹ค. 
 

๋‘ ํŒŒ์ผ์— cat์„ ํ•ด๋ดค๋‹ค.


์ผ๋‹จ cat ๋ช…๋ น์–ด๋กœ ๋‘ ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ์ถœ๋ ฅํ•ด๋ณด๋ฉด ์ •์ƒ์ ์œผ๋กœ Hello World๊ฐ€ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๋งํฌ๊ฐ€ ์ž˜ ๋œ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.


์ด์ œ ls ๋ช…๋ น์–ด๋กœ linktest์˜ ๋””๋ ‰ํ† ๋ฆฌ ์ •๋ณด๋ฅผ ์ถœ๋ ฅํ•ด์ฃผ๋Š”๋ฐ, ์œ„์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ -i ์˜ต์…˜์€ inode ๋ฒˆํ˜ธ๋ฅผ ์ œ์ผ ์•ž์— ์ถœ๋ ฅํ•ด์ค€๋‹ค. 

ls -il


์ถœ๋ ฅ๋œ ๊ฒฐ๊ณผ์—์„œ 396850, 395100์ด inode ๋ฒˆํ˜ธ์ด๋‹ค.

์•„๋ฌดํŠผ ์ด๋ ‡๊ฒŒ ์ถœ๋ ฅ๋œ ๊ฒฐ๊ณผ์—์„œ ์ฃผ๋ชฉํ•  ๊ฒƒ์€ ๋จผ์ € ์†Œํ”„ํŠธ๋งํฌ์˜ ํŒŒ์ผ ์ข…๋ฅ˜๋งŒ l๋กœ ํ‘œ์‹œ๋˜๊ณ , ํ•˜๋“œ๋งํฌ๋Š” ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ๋„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๋˜ํ•œ basefile๊ณผ hardlink ์˜ inode ๋ฒˆํ˜ธ(396850)๋Š” ๊ฐ™์ง€๋งŒ ๊ทธ ๋ฒˆํ˜ธ์™€ softlink์˜ inode ๋ฒˆํ˜ธ(395100)๋Š” ๋‹ค๋ฅด๋‹ค๋Š” ๊ฒƒ ๋˜ํ•œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฆ‰, ํ•˜๋“œ๋งํฌ์™€ ์›๋ณธํŒŒ์ผ์€ ๋™์ผํ•œ inode๋ฅผ ๊ฐ€๋ฆฌํ‚ค์ง€๋งŒ, ์†Œํ”„ํŠธํŒŒ์ผ์€ ์›๋ณธํŒŒ์ผ์˜ ํฌ์ธํ„ฐ๋ฅผ ๋‹ด์€ inode๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.

basefile๊ณผ hardlink๋Š” ๋ฐ์ดํ„ฐ ๋ธ”๋ก์— ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋ฏ€๋กœ ํŒŒ์ผ ํฌ๊ธฐ๊ฐ€ 13์œผ๋กœ ๋™์ผํ•˜์ง€๋งŒ, softlink๋Š” ๋ฐ์ดํ„ฐ ๋ธ”๋ก์— ์›๋ณธํŒŒ์ผ์˜ ํฌ์ธํ„ฐ๋ฅผ ์ €์žฅํ•˜๋ฏ€๋กœ ์œ„์˜ ๋‘ ํŒŒ์ผ๊ณผ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋ฏ€๋กœ ํฌ๊ธฐ๊ฐ€ 8๋กœ ๋‹ค๋ฅด๋‹ค. ์ฆ‰ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ ํŒŒ์ผ์˜ ํฌ๊ธฐ์™€ ์›๋ณธ ํŒŒ์ผ์˜ ํฌ๊ธฐ๋Š” ์ƒ๊ด€์ด ์—†๋Š” ๊ฒƒ์ด๋‹ค.

์‚ญ์ œ

rm basefile์„ ํ†ตํ•ด ์›๋ณธ ํŒŒ์ผ์„ ์‚ญ์ œํ–ˆ๋‹ค.

softlink๊ฐ€ ๋นจ๊ฐ›๊ฒŒ ๋ณ€ํ•œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์†Œํ”„ํŠธ๋งํฌ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์• ๊ฐ€ ์‚ฌ๋ผ์กŒ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์œ„์—์„œ ๋งํ–ˆ๋“ฏ์ด ์†Œํ”„ํŠธ๋งํฌ๋Š” ์›๋ณธํŒŒ์ผ์„ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋‹ค.

 

์—ญ์‹œ ์ ‘๊ทผ์ด ๋˜์ง€ ์•Š๋Š”๋‹ค.

 

ํ•˜์ง€๋งŒ ์•„๋ž˜์™€๊ฐ™์ด cat hardlink๋ฅผ ํ•ด๋ณด๋ฉด ๋˜ ๋‹ค๋ฅด๋‹ค.

ํ•˜๋“œ๋งํฌ์˜ ์ •๋ณด๋Š” ๋ฒ ์ด์ŠคํŒŒ์ผ์ด ์‚ฌ๋ผ์ ธ๋„ ์ž˜ ์ถœ๋ ฅ๋˜๊ณ  ์žˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์›๋ณธ ํŒŒ์ผ์ด ์‚ฌ๋ผ์ ธ๋„ ํ•˜๋“œ๋งํฌ๋Š” ์›๋ž˜ ํŒŒ์ผ์ด ์žˆ๋˜ ๊ณณ์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ํ•˜๋“œ๋งํฌ๋ฅผ ์ง€์›Œ์•ผ์ง€ ์ด ํŒŒ์ผ์ด ๋””์Šคํฌ์—์„œ ์™„์ „ํžˆ ์‚ญ์ œ๋œ๋‹ค.

 

์ˆ˜์ •

nano basefile

basefile์— I am Haeun์„ ์ถ”๊ฐ€ํ•ด์คฌ๋‹ค.

ํ•˜๋“œ๋งํฌ, ์†Œํ”„ํŠธ๋งํฌ ํŒŒ์ผ์„ ์ฝ์–ด๋ณด๋‹ˆ ๊ฒฐ๊ณผ๊ฐ€ ์ž˜ ์ ์šฉ๋˜์—ˆ๋‹ค.

 

์ด๋ฒˆ์—๋Š” ์†Œํ”„ํŠธ๋งํฌ ํŒŒ์ผ์„ ์ˆ˜์ •ํ•ด๋ณด์•˜๋‹ค.

์›๋ณธ ํŒŒ์ผ, ํ•˜๋“œ๋งํฌ ํŒŒ์ผ๋„ ์ˆ˜์ •์ด ์ ์šฉ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

ํŒŒ์ผ ์ด๋™

์ด์ œ basefile์˜ ์œ„์น˜๋ฅผ ๋‹ค๋ฅธ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์˜ฎ๊ฒจ๋ณด์ž.

softlink๊ฐ€ ๋นจ๊ฐ›๊ฒŒ ๋˜๋ฉด์„œ ์–ด๋”˜๊ฐ€ ์ž˜๋ชป๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ๋‚˜ํƒ€๋‚ด๊ณ  ์žˆ๋‹ค. cat softlink๋ฅผ ํ•ด๋ณด๋ฉด ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์— basefile์ด ์—†์œผ๋ฏ€๋กœ ์˜ค๋ฅ˜๊ฐ€ ๋‚ฌ๋‹ค๊ณ  ์ถœ๋ ฅ๋˜๊ณ  ์žˆ๋‹ค. ์ฆ‰ softlink๊ณผ basefile์˜ ์—ฐ๊ฒฐ์ด ๋Š์–ด์ง„ ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ cat hardlink๋ฅผ ํ•ด๋ณด๋ฉด ์ •์ƒ์ ์œผ๋กœ Hello World๊ฐ€ ์ถœ๋ ฅ๋˜๋Š”๋ฐ ์ด๋Š” ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ๋‹ฌ๋ผ์ ธ๋„ ํ•˜๋“œ๋งํฌ์™€ ์›๋ณธํŒŒ์ผ์˜ ์—ฐ๊ฒฐ์€ ๋Š์–ด์ง€์ง€ ์•Š๋Š”๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.
 
์ด์ œ basefile์„ ๋‹ค์‹œ linktest ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์˜ฎ๊ฒจ๋ณด์ž
 

๋ชจ๋“ ๊ฒŒ ์ •์ƒ์ ์œผ๋กœ ์ถœ๋ ฅ๋จ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
 

 


์ฝ์–ด๋ณด๋ฉด ์ข‹์€ ๊ธ€

 https://mamu2830.blogspot.com/2019/07/blog-post.html?m=1

 

ํ•˜๋“œ๋งํฌ ์†Œํ”„ํŠธ๋งํฌ(ํŒŒ์ผ๊ณผ ๋””๋ ‰ํ† ๋ฆฌ ์ฐจ์ด, inode) ๋งค์šฐ ์ž์„ธํžˆ!

๋ฆฌ๋ˆ…์Šค ํ•˜๋“œ๋งํฌ, ์†Œํ”„ํŠธ๋งํฌ, ์‹ฌ๋ณผ๋ฆญ๋งํฌ, ํŒŒ์ผ๊ณผ ๋””๋ ‰ํ† ๋ฆฌ ์ฐจ์ด, inode์— ๋Œ€ํ•ด ์ž์„ธํ•˜๊ณ  ์นœ์ ˆํ•˜๊ฒŒ ์„ค๋ช…ํ•œ ํฌ์ŠคํŠธ์ž…๋‹ˆ๋‹ค!

mamu2830.blogspot.com

[๋ฆฌ๋ˆ…์Šค] Inode์™€ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ(Symbolic Link), ํ•˜๋“œ ๋งํฌ(Hard Link) ๊ฐœ๋…๊ณผ ์‹ค์Šต (tistory.com)

 

[๋ฆฌ๋ˆ…์Šค] Inode์™€ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ(Symbolic Link), ํ•˜๋“œ ๋งํฌ(Hard Link) ๊ฐœ๋…๊ณผ ์‹ค์Šต

Inode Inode๋Š” ์œ ๋‹‰์Šค ๊ณ„ํ†ต์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ํŒŒ์ผ๋“ค์˜ ์ •๋ณด๋Š” ๋ฐ”๋กœ ์ด inode์— ๋‹ด๊ฒจ์žˆ๋Š”๋ฐ, ๊ทธ๋งŒํผ ํŒŒ์ผ์— ์žˆ์–ด์„œ๋Š” ์ค‘์š”ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ํŒŒ์ผ์€ ๊ฐ์ž์˜ inode๋ฅผ ๊ฐ€์ง€

reakwon.tistory.com

[Linux] ๋ฆฌ๋ˆ…์Šค ์‹œ์Šคํ…œ์˜ ์•„์ด๋…ธ๋“œ(inode), ์‹ฌ๋ณผ๋ฆญ ๋งํฌ(Symbolic Link), ํ•˜๋“œ ๋งํฌ(Hard Link)์— ๋Œ€ํ•ด์„œ. (tistory.com)

 

[Linux] ๋ฆฌ๋ˆ…์Šค ์‹œ์Šคํ…œ์˜ ์•„์ด๋…ธ๋“œ(inode), ์‹ฌ๋ณผ๋ฆญ ๋งํฌ(Symbolic Link), ํ•˜๋“œ ๋งํฌ(Hard Link)์— ๋Œ€ํ•ด์„œ.

๊ฐœ์š” ๋ฆฌ๋ˆ…์Šค ์‹œ์Šคํ…œ์—์„œ, ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ์ฒ˜๋ฆฌํ•  ๋•Œ, ๋ฆฌ๋ˆ…์Šค ์ „์šฉ ํŠน์ˆ˜ํ•œ index๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์•„์ด๋…ธ๋“œ(i-node)์ž…๋‹ˆ๋‹ค. ์ด ์•„์ด๋…ธ๋“œ๋Š” ์ด๋ฆ„์—์„œ๋„ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด, index-node์˜ ์ค„์ž„๋ง์ž…๋‹ˆ๋‹ค. ์ธ๋ฑ

i5i5.tistory.com

[์šด์˜์ฒด์ œ] ํŒŒ์ผ ์‹œ์Šคํ…œ, inode ๋ฐฉ์‹์— ๋Œ€ํ•˜์—ฌ (velog.io)

 

[์šด์˜์ฒด์ œ] ํŒŒ์ผ ์‹œ์Šคํ…œ, inode ๋ฐฉ์‹์— ๋Œ€ํ•˜์—ฌ

์šด์˜์ฒด์ œ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ๋””ํ…Œ์ผํ•˜๊ฒŒ ๋“ค์–ด๊ฐ€๋ด์š”.

velog.io