찾다
시스템 튜토리얼리눅스Linux의 inode 레코드

Linux의 inode 레코드

Feb 11, 2024 am 09:51 AM
linux리눅스 튜토리얼리눅스 시스템리눅스 명령쉘 스크립트임베디드리눅스리눅스 시작하기리눅스 학습

파일은 하드 드라이브에 저장됩니다.

하드디스크의 가장 작은 저장 단위를 섹터라고 합니다.

각 섹터는 512바이트(0.5kb에 해당)를 저장합니다.

운영 체제가 하드 디스크를 읽을 때 섹터별로 읽지 않으므로 비효율적입니다.

대신 여러 섹터를 연속적으로 읽습니다. 즉, 한 번에 한 블록씩 읽습니다.

이 "블록"은 여러 섹터로 구성되며 파일 액세스의 가장 작은 단위입니다.

블록 크기는 가장 일반적인 4kb로, 8개의 섹터가 한 행으로 모여 블록을 형성합니다.

Linux의 inode 레코드

파일 데이터는 "블록"에 저장되므로 당연히 파일 작성자, 파일 생성 날짜, 파일 크기 등 파일의 메타 정보를 저장할 장소도 찾아야 합니다. , 등. 파일 메타 정보를 저장하는 이 영역을 inode라고 하며 중국어로 번역하면 "index node"입니다.

inode 콘텐츠

inode에는 파일의 메타 정보, 특히 다음 내용이 포함되어 있습니다.

* 파일의 바이트 수

* 파일 소유자의 사용자 ID

* 파일의 그룹 ID

* 파일 읽기, 쓰기 및 실행 권한

* 파일에는 세 가지 타임스탬프가 있습니다. ctime은 inode가 마지막으로 변경된 시간을 나타내고, mtime은 파일 내용이 마지막으로 변경된 시간을 나타내며, atime은 파일이 마지막으로 열린 시간을 나타냅니다.

* 링크 수, 즉 이 inode를 가리키는 파일 이름의 수

* 파일 데이터 블록의 위치

stat 명령을 사용하여 특정 파일의 inode 정보를 볼 수 있습니다.

으아악

간단히 말하면 파일명을 제외한 모든 파일 정보는 아이노드에 저장됩니다. 파일명이 없는 이유에 대해서는 아래에서 자세한 설명을 하도록 하겠습니다.
Linux의 inode 레코드

Inode 크기

Inode도 하드디스크 공간을 소모하기 때문에 하드디스크를 포맷하면 운영체제가 자동으로 하드디스크를 두 영역으로 나눈다. 하나는 파일 데이터를 저장하는 데이터 영역이고, 다른 하나는 아이노드에 포함된 정보를 저장하는 아이노드 영역(아이노드 테이블)입니다.

각 inode 노드의 크기는 일반적으로 128바이트 또는 256바이트입니다. inode 노드의 총 개수는 포맷 중에 제공되며 일반적으로 1KB 또는 2KB마다 하나의 inode가 설정됩니다. 1GB 하드 디스크에서 각 inode 노드의 크기가 128바이트이고, 1KB마다 하나의 inode가 설정된다고 가정하면, inode 테이블의 크기는 128MB에 도달하여 전체 하드 디스크의 12.8%를 차지합니다.

총 inode 수와 각 하드 디스크 파티션의 사용된 수를 보려면 df 명령을 사용할 수 있습니다.

으아악

각 inode 노드의 크기를 보려면 다음 명령을 사용할 수 있습니다.

으아악

각 파일마다 아이노드가 있어야 하기 때문에 아이노드를 다 써도 하드디스크가 꽉 차지 않는 경우가 발생할 수 있습니다. 현재로서는 하드 드라이브에 새 파일을 생성할 수 없습니다.

inode 번호

Linux의 inode 레코드

각 inode에는 번호가 있으며 운영 체제는 inode 번호를 사용하여 다른 파일을 식별합니다.

