귀염둥이의 메모

[Linux / CentOS 7] 아이노드 (i-node) / 하드 링크, 심볼릭 링크 본문

Infra & Devops/Linux

[Linux / CentOS 7] 아이노드 (i-node) / 하드 링크, 심볼릭 링크

겸둥이xz 2021. 8. 21. 18:54
반응형

아이노드 (i-node)

- i-node 는 전통적인 UNIX 계통 파일 시스템에서 사용하는 자료 구조입니다

- 파일 시스템에서 파일이나 디렉토리는 고유한 i-node 를 갖고 있으며 i-node 번호로 구분이 가능합니다

- 사용자가 파일에 액세스하기 위해서 파일 이름을 사용하지만 내부적으로는 디렉토리 테이블에 저장된 i-node 번호로 매핑됩니다

- ls -i [파일 or 디렉토리] 명령어로 i-node 번호 확인이 가능합니다

 

 

i-node 에 포함된 정보들

- 파일모드 (퍼미션)
- 링크 수
- 소유자명
- 그룹명
- 크기
- 주소 (섹터 위치)
- 마지막 접근 정보
- 마지막 수정 정보
- i-node 수정 정보

i-node 포인터 구조를 통해서 파일의 실제 데이터가 저장된 블록의 정보를 포함하여 파일의 메타 데이터 정보만 저장시킵니다

 

 

하드 링크 (Hard Link)

- 새로운 i-node 생성되지 않습니다 (원본과 같은 i-node 테이블)

- 디렉토리는 하드링크가 불가능합니다

- 다른 파티션에 링크 불가능합니다

- 원본파일을 제거해도 액세스 가능합니다

 

하드 링크 생성 명령어

ln [원본 파일] [링크 파일]

 

 

심볼릭 링크 (Symbolic Link)

- 새로운 i-node 를 가진 링크 파일이 생성됩니다

- 디렉토리, 파일 둘다 가능합니다

- 다른 파티션에 링크 가능합니다

- 원본 파일을 제거하면 액세스 불가능합니다

 

심볼릭 링크 생성 명령어

ln -s [원본 파일 절대 경로] [링크 파일]

 

 

하드 링크 vs 심볼릭 링크

구분 하드 링크 심볼릭 링크
명령어 ln ln -s
접근 방식 원본과 같은 i-node 테이블 원본과 다른 테이블
디스크 공간 필요 없음 약간의 공간 필요
디렉토리 불가능 가능
파일 시스템 동일한 파일 시스템만 가능 다른 파일 시스템 가능
원본 파일 제거 이상 없음 접근 불가능

 

 

링크 파일 실습

 

먼저 "test link" 라는 내용을 저장한 파일 fileA 을 생성합니다

 

 

/tmp 디렉토리에 하드 링크 파일(hard.txt), 소프트 링크 파일(soft.txt)을 생성합니다

ls -li 명령어로 확인하면 원본(fileA)과 하드 링크(hard.txt)는 i-node 번호가 같습니다

fileA 와 soft.txt 는 i-node 번호가 다릅니다

 

 

/tmp 디렉토리에 대한 링크파일을 사용자 홈 디렉토리에 temp 라는 이름으로 생성합니다

 

 

원본 fileA 를 삭제한 후 링크 파일을 확인합니다

하드 링크 파일은 이상 없지만 소프트 링크 파일은 문제가 생깁니다

 

 

 

temp 디렉토리에 새로운 파일(new_file) 을 하나 만들고 /tmp 디렉토리에서 확인합니다

temp 디렉토리를 통해 만들었지만 /tmp/new_file 로 /tmp 를 통해서 접근이 가능합니다

 

반응형
Comments