리눅스에서 i 노드는 무엇입니까?

WBOY
풀어 주다: 2022-06-28 17:23:19
원래의
4789명이 탐색했습니다.

Linux에서 i-node는 64바이트 길이의 테이블입니다. i-node에는 파일 크기, 파일 소유자, 파일 액세스 권한 방법, 파일이 일반 파일인지 디렉터리 파일인지 여부 등 파일에 대한 정보가 포함되어 있습니다. 혹은 특수 파일 등 i-node에서 가장 중요한 항목은 디스크 주소 테이블이다.

리눅스에서 i 노드는 무엇입니까?

이 튜토리얼의 운영 환경: linux7.3 시스템, Dell G3 컴퓨터.

Linux의 i 노드

i 노드는 파일 크기, 파일 소유자, 파일 액세스 권한 방법, 파일이 일반 파일인지 디렉터리 파일인지 또는 특수 파일인지 여부 등 파일에 대한 정보를 포함하는 64바이트 길이의 테이블입니다. 서류 등

Linux 파일 시스템은 Linux 시스템의 핵심으로 디렉터리와 파일의 계층 구조를 제공합니다. 파일 시스템은 디스크 공간을 블록이라고 하는 1024바이트 그룹으로 나눕니다(SCOXENIX와 같은 512바이트 블록도 있음). 0부터 전체 디스크의 최대 블록 수까지 번호가 지정됩니다.

모든 블록은 네 부분으로 나눌 수 있습니다. 블록 0은 파일 시스템에서 사용되지 않는 블록이며, 블록 1은 디스크 크기를 포함한 많은 정보를 포함합니다. 전체 블록의 다른 두 부분의 크기. 블록 2부터 시작하는 i-노드 테이블은 i-노드를 포함합니다. 테이블의 블록 수는 가변적이며 이에 대해서는 나중에 설명합니다. i-노드 테이블 다음에는 파일 내용을 저장하는 데 사용할 수 있는 여유 저장 블록(데이터 저장 블록)이 있습니다.

파일의 논리적 구조와 물리적 구조는 매우 다릅니다. 논리적 구조는 사용자가 cat 명령을 입력한 후 보게 되는 파일입니다. 물리적 구조는 파일이 실제로 디스크에 저장되는 방식입니다. 사용자는 자신의 파일이 프론티어 문자 스트림이라고 생각하지만 실제로 파일은 프론티어 방식으로 디스크에 저장되지 않을 수 있습니다. 한 블록보다 긴 파일은 일반적으로 디스크에 분산되어 저장됩니다. 그러나 사용자가 파일에 액세스하면 Linux 파일 시스템은 각 블록을 올바른 순서로 꺼내 사용자에게 파일의 논리적 구조를 제공합니다.

물론 Linux 시스템 어딘가에는 물리적 구조를 논리적 구조로 변환하는 방법을 파일 시스템에 알려주는 테이블이 있어야 합니다. 여기에는 i 노드가 포함됩니다.

i 노드는 파일 크기, 파일 소유자, 파일 액세스 권한 방법, 파일이 일반 파일인지, 디렉터리 파일인지, 특수 파일인지 등의 파일에 대한 정보를 포함하는 64바이트 길이의 테이블입니다.. i-node에서 가장 중요한 항목은 디스크 주소 테이블이다.

이 테이블에는 13개의 블록 번호가 있습니다. 처음 10개의 블록 번호는 파일의 처음 10개 블록의 저장 주소입니다. 이 10개의 블록 번호는 최대 10개 블록 길이의 파일의 논리적 구조를 제공할 수 있습니다. 파일은 디스크 주소 테이블에 나타나는 블록 번호 순서대로 해당 블록을 얻습니다. 파일이 10블록보다 길면 어떻게 되나요? 디스크 주소 테이블의 11번째 항목은 블록 번호를 제공합니다. 이 블록 번호가 가리키는 블록에는 지금까지 266블록보다 긴 파일이 포함되어 있습니다. 272384바이트). 파일이 266개 블록보다 큰 경우 디스크 주소 테이블의 항목 12는 블록 번호를 제공합니다. 이 블록 번호가 가리키는 블록에는 256개의 블록 번호가 각각 블록을 가리키며 블록에는 256개가 포함됩니다. 블록 번호, 이 블록 번호는 파일의 내용을 검색하는 데 사용됩니다. 디스크 주소 항목 13의 인덱스 주소 지정 방법은 간접 인덱스 수준이 한 단계 더 있다는 점을 제외하면 항목 12와 유사합니다.

이렇게 하면 Linux 시스템에서 파일의 최대 길이는 16842762블록, 즉 17246988288바이트입니다. 다행히 Linux 시스템에서는 파일의 최대 길이에 보다 실용적인 제한(일반적으로 1~2MB)을 추가했습니다. ), 사용자가 실수로 전체 디스크 영역의 모든 블록을 사용하는 파일을 생성할 수 없도록 합니다.

