아이노드

아이노드(inode, index node)는 메타데이터를 저장하는 구조체입니다.
메타데이터(metadata)는 파일의 크기, 생성/수정 시간, 접근 권한, 실제 데이터 블록의 위치 등의 데이터를 의미합니다.

파일 시스템에서 파일은 데이터 블록들의 집합이므로, 이를 효율적으로 관리하기 위해 별도의 메타데이터가 필요합니다.
아이노드는 이러한 정보를 저장하여 파일을 관리하는 역할을 합니다.

아이노드는 파일의 실제 내용을 저장하지 않으며, 파일이 디스크 상에서 어디에, 어떻게 배치되어 있는지를 가리키는 일종의 “지도” 역할을 수행합니다.

아이노드는 대부분의 유닉스 계열 파일 시스템(EXT, EXT2, EXT3, EXT4 등)에서 기본적으로 사용되는 개념입니다.
XFS, ZFS 등 다른 파일 시스템에서도 유사한 방식으로 파일 메타데이터를 관리합니다.

구성 요소

아이노드에는 파일의 다음과 같은 속성이 저장됩니다.

  • 파일 크기
  • 접근 권한(읽기, 쓰기, 실행 등)
  • 소유자와 그룹 정보
  • 생성/수정/접근시간
  • 데이터 블록의 위치 정보
  • 링크 카운트(해당 아이노드를 참조하는 파일 이름 개수)

추가로, 각 파일에는 아이노드 번호(Inode Number)라는 고유 식별자를 가집니다.

파일 시스템은 디렉터리를 통해 파일 이름 -> 아이노드 번호를 매핑해 파일에 접근합니다.

아이노드 개수는 일반적으로 파일 시스템 생성 시 결정되며, 전통적인 방식에서는 고정됩니다.
아이노드 개수가 부족한 경우 파일을 만들 수 없습니다.

디렉터리

디렉터리도 일종의 특수한 파일입니다.
해당 내부에는 파일 이름과 해당 아이노드 번호가 기록되어 있습니다.

사용자가 특정 파일을 열 때, 운영체제는 디렉터리에서 이름을 찾고, 연결된 아이노드 번호를 통해 해당 파일의 메타데이터와 데이터 블록을 참조합니다.

하드 링크

하드 링크(Hard Link)는 하나의 아이노드를 여러 파일 이름이 참조하는 방식입니다.
즉, 동일한 파일을 가리키는 여러 개의 이름을 가지게 됩니다.

하드 링크는 원본과 링크의 구분이 없으며, 동일한 아이노드에 연결되어 있기 때문에 둘 중 하나를 수정하면 변경 내용이 모두 반영됩니다.

하드 링크에는 몇 가지 제한이 있습니다.

  • 동일한 파일 시스템 내에서만 생성할 수 있습니다.
  • 모든 하드 링크가 삭제되어야 아이노드와 실제 데이터가 해제됩니다.
  • 일반적으로 디렉터리에 대해서는 하드 링크를 허용하지 않습니다.
    • 루프 발생을 방지하기 위함

동일한 파일을 여러 이름으로 참조하고 싶을 때 사용합니다.

소프트 링크

소프트 링크(Soft Link)는 원본 파일의 경로를 담고 있는 특수한 파일로, 바로가기와 비슷한 개념입니다.

독립적인 아이노드를 가지며, 원본 파일의 아이노드를 직접 참조하지 않습니다.
그 대신 원본 파일의 절대 경로 또는 상대 경로를 문자열 형태로 저장합니다.
따라서 원본 파일이 삭제되거나 이동되면 소프트 링크는 유효하지 않게 되며 깨진(Broken) 링크가 됩니다.

소프트 링크는 심볼릭 링크(Symbolic Link)라고도 불립니다.

ComputerScience 카테고리 내 다른 글 보러가기

댓글남기기