본문 바로가기

Linux/CentOS

13. 파일 시스템 - inode value 및 하드링크

*파일 시스템과 링크 - 유닉스 계열에서는 inode라는 독특한 파일 시스템 구조를 가짐.

1. inode란

# ls -ial 

inode 값 -> 파일명이 매핑되어 있고 각 파티션마다 inode란 특별한 파일의 저장 정보를 갖는 저장 장소(meta data)

해당 inode 번호(값) -> 해당 파일의 주인, 그룹, permission, 파일 타입, 하드링크 갯수, 파일 사이즈, 수정날짜, 파일의 첫번째 블락 하드디스크 포인터가 있음.

각 파티션마다 inode 저장 장소를 갖음. [파일 하나당 inode 번호를 갖고 있고 그 inode 하나당 위 정보(해당 파일의 주인, 그룹, permission, 파일 타입, 하드링크 갯수, 파일 사이즈, 수정날짜, 파일의 첫번째 블락 하드디스크 포인터) 를 갖고 있다.]


* 디렉토리는 해당 inode파일명과 맵핑되어 있는 정보를 갖는 파일이다.(디렉토리도 하나의 파일이다.)

* 즉, 해당 inode 번호만 알면 해당 파일에 접근할 수 있다.

* 해당 파일에 접근하려면 해당 inode에 반드시 접근해야한다.

* inode 레벨에서 permission이 결정된다. (babo 계정으로 어떤 파일에 접근하려고 하면 그 해당 inode의 permission과 내 계정이랑 비교하여 권한이 있는 지 확인한다. 즉, inode level에서 permission이 결정된다.)

*inode의 값은 디렉토리가 알고 있다. (aaa.txt에 접근하기 위해서는 inode값을 알고 있어야하며 inode 값은 디렉토리가 알고 있다.)





2. link

1) 하드링크

* inode를 서로 다른 파일명으로 지칭할 수 있나? -> 가능하다. (이것이 하드링크다.)


# ln aaa.txt haaa.txt (하드링크)



# rm -f aaa.txt를 하면 저 위의 2값은 1이 되지만 physical address의 값은 사라지지 않는다.

# rm -f haaa.txt를 마저 하게 되면 해당 inode는 삭제가 되며 meta data까지 깔끔하게 지워진다.


1. 실제 내용을 가지고 있는 영역은 한 개이다.(이것을 여러 이니셜로 가리키고 있는 것이다.)

2. 원파일이 사라지면 하드링크도 사라짐. (2개의 하드링크 중 하나를 삭제하여도 원본파일은 살아있고 inode를 가리키는 식별자가 삭제된 것이다.inode가 원본이다. )

3. inode의 하드링크 카운트가 1이여야 파일이 삭제 가능하다.

4. 하드링크의 단점 : 파티션 경계를 넘어갈 수 없다.




2) 소프트링크(파일 속성 앞에 l 로 표시 됨)

# ln -s aaa.txt saaa.txt

1. 타겟 파일 자체에 대한 위치의 포인터 값을 담고 있는 것(해당파일의 물리적 경로)

2. 파티션 경계를 넘을 수 있다.

3. 원본파일이 없어져도 소프트링크는 인식을 못한다.(리눅스가 인식하여 표시해준다.)