HTreeインデックスディレクトリ

HTreeインデックスディレクトリ

マニュアルページを読んでいる間、chattr私はIフラグを見つけましたIndexed Directory。調査の結果、これは次のHTreeインデックスディレクトリを参照することがわかりました。この紙。それは言う時間倉庫BTreeに似たパフォーマンスを提供しますが、実装は簡単です。

自宅でUbuntuコンピュータとして実行した後、lsattrダウンロードディレクトリにIndexed Directoryフラグが設定されていますが、それ以外には何もないことがわかりました。私はまた、stat --format "%s" Downloadsそのサイズが私の家の他のすべてのディレクトリの4KiBではなく12KiBであることを知らせることを発見しました。私はこのトピックに関するより多くの情報を得るためにインターネットを検索しましたが、この論文は2001年に出てきただけです。

システムは、ext4ルートディレクトリにあるカーネル5.3.0-26を含むUbuntu 19.10です。

私の質問は次のとおりです

  • HTreeディレクトリと非HTreeディレクトリの実際の違いは何ですか?
  • どうやって作れますか?どうやって作られますか?
  • HTreeディレクトリであるディレクトリがないのはなぜですか?

答え1

最新のext3 / ext4ファイルシステムでは、単一のファイルシステムブロック(通常4KB)より大きいすべてのディレクトリがインデックス化されます。これは、ディレクトリが最初のブロックより大きくなると自動的に発生します。

1つのブロックが受け入れることができるもの(ファイル名の長さに応じて60〜100ファイルである可能性があります)よりも多くのエントリを追加することに加えて、htreeディレクトリを「作成」する特別な方法はありません。ディレクトリが大きくなると、ext4によって決して縮小されません。しかし、いつかそれを可能にするパッチがあるかもしれません。

答え2

現在、immutable(i)親ディレクトリの属性を削除した後、indexed directory(I)その属性を持つ子ディレクトリを直接削除できます。 (外線4)

$ cat /etc/issue
Ubuntu 20.04 LTS \n \l

関連情報