본문 바로가기

전공 과목 시험정리/운영체제 기초

리눅스 I-node

디렉토리에서 파일을 읽는 순서
1. 디렉토리에서 파일 선택
2. 선택된 파일의 i-node 번호를 i-node 블록에서 찾음
3. 해당 i-node 테이블 블록 정보에 들어있는 디스크 상의 데이터 주소를 참조
4. 파일 읽기

i-node 란?
리눅스에서 파일 시스템은 하드디스크에서 부트 블록, 슈퍼블록, 데이터 블록, 그리고 i-node 블록으로 나눌 수 있다. 부트 블록은 시스템이 부팅될 때 처음 읽기 위한 정보를 저장해 놓은 곳이고, 슈퍼 블록은 전체파일 시스템에 관한 정보를 가지고 있으며, 데이터 블록은 실제 데이터가 저장되는 공간이다. 마지막으로 i-node 블록은 파일 구조체를 가리키는 포인터들의 집합으로서 실제 파일과 1:1 로 대응된다. 그 파일의 생성시간, 날짜, 크기, 위치등의 정보를 가지고 있다.
즉, 디렉토리란 파일을 담고 있는 공간이라기 보다는 파일의 이름과 아이노드 넘버를 저장하는 테이블이라 볼 수 있다. i-node 란 파일의 이름을 제외한 중요한 정보를 담고있는 곳이라 할 수 있다. (파일 이름과 데이터 자체는 보관하지 않는다.)
i-node num 은 i-node 구분을 위한 번호이다.
사람은 파일을 파일이름으로 구분하고, 컴퓨터는 i-node 번호로 구분한다고 생각하면 된다.

Linux
File System
Boot
부팅을 위한 블록.

Super
전체 파일 시스템에 관한 정보를 가지고 있음.

Data
실제 데이터를 가지고 있음

i-node
파일 구조체를 가리키는 포인터들의 집합.

1. 파일링크
1) ln (Link)
– 하나의 특정한 파일을 다른 파일 이름으로도 사용하고자 할 때 사용하는 명령
– cp 명령은 원본 파일의 내용을 바꾸어도 복사된 파일의 내용이 그대로 있으나 ln 명령은 원본 파일의 내용을 바꾸면 링크된 파일의 내용 역시 같이 바뀌게 됨. (연결된 상태)
– 링크된 파일의 어느 한 파일을 수정하면 링크된 다른 파일 모두가 수정
– 특정 파일이 ln 명령으로 생성된 다른 파일에 관계없이 실제로는 하나의 파일만 존재하는 것을 의미
– 링크를 부여하는 방법으로는 하드 링크와 심볼릭 링크가 있음.

디렉토리 i-node 블록 Data 블록

하드링크 파일 → i-node 1 → 원본파일 데이터
원본파일 ↗
심볼릭 링크 파일 → i-node 2 원본파일 포인터 (원본파일을 가르킴)

– 일반적으로 사용자들이 상요하는 링크는 심볼릭 링크이며, Windows의 바로가기 아이콘도 심볼릭 링크에 해당

2) 하드 링크 (Hard Link)
– 하나의 파일에 여러 개의 이름을 부여하는 것
– 같은 파일을 이름만 다르게 부르는 것
– 원본 파일과 같은 데이터 파일 공유 -> 원본파일 이름이 바뀌여도 사용 가능.
– 파일을 없애려면 링크로 생성된 링크 파일을 모두 지워야 함.
– 다른 파일 시스템 간에는 링크할 수 없음.
– 원본 파일이 삭제되어도 원본과 동일한 내용을 하드 링크된 파일이 가지고 있고 자원 공유 가능.
– 하드링크의 사용법
[test@test.com]# ln [Original_file] [linked_name]

3) 심볼릭 링크 (Symbolic Link)
– 윈도우즈 운영체제의 ‘바로가기 아이콘’ 과 유사
– 링크로 생성된 파일에 내용은 존재하지 않으며, 각각의 i-node 를 가진 또 다른 파일이 어디를 가리키고 있는지 알려주는 역할
– 하드링크와는 다르게 링크를 다른 곳으로 이동시키면 링크가 깨져서 사용 불가
– 다른 파일 시스템 간에 생성할 수 있어 다른 파티션에 링크 파일을 생성 가능
– 원본 파일 이름이 바뀌면 사용하지 못함.
– 퍼미션은 l로 표시 (하드링크는 일반 파일로 표시)
– 심볼릭 링크의 사용방법
$ ln -s [원본 파일명] [대상파일명]