2

試験で次の質問がありました。

ext3 ファイルシステムでは、dentry の数が i ノードの数よりも多くなります。

True または False で答えて説明する必要がありました。

私の答え:

dentry はディレクトリ間のリンクであり、基本的にすべてが i ノード (ディレクトリであっても) であるため、これは誤りです。

ただし、ext3 ファイル システムについては考慮していません。私が見逃したものはありますか、それとも私の答えは正しいですか?

4

3 に答える 3

4

次の理由により、歯の数が増える可能性があります。

  1. すべてのハードリンクには固有の dentry がありますが、同じ inode を指しています。
  2. ENOENT (ファイルまたはディレクトリが存在しない) を返すルックアップは、dentry を作成し、その inode ポインターを NULL としてマークします (技術的には負の dentry と呼ばれます)。これは、否定的なルックアップ、つまり存在しないパスのルックアップを高速化するのに役立ちます。
于 2012-10-21T12:16:50.150 に答える
1

クリーンにアンマウントされたファイルシステムでは、dentry の数は常にinode の数よりも多くなります。

考慮事項: すべての i ノード (開いているファイル ハンドルを介して存続しているリンクされていないファイルを除く - これらは、クリーンなアンマウントで、またはアンクリーンなアンマウント後の回復中にパージされます) には、少なくとも 1 つの dentry が関連付けられています。すべてのディレクトリ inode には少なくとも 2 つのリンクがあります。親 (または..ルートの場合はそれ自体) からのリンクと.. さらに、ディレクトリには、各サブディレクトリの dentry に関連付けられた追加の dentry があり..ます。

したがって、絶対最小値では、inode よりも 1 つ多くの dentry があります (ルート ディレクトリのみを持つ FS の場合)。追加のディレクトリとハードリンクは、これをさらに膨らませます。

于 2012-10-21T12:27:30.027 に答える
1

しかし、ハードリンクを持つことができます。そのため、同じ inode を指している多くの dentry を合理的に持つことができます。

于 2012-05-26T10:58:20.020 に答える