検索
ホームページシステムチュートリアルLinuxLinux システムのファイル メタデータ: inode の詳細な説明

Linux システムのファイル メタデータ: inode の詳細な説明

Feb 10, 2024 am 09:09 AM
linuxLinuxチュートリアルLinuxシステムLinuxコマンドシェルスクリプト埋め込みLinuxLinux を始めるLinux学習

Inode は Linux システムの重要なデータ構造であり、ファイルの種類、サイズ、権限、タイムスタンプ、リンク数、データ ブロックの場所などのファイル メタデータを保存するために使用されます。 inode はファイル システムのコア コンポーネントであり、ファイルの作成、削除、変更、検索などの操作に使用できます。この記事では、inodeの番号付け、割り当て、解放、検索、インデックス付けなど、inodeの原理や特徴を紹介し、使用例や注意点などを紹介します。

ファイル名 -> iノード -> デバイスブロック

Linux システムのファイル メタデータ: inode の詳細な説明

1. i ノードとは何ですか?

inode を理解するには、ファイル ストレージから始める必要があります。

ファイルはハードディスクに保存されており、ハードディスクの最小の記憶単位を「セクタ」といいます。各セクターには 512 バイト (0.5KB に相当) が格納されます。

オペレーティング システムはハードディスクを読み取る際、セクターごとに読み取るのではなく、効率があまりにも悪いため、複数のセクターを一度に連続して読み取ります。つまり、一度に 1 つの「ブロック」を読み取ります。 。複数のセクターから構成されるこの「ブロック」がファイルアクセスの最小単位です。 「ブロック」の最も一般的なサイズは 4KB です。つまり、8 つの連続したセクターがブロックを形成します。

ファイル データは「ブロック」に保存されるため、ファイルの作成者、ファイルの作成日、ファイルのサイズなどのファイルのメタ情報を保存する場所も見つける必要があります。ファイルなどファイルのメタ情報を格納するこの領域はinodeと呼ばれ、中国語訳は「インデックスノード」です。

2. inode の内容

inode には、ファイルのメタ情報、具体的には次の内容が含まれます:

* ファイル内のバイト数

* ファイル所有者のユーザー ID

* ファイルのグループ ID

* ファイルの読み取り、書き込み、および実行の権限

* ファイルには 3 つのタイムスタンプがあります。ctime は i ノードが最後に変更された時刻を指し、mtime はファイルの内容が最後に変更された時刻を指します。atime はファイルが最後に開かれた時刻を指します。

* リンクの数、つまり、この i ノードを指すファイル名の数

* ファイル データ ブロックの場所

stat コマンドを使用して、特定のファイルの i ノード情報を表示できます。

stat example.txt

つまり、ファイル名を除くすべてのファイル情報は i ノードに保存されます。ファイル名がない理由については、以下で詳しく説明します。

3. i ノードのサイズ

Inode はハードディスクの容量も消費するため、ハードディスクがフォーマットされると、オペレーティング システムは自動的にハードディスクを 2 つの領域に分割します。 1 つはファイルデータを格納するデータ領域であり、もう 1 つは inode に含まれる情報を格納する inode 領域 (inode テーブル) です。

各 inode ノードのサイズは通常 128 バイトまたは 256 バイトです。 inode ノードの合計数はフォーマット中に指定され、通常は 1KB ごとまたは 2KB ごとに 1 つの i ノードが設定されます。 1 GB のハードディスクで、各 i ノードのサイズが 128 バイトで、1 KB ごとに 1 つの i ノードが設定されていると仮定すると、inode テーブルのサイズは 128 MB に達し、ハードディスク全体の 12.8% を占めます。

各ハードディスク パーティション内の i ノードの合計数と使用されている数を表示するには、df コマンドを使用できます。

df -i

各 i ノード ノードのサイズを表示するには、次のコマンドを使用できます:

sudo dumpe2fs -h /dev/hda | grep “Inode サイズ”

各ファイルには i ノードが必要なため、i ノードが使い果たされていても、ハードディスクがまだいっぱいになっていない場合があります。現時点では、ハード ドライブ上に新しいファイルを作成することはできません。

4. i ノード番号

各 i ノードには番号があり、オペレーティング システムはその i ノード番号を使用してさまざまなファイルを識別します。

