본문 바로가기
INFRA/LINUX

inode에 대하여

by 근현대사 2023. 6. 21.
반응형

inode

"index node"의 줄임말로, 유닉스 계열 운영 체제(리눅스를 포함)에서 파일 시스템에 저장된 모든 파일과 디렉토리에 대한 메타데이터를 저장하는 데이터 구조입니다. 파일의 데이터는 디스크의 다양한 위치에 분산 저장될 수 있지만, 그 파일의 inode는 파일에 대한 모든 정보를 추적하고 관리합니다.

한 파일의 inode에는 다음과 같은 정보가 포함됩니다

  • 파일 소유자와 그룹
  • 파일 권한 (읽기, 쓰기, 실행 등)
  • 파일 타입 (일반 파일, 디렉토리, 심볼릭 링크 등)
  • 파일의 크기
  • 파일에 대한 접근, 수정, 변경 시간 (각각 atime, mtime, ctime)
  • 파일 데이터를 저장하는 블록의 위치
  • 링크 수 (해당 inode를 참조하는 디렉토리의 수)

파일은 자체 inode 번호를 가지며, 번호는 파일 시스템 내에서 유일합니다. 파일 이름은 디렉토리 엔트리에서 inode 번호에 매핑되어 파일 시스템이 해당 파일의 메타데이터를 찾을 있게 합니다. 이런 방식으로, 파일 시스템은 파일의 메타데이터와 실제 데이터를 빠르고 효율적으로 관리할 있습니다.

 

inode의 구조

리눅스 파일 시스템의 inode 구조는 다음과 같은 정보들을 포함합니다:

  • inode 번호: 각 inode는 파일 시스템 내에서 유일한 번호를 가집니다. 이것은 파일의 '주민등록번호'와 같은 것으로, 파일 시스템이 특정 파일을 찾고 관리하는 데 사용됩니다.
  • 파일 타입과 권한: inode는 파일이 일반 파일인지, 디렉토리인지, 심볼릭 링크인지 등을 나타내는 파일 타입 정보와 파일 접근 권한 (읽기, 쓰기, 실행 등) 정보를 저장합니다.
  • 소유자 ID와 그룹 ID: 파일의 소유자와 그룹 정보를 나타내는 UID (User ID)와 GID (Group ID)를 저장합니다.
  • 크기: 파일의 크기를 바이트 단위로 저장합니다.
  • 시간 스탬프: 파일의 생성 시간, 최근 접근 시간 (atime), 최근 수정 시간 (mtime), inode 변경 시간 (ctime) 등의 정보를 저장합니다.
  • 링크 카운트: 해당 inode를 참조하는 하드 링크의 개수를 나타냅니다.
  • 데이터 블록 포인터: 파일의 실제 데이터가 저장된 블록의 위치를 가리킵니다. 주요 포인터 유형에는 직접, 간접, 이중 간접, 삼중 간접 포인터가 있습니다. 직접 포인터는 데이터 블록을 직접 가리키며, 간접 포인터는 블록 주소 목록을 가리키는 블록을 가리킵니다. 이중 간접 포인터는 간접 포인터 블록을 가리키는 블록을 가리키고, 삼중 간접 포인터는 이중 간접 포인터 블록을 가리키는 블록을 가리킵니다. 이렇게 하는 이유는 파일 크기가 클 경우 파일의 데이터를 저장하는 데 필요한 블록 수를 줄이기 위해서입니다.

이런 정보들을 통해 파일 시스템은 파일에 대한 중요한 메타데이터를 추적하고 관리할 있습니다. 그러나 파일 이름은 inode 저장되지 않습니다. 대신 파일 이름은 별도의 데이터 구조인 디렉토리 엔트리에서 관리되며, 디렉토리 엔트리는 파일 이름과 해당 파일의 inode 번호를 매핑하는 역할을 합니다. 이런 방식으로 파일 시스템은 파일 이름과 메타데이터를 연결하고, 사용자는 파일 이름으로 파일에 접근할 있습니다.

 

inode  확인 명령어

 

df -i

명령어를 실행하면, 파일 시스템의 inode 사용 정보를 보여줍니다. 출력된 결과에는 파일 시스템 이름, inode , 사용 중인 inode , 사용 가능한 inode , inode 사용률 파일 시스템의 마운트 위치 등이 포함됩니다.

 

du --inodes /path/to/directory

특정 디렉토리나 파일의 inode 사용량을 확인하기 위해 du 명령어에 --inodes 옵션을 사용할 있습니다. 명령어는 주어진 디렉토리나 파일이 사용하고 있는 inode 수를 출력합니다

 

반응형

'INFRA > LINUX' 카테고리의 다른 글

Docker에 대해서  (0) 2023.06.23
리눅스 명령어2  (0) 2023.06.22
리눅스 메모리에 대하여  (0) 2023.06.20
core dump란  (0) 2023.06.19
GPG key(PGP)  (2) 2023.06.16