파일 시스템이 실제 파일과 이를 관리하는 데이터베이스로 구성되어 있다는 것을 기억하십니까? 이 데이터베이스는 리눅스에서 inode 가 작동하는 방식의 기본 구성 요소인 inode 테이블로 알려져 있습니다.
리눅스 Inode 란 무엇인가
Inode(인덱스 노드의 약자) 는 이 테이블의 항목입니다. 모든 파일과 디렉터리는 고유한 inode를 가집니다. 이는 다음과 같이 파일에 대한 모든 것을 설명합니다.
- 파일 유형 (예: 일반 파일, 디렉터리, 문자 장치)
- 소유자
- 그룹
- 접근 권한
- 타임스탬프: mtime(마지막 수정), ctime(마지막 속성 변경), atime(마지막 접근)
- 파일에 대한 하드 링크 수
- 파일 크기
- 파일에 할당된 블록 수
- 파일 데이터 블록에 대한 포인터 (가장 중요!)
본질적으로, i node는 파일 이름과 실제 내용을 제외한 모든 메타데이터를 저장합니다.
Inode 생성 및 할당
파일 시스템이 생성될 때 inode 를 위한 공간도 할당됩니다. 알고리즘은 디스크 볼륨 및 기타 요소를 기반으로 필요한 inode 공간의 양을 결정합니다. 이전에 디스크 공간 부족 오류를 본 적이 있을 것입니다. inode 에서도 동일한 일이 발생할 수 있지만 덜 일반적입니다. inode 가 부족하면 새 파일을 만들 수 없습니다. 데이터 저장은 데이터 블록과 데이터베이스 (inode 테이블) 모두에 의존합니다.
시스템에 남아 있는 inode 수를 확인하려면 df -i 명령을 사용하십시오. 이는 많은 수의 작은 파일을 관리하는 시스템 관리자에게 중요한 확인 사항입니다.
Inode 정보 보기
각 linux inode는 고유한 번호로 식별됩니다. 파일이 생성되면 종종 순차적으로 inode 번호가 할당됩니다. 그러나 새 파일이 이전 파일보다 더 낮은 inode 번호를 받는 것을 발견할 수 있습니다. 이는 삭제된 inode 번호가 새 파일에 재사용될 수 있기 때문에 발생합니다. inode 번호를 보려면 ls -li를 실행하십시오.
pete@icebox:~$ ls -li
140 drwxr-xr-x 2 pete pete 6 Jan 20 20:13 Desktop
141 drwxr-xr-x 2 pete pete 6 Jan 20 20:01 Documents
이 명령 출력의 첫 번째 필드가 inode 번호입니다. 또한 stat 명령을 사용하여 파일의 i node에 대한 자세한 정보를 볼 수 있습니다.
pete@icebox:~$ stat ~/Desktop/
File: ‘/home/pete/Desktop/’
Size: 6 Blocks: 0 IO Block: 4096 directory
Device: 806h/2054d Inode: 140 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 1000/ pete) Gid: ( 1000/ pete)
Access: 2016-01-20 20:13:50.647435982 -0800
Modify: 2016-01-20 20:13:06.191675843 -0800
Change: 2016-01-20 20:13:06.191675843 -0800
Birth: -
I-Node 가 데이터에 연결되는 방식
데이터는 디스크에 저장되지만 단일 연속 블록에 저장되어 있지 않을 가능성이 높습니다. 이때 inode linux 구조가 필수적입니다. Inode 는 파일의 실제 데이터 블록을 가리킵니다. 일반적인 파일 시스템 (구현은 다양함) 에서 각 inode 는 15 개의 포인터를 포함합니다. 처음 12 개 포인터는 데이터 블록을 직접 가리킵니다. 13 번째 포인터는 더 많은 포인터가 포함된 블록을 가리킵니다. 14 번째와 15 번째 포인터는 더 깊이 중첩된 포인터 블록을 가리킵니다. 이는 혼란스러워 보일 수 있지만, 이 구조 덕분에 i node는 고정된 크기를 유지하면서 다양한 크기의 파일을 참조할 수 있습니다. 작은 파일은 직접 포인터를 사용하여 빠르게 액세스할 수 있으며, 더 큰 파일은 중첩된 포인터를 통해 위치가 지정됩니다.