Unix/Linux 시스템은 내부적으로 파일 이름을 사용하지 않지만 파일을 식별하기 위해 inode 번호를 사용한다는 점을 여기서 반복할 가치가 있습니다. 시스템의 경우 파일 이름은 쉽게 식별할 수 있도록 inode 번호에 대한 별칭 또는 별명입니다. 표면적으로 사용자는 파일 이름으로 파일을 엽니다. 실제로 시스템 내 프로세스는 세 단계로 나뉩니다. 먼저 시스템은 파일 이름에 해당하는 inode 번호를 찾습니다. 두 번째는 inode 번호를 통해 inode 정보를 얻습니다. 파일 데이터가 있는 블록을 찾아서 데이터를 읽어옵니다.

ls -i 명령을 사용하여 파일 이름에 해당하는 inode 번호를 확인하세요.

으아악

디렉터리 파일

Unix/Linux 시스템에서는 디렉토리도 일종의 파일입니다. 디렉토리를 여는 것은 실제로 디렉토리 파일을 여는 것을 의미합니다.

디렉토리 파일의 구조는 매우 간단하며 일련의 디렉터리 항목(dirent) 목록입니다. 각 디렉토리 항목은 포함된 파일의 파일 이름과 파일 이름에 해당하는 inode 번호의 두 부분으로 구성됩니다.

ls 명령은 디렉터리 파일의 모든 파일 이름만 나열합니다.

으아악

ls -i 명령은 전체 디렉토리 파일(예: 파일 이름 및 inode 번호)을 나열합니다.

으아악

파일의 자세한 정보를 보려면 inode 노드에 접속하여 inode 번호에 따라 정보를 읽어야 합니다. ls -l 명령은 파일에 대한 자세한 정보를 나열합니다.

으아악

하드 링크

일반적으로 파일 이름과 inode 번호는 "일대일 대응" 관계를 가지며, 각 inode 번호는 파일 이름에 해당합니다. 그러나 Unix/Linux 시스템에서는 여러 파일 이름이 동일한 inode 번호를 가리키는 것을 허용합니다. 이는 동일한 콘텐츠가 다른 파일 이름으로 액세스될 수 있음을 의미합니다. 파일 콘텐츠를 수정하면 모든 파일 이름에 영향을 주지만, 하나의 파일 이름을 삭제해도 다른 파일 이름에 대한 액세스에는 영향이 없습니다. 이러한 상황을 "하드 링크"라고 합니다.

ln 명령은 하드 링크를 생성할 수 있습니다:

ln 源文件 目标文件

运 行上面这条命令以后,源文件与目标文件的inode号码相同,都指向同一个inode。inode信息中有一项叫做”链接数”,记录指向该inode的文 件名总数,这时就会增加1。反过来,删除一个文件名,就会使得inode节点中的”链接数”减1。当这个值减到0,表明没有文件名指向这个inode,系 统就会回收这个inode号码,以及其所对应block区域。

这里顺便说一下目录文件的”链接数”。创建目录时, 默认会生成两个目录项:”.”和”..”。前者的inode号码就是当前目录的inode号码,等同于当前目录的”硬链接”;后者的inode号码就是当 前目录的父目录的inode号码,等同于父目录的”硬链接”。所以,任何一个目录的”硬链接”总数,总是等于2加上它的子目录总数(含隐藏目录),这里的 2是父目录对其的“硬链接”和当前目录下的”.硬链接“。

Linux의 inode 레코드

软链接

除了硬链接以外,还有 一种特殊情况。文件A和文件B的inode号码虽然不一样,但是文件A的内容是文件B的路径。读取文件A时,系统会自动将访问者导向文件B。因此,无论打 开哪一个文件,最终读取的都是文件B。这时,文件A就称为文件B的”软链接”(soft link)或者”符号链接(symbolic link)。