ここで繰り返しておきますが、Unix/Linux システムは内部的にファイル名を使用せず、ファイルを識別するために i ノード番号を使用します。システムにとって、ファイル名は識別を容易にするための inode 番号のエイリアスまたはニックネームにすぎません。表面的には、ユーザーはファイル名でファイルを開きます。実際、システム内のプロセスは 3 つのステップに分かれています: まず、システムはファイル名に対応する i ノード番号を見つけます。次に、inode 番号を通じて i ノード情報を取得します。最後に、inode 情報に基づいて、ファイルデータが配置されているブロックにアクセスし、データを読み取ります。

ls -i コマンドを使用して、ファイル名に対応する i ノード番号を確認します:

ls -i example.txt

5. ディレクトリ ファイル

Unix/Linux システムでは、ディレクトリもファイルの一種です。ディレクトリを開くということは、実際にはディレクトリ ファイルを開くことを意味します。

ディレクトリ ファイルの構造は非常に単純で、一連のディレクトリ エントリ (dirent) のリストです。各ディレクトリ エントリは、含まれるファイルのファイル名と、ファイル名に対応する i ノード番号の 2 つの部分で構成されます。

ls コマンドは、ディレクトリ ファイル内のすべてのファイル名のみをリストします:

ls /etc

ls -i コマンドは、ディレクトリ ファイル全体、つまりファイル名と i ノード番号をリストします。

ls -i /etc

ファイルの詳細情報を表示したい場合は、inode ノードにアクセスし、inode 番号に従って情報を読み取る必要があります。 ls -l コマンドは、ファイルに関する詳細情報を一覧表示します。

ls -l /etc

6. ハードリンク

一般に、ファイル名とinode番号は「1対1」の関係にあり、各inode番号がファイル名に対応します。ただし、Unix/Linux システムでは、複数のファイル名が同じ i ノード番号を指すことができます。これは、同じコンテンツに異なるファイル名でアクセスできることを意味します。ファイル コンテンツを変更すると、すべてのファイル名に影響します。ただし、1 つのファイル名を削除しても、別のファイル名へのアクセスには影響しません。この状況は「ハードリンク」と呼ばれます。

ln コマンドはハード リンクを作成できます:

ln ソース ファイル ターゲット ファイル

上記のコマンドを実行すると、ソース ファイルとターゲット ファイルの i ノード番号は同じになり、同じ i ノードを指します。 iノード情報には「リンク数」という項目があり、そのinodeを指すファイル名の総数が記録されており、この時点で1ずつ増えます。逆に、ファイル名を削除すると、inode ノード内の「リンクの数」が 1 つ減ります。この値が 0 に減少すると、この i ノードを指すファイル名が存在しないことが示され、システムは i ノード番号とそれに対応するブロック領域をリサイクルします。

ところで、ディレクトリファイルの「リンク数」について話しましょう。ディレクトリを作成すると、デフォルトで「.」と「..」の 2 つのディレクトリ エントリが生成されます。前者の i ノード番号は、カレント ディレクトリの i ノード番号であり、カレント ディレクトリの「ハード リンク」に相当します。後者の i ノード番号は、カレント ディレクトリの親ディレクトリの i ノード番号です。親ディレクトリの「ハードリンク」に相当します。したがって、ディレクトリの「ハード リンク」の総数は、常に 2 にそのサブディレクトリ (隠しディレクトリを含む) の総数を加えたものと等しくなります。ここでの 2 は、親ディレクトリの「ハード リンク」と「ハード リンク」です。現在のディレクトリのリンク」。

7. ソフトリンク

ハード リンクに加えて、特殊なケースがあります。ファイル A とファイル B の i ノード番号は異なりますが、ファイル A の内容はファイル B のパスになります。ファイル A を読み取ると、システムは訪問者を自動的にファイル B に誘導します。したがって、どのファイルを開いても、最終的にはファイル B が読み取られます。このとき、ファイルAはファイルBの「ソフトリンク」または「シンボリックリンク」と呼ばれます。

これは、ファイル A がファイル B に依存して存在することを意味します。ファイル B が削除された場合、ファイル A を開くときに、「そのようなファイルまたはディレクトリはありません」というエラーが報告されます。これがソフト リンクとハード リンクの最大の違いです。ファイル A は、ファイル B の i ノード番号ではなく、ファイル B のファイル名を指します。その結果、ファイル B の i ノード「リンク番号」は変わりません。

