深い理解のinodeソフトとハードリンクとの接続

参考ルアンYifeng

リンクhttp://www.ruanyifeng.com/blog/2011/12/inode.html

何がそれをiノード?

最初からiノード、ファイルストレージを理解します。

セクター

メモリのファイルがハードディスク、ハードディスクに保存されている最小単位「セクタ」(セクター)と呼ばれます。セクタ当たりのストレージ512バイト(0.5キロバイトに相当します)。

8つのセクタのブロック

オペレーティング・システムは、効率が低すぎるように、それは、セクターを読み取らない、ハードディスクを読み取るが、セクタの使い捨て連続読取複数の、即ち、一回は、「ブロック」(ブロック)を読み出します。複数のセクタからなるこの「ブロック」は、ファイルアクセスの最小単位です。サイズ「チャンク」、最も一般的には、ブロックを形成するために、4キロバイト、すなわち8つの連続したセクタです。

ファイルのデータが「ブロック」に格納され、我々がそうで、このようなファイルの作成者、ファイル作成日、ファイルサイズなど、メタ情報ファイルを格納する場所を見つけて、しなければならないことは明らかです。このメタ情報ファイル格納領域は、iノード、の中国語の翻訳と呼ばれている「iノード。」

各ファイルは、ファイルに関連付けられた情報の一部が含まれている対応するiノードを有します。

二、iノードコンテンツ

inodeがメタ情報ファイルを含む、具体的には、以下があります。

  *ファイルのバイト数

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

  *グループのID文書

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

  *タイムスタンプのファイル、3があります:ctimeをiノードは、時間変化を意味し、ファイルのmtimeはファイルの内容が変更に時間を指し、atimeを開いているファイルを参照します。

  *ファイル名のinodeの数を指すリンクの数

  *ファイル・データ・ブロックの位置

STATコマンドは、ファイルのiノード情報を表示するために使用することができます。

  スタット、EXAMPLE.SQL

IMG

要するに、ファイル名に加えて、すべてのファイル情報は、iノード間があります。なぜいないファイル名については、以下に詳細にについて説明します。

三、iノードサイズ

iノードには、二つの領域にディスクスペースなので、ハードディスクのフォーマット、オペレーティングシステムに自動的にハードディスクを消費します。ファイルデータを格納するデータ領域と、他の領域は、iノード(inodeテーブル)であり、情報格納されたiノードが含まれています。

iノードサイズの各々、典型的には128バイトまたは256バイト。フォーマット時に通常1キロバイト2キロバイトごと、所定のまたはiノードごとに設定するためのiノードの総数は、です。1ギガバイトのハードディスクを仮定すると、iノードの各々のサイズは128バイトであり、1キロバイト各iノード、ハードドライブ全体の12.8%を占め、128メガバイトに到達するiノードテーブルのサイズを設定します。

各ハードディスクのパーティションと、すでに使用中のiノード数の合計数を確認し、あなたはdfコマンドを使用することができます。

  DF -i

IMG

iノードサイズのそれぞれは、次のコマンドを使用することができます参照してください。

  sudoのは、dumpe2fs -hは/ dev / hdaに| grepの「iノードサイズ」

IMG

各ファイルはiノードを持たなければならないので、iノードがアップに使用されているに発生することができますが、まだハードディスクがいっぱいの状況です。この時点で、あなたは、あなたのハードディスク上に新しいファイルを作成することはできません。

四、iノード番号

各ファイルの異なるinode番号を識別するために使用されるiノード番号とオペレーティングシステムを持っています。

これは、内部のUnix / Linuxシステムでは、ファイルを識別するために、iノード番号を使用して、ファイル名を使用しない、もう一度繰り返す価値があります。システムの場合、ファイル名別の名前やニックネームを簡単に識別のためだけのiノード番号。

表面には、ファイル名を介してユーザがファイルを開きます。実際には、プロセスの内部システムは、3つのステップに分けられる:最初に、システムは、ファイル名に対応するiノード番号を検索し、第二に、iノード番号によって、iノード情報を取得し、最後に、iノード情報に応じて、ここで読み出したデータファイルのデータ・ブロックを見つけます。

使用のls -iコマンドは、ファイル名に対応するiノード番号を見ることができます:

  LS -i、EXAMPLE.SQL

IMG

第五に、カタログファイル

UNIX / Linuxシステム、ディレクトリ(ディレクトリ)がファイルです。Open Directoryは、実際には、ファイルディレクトリを開きます。

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

ディレクトリ内のすべてのファイルのファイル名だけコマンドリストLS:

  lsのは/ etc

IMG

LS -iコマンドリストディレクトリ全体のファイル、ファイル名とiノード番号:

  LS -iの/ etc

IMG

あなたはファイルの詳細を表示したい場合は、iノード番号、iノードへのアクセスに基づいている必要があり、情報をお読みください。ls -lコマンドは、ファイルの内容を示しています。

  ls -lでは/ etc

IMG

これら上記の知識を理解し、我々は、ディレクトリへのアクセス権を理解することができます。カタログファイルのアクセス権(R)と書き込み権限(W)を読んで、それはディレクトリファイル自体のためです。あなただけの読み取りアクセス権を持っているので、もし、ファイルのディレクトリとiノード番号でのみファイル名だけなので、ファイル名を取得することができ、追加的な情報を得ることができない、他の情報は、iノードノードに格納されているため、およびiノードを実行するために必要なディレクトリ情報内のファイルを読み込みます許可(x)です。

第六に、ハードリンク

一般に、ファイル名とinode番号が関係「1対1」、各iノード番号は、ファイル名に対応しています。ただし、UNIX / Linuxシステムでは、複数のファイル名が同じiノード番号を指すことができます。

このことは、あなたが同じコンテンツにアクセスするために別のファイル名を使用することができ、ファイル内容の変更は、すべてのファイル名には影響しますが、ファイル名を削除、別のファイル名にアクセスには影響しません。この状況は、「ハードリンク」(ハードリンク)と呼ばれています。

LNは、ハードリンクを作成するためのコマンド:

  LNソース先のファイル

IMG

上記のコマンド実行後、ソース・ファイルの同じinode番号とターゲット・ファイル、同じiノードをポイント。「リンク数」inodeファイル名の記録ポイントの合計と呼ばれるリストのiノード情報は、それが1増加します。

逆に、ファイル名を削除するには、iノードノードマイナス1「リンク数」を作ることができます。この値は、ファイル名は、iノードを指していないことを示し、ゼロに到達すると、システムのiノード番号を回収し、それに対応するブロック領域であろう。

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

七、软链接

除了硬链接以外,还有一种特殊情况。

文件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 源文文件或目录 目标文件或目录

IMG

八、inode的特殊作用

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

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

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

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

三点目は、簡単にソフトウェアアップデートが再起動せずにソフトウェアをシャットダウンせずに更新することができます。ファイルのinode番号によるシステムが稼動、ないファイル名を識別するので。更新、同じファイル名のファイルの新しいバージョンは、新しいiノードを作成し、それがファイル操作には影響しません。あなたがソフトウェアを実行する次の時間まで待って、ファイル名が自動的に新しいファイルを指すようになります、iノードレガシーファイルを回収しました。

おすすめ

転載: www.cnblogs.com/zx125/p/11569456.html