it-swarm-ko.tech

수퍼 블록, 아이 노드, 덴 트리 및 파일이란 무엇입니까?

M. Tim Jones의 기사 Linux 파일 시스템의 해부학 에서 리눅스는 일반적인 객체 집합의 관점에서 모든 파일 시스템을보고이 객체는 superblock, inode, dentryfile. 단락의 나머지 부분에서 위의 내용을 설명했지만 그 설명에 익숙하지 않았습니다.

누군가 나에게이 용어를 설명해 줄 수 있습니까?

132
Sen

가장 먼저, 나는 그것이 당신의 질문의 용어 중 하나가 아니라는 것을 알고 있습니다. metadata 를 이해해야합니다. 간결하게 위키피디아에서 도난당한 메타 데이터는 데이터에 대한 데이터입니다. 즉, 메타 데이터에는 데이터에 대한 정보가 포함되어 있습니다. 예를 들어, 자동차를 소유 한 경우 자동차에 대한 정보가 있지만 자동차 자체의 일부는 아닙니다. 등록 번호, 제조사, 모델, 제조년도, 보험 정보 등과 같은 정보. 이 모든 정보를 통칭하여 메타 데이터라고합니다. Linux 및 UNIX 파일 시스템에서는 메타 데이터가 여러 수준의 조직에 존재합니다.

superblock은 기본적으로 파일 시스템 메타 데이터이며 파일 시스템 유형, 크기, 상태 및 기타 메타 데이터 구조 (메타 데이터 메타 데이터)에 대한 정보를 정의합니다. 수퍼 블록은 파일 시스템에 매우 중요하므로 각 파일 시스템에 대해 여러 개의 중복 사본에 저장됩니다. 수퍼 블록은 파일 시스템을위한 매우 "높은 수준의"메타 데이터 구조입니다. 예를 들어, 파티션의 수퍼 블록 인/var가 손상되면 운영 체제가 해당 파일 시스템 (/ var)을 마운트 할 수 없습니다. 일반적으로이 경우 수퍼 블록의 대체 백업 사본을 자동으로 선택하고 파일 시스템 복구를 시도하는 fsck를 실행해야합니다. 백업 사본 자체는 파일 시스템을 통해 분산 된 블록 그룹에 저장되며 첫 번째는 파티션 시작에서 1 블록 오프셋에 저장됩니다. 수동 복구가 필요한 경우에 중요합니다. 수동 복구 시도시 유용한 명령 dumpe2fs /dev/foo | grep -i superblock를 사용하여 ext2/ext3/ext4 수퍼 블록 백업에 대한 정보를 볼 수 있습니다. dumpe2fs 명령이 Backup superblock at 163840, Group descriptors at 163841-163841 줄을 출력한다고 가정 해 봅시다. 이 슈퍼 블록 백업을 사용하기 위해이 정보와 파일 시스템 구조에 대한 추가 지식을 사용할 수 있습니다 : /sbin/fsck.ext3 -b 163840 -B 1024 /dev/foo. 이 예제에서는 1024 바이트의 블록 크기를 가정했습니다.

inode는 파일 시스템에 존재하거나 파일 시스템에 존재하며 파일에 대한 메타 데이터를 나타냅니다. 명확하게하기 위해 Linux 또는 UNIX 시스템의 모든 객체는 파일입니다. 실제 파일, 디렉토리, 장치 등 inode에 포함 된 메타 데이터 중에서 사람이 생각하는 파일 이름이 없으므로 나중에 중요 할 것입니다. inode에는 기본적으로 소유권 (사용자, 그룹), 액세스 모드 (읽기, 쓰기, 실행 권한) 및 파일 유형에 대한 정보가 포함됩니다.

dentry는 inode 번호를 파일 이름과 연결하여 inode와 파일을 함께 보유하는 접착제입니다. 또한 치과의 사는 디렉토리 캐싱에서 역할을 수행하는 것이 가장 이상적이며, 가장 자주 사용하는 파일을보다 빨리 액세스 할 수 있도록 보관합니다. 파일 시스템 탐색은 디렉토리와 파일 간의 관계를 유지하므로 dentry의 또 다른 측면입니다.

file는 인간이 단어를 제시 할 때 일반적으로 생각하는 것 외에 논리적으로 관련된 임의의 데이터 블록 일뿐입니다. 그것들을 추적하기 위해 (위의) 모든 작업을 고려하면 비교적 무미합니다.

나는 몇 문장이 이러한 개념들에 대한 완전한 설명을 제공하지 않는다는 것을 완전히 알고 있으므로 필요할 때 언제 어디서나 추가 세부 사항을 요청하십시오.

144
Tok

파일

파일은 특정 순서로 배열 된 많은 바이트를 의미합니다. 일반적인 사람들이 파일의 내용을 부르는 것입니다. Linux는 파일을 열면 파일 객체도 작성합니다. 파일 객체는 파일이 저장된 위치 및 사용중인 프로세스에 대한 데이터를 보유합니다. 파일이 닫히면 파일 객체 (파일 데이터 자체는 아님)가 삭제됩니다.

아이 노드