ln -s コマンドはソフト リンクを作成できます。

ln -s ソース ファイルまたはディレクトリ ターゲット ファイルまたはディレクトリ

8. inode の特別な機能

inode 番号はファイル名から分離されているため、このメカニズムでは Unix/Linux システムに特有の現象が発生します。

1. ファイル名に特殊文字が含まれており、正常に削除できない場合があります。このとき、inodeノードを直接削除することでファイルを削除する役割を果たすことができます。

2. ファイルの移動やファイル名の変更はファイル名を変更するだけで、inode 番号には影響しません。

3. ファイルを開いた後、システムは i ノード番号に基づいてファイルを識別し、ファイル名は考慮されなくなります。したがって、一般に、システムは inode 番号からファイル名を学習できません。

ポイント3により、ソフトウェアの更新が簡単になり、ソフトウェアを終了したり、再起動したりすることなく更新できます。システムはファイル名ではなく i ノード番号によって実行中のファイルを識別するためです。更新すると、ファイルの新しいバージョンによって同じファイル名を持つ新しい i ノードが生成されますが、これは実行中のファイルには影響しません。次回このソフトウェアを実行すると、ファイル名は自動的にファイルの新しいバージョンを指すようになり、古いバージョンのファイルの i ノードがリサイクルされます。

9つの実際的な問題

低構成 (メモリとハード ディスクが少ない) の Linux サーバーの /data パーティションにファイルを作成すると、ディスク領域が不足しているというメッセージが表示されます。df -h コマンドを使用してディスクの使用状況を確認し、 /data パーティションは 66% のみが使用されており、残りのスペースはまだ 12G あるため、この問題が発生しないのは当然です。その後、df -i を使用して /data パーティションのインデックス ノード (inode) を確認したところ、それがいっぱい (Iused=100%) であることがわかり、システムが新しいディレクトリとファイルを作成できなくなりました。

理由を見つけてください:

/data/cache ディレクトリには非常に多数の小さなバイトのキャッシュ ファイルがあり、多くのブロックではなく、多数の i ノードを占有します。

###解決:### 1. /data/cache ディレクトリ内のいくつかのファイルを削除し、/data パーティション内のいくつかの i ノードを解放します。

2. ソフト接続を使用して、空きパーティション /opt の newcache ディレクトリを /data/cache に接続し、/opt パーティションの i ノードを使用して、/data パーティションの i ノード不足の問題を軽減します。
ln -s /opt/newcache /data/cache

この記事を通じて、ファイルの管理と操作に使用できる i ノードの原理と特性を理解しました。実際のニーズに基づいて適切なファイル システムを選択し、i ノードの枯渇の回避、i ノードの状態の定期的なチェック、ハード リンクまたはソフト リンクの使用などのいくつかの基本原則に従う必要があります。 inode は Linux システムの最も基本的な概念の 1 つで、ファイルを抽象化してカプセル化することができ、ファイル システムのパフォーマンスと信頼性も向上させることができます。この記事があなたにとって有益であり、インスピレーションとなることを願っています。

以上がLinux システムのファイル メタデータ: inode の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事は良许Linux教程网で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
Linuxソフトウェアの未来:FlatpakとSnapはネイティブデスクトップアプリを置き換えますか?Linuxソフトウェアの未来:FlatpakとSnapはネイティブデスクトップアプリを置き換えますか?Apr 25, 2025 am 09:10 AM

Linuxソフトウェア分布は、各分布のエコシステムに深く染み込んでおり、DEBやRPMなどのネイティブ形式に依存していました。 ただし、フラットパックとスナップが出現し、アプリケーションパッケージへの普遍的なアプローチが約束されています。 この記事試験

LinuxとWindowsがデバイスドライバーを処理する方法の違いは何ですか?LinuxとWindowsがデバイスドライバーを処理する方法の違いは何ですか?Apr 25, 2025 am 12:13 AM

デバイスドライバーの取り扱いにおけるLinuxとWindowsの違いは、主にドライバー管理と開発環境の柔軟性に反映されています。 1。Linuxはモジュラー設計を採用し、ドライバーを動的にロードしてアンインストールできます。開発者は、カーネルメカニズムを深く理解する必要があります。 2。WindowsはMicrosoftエコシステムに依存しており、ドライバーはWDKを通じて開発して署名および認定される必要があります。開発は比較的複雑ですが、システムの安定性とセキュリティを保証します。