这 意味着,文件A依赖于文件B而存在,如果删除了文件B,打开文件A就会报错:”No such file or directory”。这是软链接与硬链接最大的不同:文件A指向文件B的文件名,而不是文件B的inode号码,文件B的inode”链接数”不会因此 发生变化。

ln -s命令可以创建软链接。

ln -s 源文文件或目录 目标文件或目录

inode的特殊作用

由于inode号码与文件名分离,这种机制导致了一些Unix/Linux系统特有的现象。

\1. 有时,文件名包含特殊字符,无法正常删除。这时,直接删除inode节点,就能起到删除文件的作用。

\2. 移动文件或重命名文件,只是改变文件名,不影响inode号码。

\3. 打开一个文件以后,系统就以inode号码来识别这个文件,不再考虑文件名。因此,通常来说,系统无法从inode号码得知文件名。

第3点使得软件更新变得简单,可以在不关闭软件的情况下进行更新,不需要重启。因为系统通过inode号码,识别运行中的文件,不通过文件名。更新的时 候,新版文件以同样的文件名,生成一个新的inode,不会影响到运行中的文件。等到下一次运行这个软件的时候,文件名就自动指向新版文件,旧版文件的 inode则被回收。

实际问题

在一台配置较低的Linux服务器(内存、硬盘比较小)的/data分区内创建文件时,系统提示磁盘空间不足,用df -h命令查看了一下磁盘使用情况,发现/data分区只使用了66%,还有12G的剩余空间,按理说不会出现这种问题。 后来用df -i查看了一下/data分区的索引节点(inode),发现已经用满(IUsed=100%),导致系统无法创建新目录和文件。

查找原因:

/data/cache目录中存在数量非常多的小字节缓存文件,占用的Block不多,但是占用了大量的inode。

解决方案:

1、删除/data/cache目录中的部分文件,释放出/data分区的一部分inode。

2、用软连接将空闲分区/opt中的newcache目录连接到/data/cache,使用/opt分区的inode来缓解/data分区inode不足的问题:

ln -s /opt/newcache /data/cache

위 내용은 Linux의 inode 레코드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 良许Linux教程网에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
Linux는 실제로 좋은 것은 무엇입니까?Linux는 실제로 좋은 것은 무엇입니까?Apr 12, 2025 am 12:20 AM

Linux는 서버, 개발 환경 및 임베디드 시스템에 적합합니다. 1. 서버 운영 체제로서 Linux는 안정적이고 효율적이며 종종 고 대전성 애플리케이션을 배포하는 데 사용됩니다. 2. 개발 환경으로서 Linux는 효율적인 명령 줄 도구 및 패키지 관리 시스템을 제공하여 개발 효율성을 향상시킵니다. 3. 임베디드 시스템에서 Linux는 가볍고 사용자 정의 가능하며 자원이 제한된 환경에 적합합니다.

Linux에서 윤리적 해킹을 마스터하기위한 필수 도구 및 프레임 워크Linux에서 윤리적 해킹을 마스터하기위한 필수 도구 및 프레임 워크Apr 11, 2025 am 09:11 AM

소개 : Linux 기반의 윤리적 해킹으로 디지털 프론티어 보안 점점 더 상호 연결된 세상에서 사이버 보안이 가장 중요합니다. 윤리적 해킹 및 침투 테스트는 취약점을 적극적으로 식별하고 완화하는 데 필수적입니다.

Linux 기본 사항을 배우는 방법?Linux 기본 사항을 배우는 방법?Apr 10, 2025 am 09:32 AM

기본 Linux 학습 방법은 다음과 같습니다. 1. 파일 시스템 및 명령 줄 인터페이스 이해, 2. LS, CD, MKDIR, 3. 파일 생성 및 편집과 같은 파일 작업 배우기, 4. 파이프 라인 및 GREP 명령과 같은 고급 사용법, 5. 연습 및 탐색을 통해 지속적으로 기술을 향상시킵니다.