Inode ( "인덱스 노드"의 약자)는 Linux가 저장하는 파일에 대한 속성입니다. 각 파일마다 하나의 inode가 있습니다 (일부 파일 시스템에서는 정보가 파일 시스템에 분산되어 있기 때문에 Linux는 자체 inode를 작성해야합니다). inode는 파일을 소유 한 사람, 파일의 크기 및 파일을 열 수있는 사람과 같은 정보를 저장합니다. 각 inode에는 파일 시스템 파티션 고유의 숫자도 포함되어 있습니다. 그것은 inode에 의해 기술 된 파일의 일련 번호와 같습니다.

치과

Dentry ( "디렉토리 항목"의 줄임말)는 Linux 커널이 디렉토리의 파일 계층을 추적하기 위해 사용하는 것입니다. 각 dentry는 inode 번호를 파일 이름과 상위 디렉토리에 맵핑합니다.

수퍼 블록

수퍼 블록은 파일 시스템의 고유 한 데이터 구조입니다 (손상을 방지하기 위해 여러 복사본이 존재하지만). 수퍼 블록은 파일 시스템에 대한 메타 데이터를 보유합니다.이 inode는 최상위 디렉토리이며 사용 된 파일 시스템 유형입니다.

50
pingswept

superblock, 인덱스 노드 (또는 inode), 디렉토리 항목 (또는 dentry), 마지막으로 = file 개체는 가상 파일 시스템 (VFS) 또는 가상 파일 시스템 스위치의 일부입니다. VFS의 목적은 클라이언트 응용 프로그램이 서로 다른 유형의 콘크리트 파일 시스템에 균일 한 방식으로 액세스 할 수 있도록하는 것입니다.

VFS에서 주요 객체의 관계

enter image description here


Inode는 Unix/Linux 파일 시스템의 데이터 구조입니다. inode는 일반 파일, 디렉토리 또는 기타 파일 시스템 객체에 대한 메타 데이터를 저장합니다. Inode는 파일과 데이터 간의 인터페이스 역할을합니다. inode는 파일이나 디렉토리 또는 다른 객체에 대한 심볼릭 링크를 나타낼 수 있습니다. 여기에는 고유 번호 (i- 번호), 이름, 날짜, 크기 및 읽기/쓰기 권한을 포함한 파일 속성 및 파일 위치에 대한 포인터가 포함됩니다. DOS/Windows 환경에서 FAT 테이블에 대응합니다.

프로그램, 서비스, 텍스트, 이미지 등은 모두 files입니다. 입력 및 출력 장치, 일반적으로 모든 장치는 시스템에 따라 files로 간주됩니다.

superblock는 파일 시스템에 대한 고급 메타 데이터의 컨테이너입니다. 수퍼 블록은 디스크 (실제로 중복성을 위해 디스크의 여러 위치)와 메모리에 존재하는 구조입니다. 파일 시스템의 관리 매개 변수 (예 : 총 블록 수, 사용 가능한 블록, 루트 색인 노드)를 정의하므로 디스크상의 파일 시스템을 처리하기위한 기초를 제공합니다.

Dentry는 파일과 Inode 간의 인터페이스입니다. 또한 치과의 사는 디렉토리 캐싱에서 역할을 수행하는 것이 가장 이상적이며, 가장 자주 사용하는 파일을보다 빨리 액세스 할 수 있도록 보관합니다.

소스

14
Premraj

간단하게 dentry와 inode는 파일이나 디렉토리의 추상화와 동일합니다. dentry와 inode의 차이점은 dentry는 디렉토리 별 작업을 용이하게하는 데 사용되고 inode는 파일 또는 디렉토리에 대한 메타 데이터의 모음 일뿐입니다. 수퍼 블록은 파일 시스템의 추상화입니다.

Linux 커널에서 struct file는 다른 많은 것 (예 : struct address_space)으로 잘못 이름이 지정되었으며 실제 "파일"(예 :/etc/passwd)의 추상화가 아닙니다. 열린 "파일"또는 디렉토리를 나타냅니다. struct file는 커널에서 sys_open에 의해 만들어 지므로 프로세스는 동일한 파일에 대해 struct file를 많이 가질 수 있습니다.

왜 치과 의사가 필요합니까? 경로 이름 (예 :/etc/passwd)에서 inode 로의 변환 속도를 높이는 데 사용됩니다. Linux 커널은 inode를 사용하여 이름이 아닌 "파일"또는 디렉토리를 조작합니다.

5
firo

이 용어는 Linux에만 국한된 것이 아니라 파일 시스템에 따라 다릅니다. 현재 Unix 및 Unix와 같은 시스템에서 사용되는 대부분의 파일 시스템은 수퍼 블록 및 inode 관용구를 정의한 원래 Unix 파일 시스템에서 파생되거나 영감을 얻습니다. 리눅스는 또한 수퍼 블록이나 아이 노드 (inode)라는 개념이없는 여러 파일 시스템을 마운트 할 수 있는데, 가장 일반적인 것은 FAT입니다. 또 다른 ZFS는 수퍼 블록을 사용하지 않고 block 버 블록을 사용합니다.

4
jlliagre