LinuxとWindowsのセキュリティモデルを比較対照します。LinuxとWindowsのセキュリティモデルを比較対照します。Apr 24, 2025 am 12:03 AM

LinuxとWindowsのセキュリティモデルには、それぞれ独自の利点があります。 Linuxは、柔軟性とカスタマイズ可能性を提供し、ユーザーの権限、ファイルシステム許可、Selinux/Apparmorを通じてセキュリティを可能にします。 Windowsはユーザーフレンドリーに焦点を当てており、WindowsDefender、UAC、Firewall、BitLockerに依存してセキュリティを確保しています。

ハードウェアの互換性は、LinuxとWindowsの間でどのように異なりますか?ハードウェアの互換性は、LinuxとWindowsの間でどのように異なりますか?Apr 23, 2025 am 12:15 AM

LinuxとWindowsはハードウェアの互換性が異なります。Windowsには広範なドライバーサポートがあり、Linuxはコミュニティとベンダーに依存します。 Linux互換性の問題を解決するために、RTL818888EUドライバーリポジトリのクローニング、コンパイル、インストールなど、ドライバーを手動でコンパイルできます。 Windowsユーザーは、パフォーマンスを最適化するためにドライバーを管理する必要があります。

LinuxとWindowsの間の仮想化サポートの違いは何ですか?LinuxとWindowsの間の仮想化サポートの違いは何ですか?Apr 22, 2025 pm 06:09 PM

仮想化サポートのLinuxとWindowsの主な違いは次のとおりです。1)LinuxはKVMとXenを提供し、優れたパフォーマンスと柔軟性を備えており、高いカスタマイズ環境に適しています。 2)Windowsは、友好的なインターフェイスを備えたHyper-Vを介した仮想化をサポートし、Microsoftソフトウェアに依存する企業に適したMicrosoft Ecosystemと密接に統合されています。

Linuxシステム管理者の主なタスクは何ですか?Linuxシステム管理者の主なタスクは何ですか?Apr 19, 2025 am 12:23 AM

Linuxシステム管理者の主なタスクには、システムの監視とパフォーマンスチューニング、ユーザー管理、ソフトウェアパッケージ管理、セキュリティ管理とバックアップ、トラブルシューティングと解像度、パフォーマンスの最適化、ベストプラクティスが含まれます。 1. TOP、HTOP、その他のツールを使用して、システムのパフォーマンスを監視し、チューニングします。 2。ユーザーADDコマンドおよびその他のコマンドを介して、ユーザーアカウントとアクセス許可を管理します。 3. APTとYUMを使用してソフトウェアパッケージを管理し、システムの更新とセキュリティを確保します。 4.ファイアウォールを構成し、ログを監視し、データバックアップを実行して、システムセキュリティを確保します。 5.ログ分析とツールの使用を通じてトラブルシューティングと解決。 6.カーネルパラメーターとアプリケーションの構成を最適化し、ベストプラクティスに従ってシステムのパフォーマンスと安定性を向上させます。

Linuxを学ぶのは難しいですか?Linuxを学ぶのは難しいですか?Apr 18, 2025 am 12:23 AM

Linuxの学習は難しくありません。 1.Linuxは、UNIXに基づいたオープンソースオペレーティングシステムであり、サーバー、組み込みシステム、およびパーソナルコンピューターで広く使用されています。 2。ファイルシステムと許可管理を理解することが重要です。ファイルシステムは階層的であり、許可には読み取り、書き込み、実行が含まれます。 3。APTやDNFなどのパッケージ管理システムは、ソフトウェア管理を便利にします。 4。プロセス管理は、PSおよびTOPコマンドを通じて実装されます。 5. MKDIR、CD、Touch、Nanoなどの基本的なコマンドから学習を開始し、シェルスクリプトやテキスト処理などの高度な使用法を試してください。 6.許可問題などの一般的なエラーは、SudoとChmodを通じて解決できます。 7.パフォーマンスの最適化の提案には、HTOPを使用してリソースを監視すること、不要なファイルのクリーニング、SYの使用が含まれます

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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、