Linux를 가장 많이 사용하는 것은 무엇입니까?Linux를 가장 많이 사용하는 것은 무엇입니까?Apr 09, 2025 am 12:02 AM

Linux는 서버, 임베디드 시스템 및 데스크탑 환경에서 널리 사용됩니다. 1) 서버 필드에서 Linux는 안정성 및 보안으로 인해 웹 사이트, 데이터베이스 및 응용 프로그램을 호스팅하기에 이상적인 선택이되었습니다. 2) 임베디드 시스템에서 Linux는 높은 사용자 정의 및 효율성으로 인기가 있습니다. 3) 데스크탑 환경에서 Linux는 다양한 사용자의 요구를 충족시키기 위해 다양한 데스크탑 환경을 제공합니다.

리눅스의 단점은 무엇입니까?리눅스의 단점은 무엇입니까?Apr 08, 2025 am 12:01 AM

Linux의 단점에는 사용자 경험, 소프트웨어 호환성, 하드웨어 지원 및 학습 곡선이 포함됩니다. 1. 사용자 경험은 Windows 또는 MacOS만큼 친절하지 않으며 명령 줄 인터페이스에 의존합니다. 2. 소프트웨어 호환성은 다른 시스템만큼 좋지 않으며 많은 상용 소프트웨어의 기본 버전이 부족합니다. 3. 하드웨어 지원은 Windows만큼 포괄적이지 않으며 드라이버를 수동으로 컴파일 할 수 있습니다. 4. 학습 곡선은 가파르고 명령 줄 운영을 마스터하는 데 시간과 인내가 필요합니다.

Linux는 배우기가 어렵습니까?Linux는 배우기가 어렵습니까?Apr 07, 2025 am 12:01 AM

LinuxisNothardTolearn, ButtheDifficulturedsonyourbackground 및 Ggoals.forthosewithoSexperience, 특히 Command-linefamiliarity, BeginnersMayFaceAsTeeperLearneLearneCURVEBUTCANMANAGEWITHPROPERSORCES.LINUX'SOURCENATURY, BAS

Linux의 5 가지 기본 구성 요소는 무엇입니까?Linux의 5 가지 기본 구성 요소는 무엇입니까?Apr 06, 2025 am 12:05 AM

Linux의 5 가지 기본 구성 요소는 다음과 같습니다. 1. 커널, 하드웨어 리소스 관리; 2. 기능과 서비스를 제공하는 시스템 라이브러리; 3. 쉘, 사용자가 시스템과 상호 작용할 수있는 인터페이스; 4. 파일 시스템, 데이터 저장 및 구성; 5. 시스템 리소스를 사용하여 기능을 구현합니다.

우분투 홈 자동화 : 오픈 소스 도구가있는 스마트 생활 공간 구축우분투 홈 자동화 : 오픈 소스 도구가있는 스마트 생활 공간 구축Apr 05, 2025 am 09:19 AM

Smart Home에서 새로운 챕터 열기 : Ubuntu를 기반으로 한 오픈 소스 홈 자동화 시스템 Smart Home Technology는 우리가 생활 공간과 상호 작용하는 방식에 혁명을 일으켜 일상 생활에 편리함, 안전 및 에너지 효율성을 제공했습니다. 조명 및 기기의 원격 제어에서 보안 카메라 및 자동 기후 제어 모니터링에 이르기까지 Smart Home 기술은 점점 인기를 얻고 있습니다. 그러나 많은 비즈니스 스마트 홈 시스템에는 높은 비용, 개인 정보 보호 문제 및 제한성 호환성이 있습니다. 다행히 오픈 소스 소프트웨어 솔루션은 Ubuntu의 힘을 결합하여 대안을 제공하여 사용자가 사용자 정의 가능하고 비용 효율적이며 안전한 스마트 홈 생태계를 만들 수 있습니다. 이 안내서는 우분투 및 오픈 소스 도구를 사용하여 홈 자동화 시스템을 설정하는 방법을 살펴 봅니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구