inode

inode에 관해서라면 먼저 하드 드라이브의 전체적인 구조를 소개해야 합니다. 하드 디스크에는 여러 개의 하드 디스크 플래터가 있습니다. 각 하드 디스크 플래터에는 읽고 쓸 수 있는 자기 헤드(헤드)가 있습니다. 이 헤드가 고정되고 하드 디스크 플래터가 한 번 회전하면 트랙이 따라갑니다. (트랙)입니다. 하드 디스크에 있는 모든 플래터의 동일한 트랙 번호 집합을 실린더라고 합니다. 각 트랙은 여러 영역으로 나뉘며 각 영역을 섹터라고 합니다. 섹터는 하드 디스크의 최소 저장 물리적 수량으로, 섹터의 저장 용량은 약 512바이트(약 0.5K)입니다.

하드 드라이브의 일반적인 구조를 알아본 후, 하드 드라이브를 분할하는 방법에 대해 이야기해 보겠습니다. 하드디스크 파티셔닝을 위한 가장 작은 단위는 자기칼럼이다. 파티셔닝이 완료되면 자연스럽게 포맷된다. Linux에서 포맷할 때 Block과 inode를 고려해야 합니다. Block은 디스크가 기록할 수 있는 가장 작은 단위이므로 일반적으로 크기는 4K와 같이 n*512Bytes입니다.

그럼 inode란 무엇일까요? Block은 파일의 내용을 기록하는 영역이고, inode는 파일의 속성과 Block이 위치한 정보를 기록하는 영역입니다. 따라서 각 파일은 inode를 차지합니다. Linux 시스템이 파일을 찾으려면 먼저 inode 테이블을 검색하여 파일의 속성과 데이터 저장 위치를 찾은 다음 데이터가 저장되어 있는 블록을 검색하여 데이터를 검색합니다. inode 수는 처음에 설정됩니다. 설정 방법은 일반적으로 "하드 디스크 크기/1 용량"입니다. 예를 들어 블록이 지금 4K로 설정되어 있으면 용량이 더 큽니다. 약 8K로 설정할 수 있습니다. 따라서 1GB 하드디스크를 8K개의 아이노드로 나누면 131072개의 아이노드가 된다. inode의 크기는 128Byte입니다. 이러한 방식으로 파티션이 파일 시스템으로 포맷된 후에는 기본적으로 두 개의 큰 블록(inode 테이블과 데이터 영역)이 있고 하나는 데이터를 기록하는 데 사용된다는 것을 분명히 알 수 있습니다. 파일의 속성 정보는 파일과 함께 저장된 블록 블록을 사용하여 파일의 내용을 기록합니다.

파일 생성 후 inode와 블록이 동시에 생성됩니다. inode는 파일의 속성 정보를 저장하지만 파일 이름은 포함하지 않으며 파일이 있는 블록의 주소에 대한 포인터를 저장합니다. 해당 데이터를 찾으면 블록은 파일의 데이터를 저장합니다. 각 블록은 최대 하나의 파일을 저장할 수 있으며 한 블록을 저장할 수 없으면 다음 블록이 채워집니다.

Linux에서는 파일 이름, 파일 속성, 파일 내용이 별도로 저장됩니다. 파일 이름은 디렉토리 항목(예: dentry)에 저장되고 파일 속성은 inode에 저장됩니다. 128Bity 디스크 공간을 차지합니다. 파일 내용은 데이터 블록에 저장됩니다.

mkfs.ext3 -b를 사용하여 블록 크기를 설정할 수 있습니다. 각 블록은 최대 하나의 파일을 저장할 수 있으므로 일반적으로 이 서버가 저장 용도로 사용되는 경우 블록 크기 설정은 당사 서버의 애플리케이션 설정을 기반으로 해야 합니다. 일부 작은 파일의 경우 공간 낭비를 피하기 위해 블록 크기를 더 작게 설정할 수 있습니다. 큰 데이터가 저장되면 블록 크기를 더 크게 설정해야 하며 이로 인해 디스크 블록을 읽는 횟수도 줄어들 수 있습니다. inode의 기록 부담.

블록이 클수록 대용량 파일을 저장하는 파일 시스템에 적합한 아이노드 수가 적고, 블록이 작을수록 작은 파일을 많이 저장하는 파일 시스템에 적합한 아이노드가 늘어납니다.

시스템이 실행 중일 때 inode와 블록은 수정 후 메모리와 디스크를 동기화합니다. ls -li를 사용하여 나열하는 내용은 메모리의 임시 저장소이므로 시스템이 비정상적으로 종료되면 블록과 디스크가 발생하는 경우가 있습니다. inode가 동기화되지 않은 문제입니다.

추천 학습:Linux 비디오 튜토리얼

위 내용은 리눅스에서 i 노드는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!