[Linux / CentOS 7] 아이노드 (i-node) / 하드 링크, 심볼릭 링크
아이노드 (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 를 통해서 접근이 가능합니다