n
ファイルとl
ディレクトリに長さf
のd
xattrsを追加するとコストが発生する可能性があると思います。
それらの費用はいくらですか?例えば。すべてのファイルにタグを付けると、ストレージとパフォーマンスに大きな影響がありますか?それを下回ると無視できる重要な値は何ですか?その後、ファイルシステムに打撃を与えますか?
このような分析では、xattrの制限とは何か->さまざまなファイルシステムに配置できるxattrの量とビット数を検討することをお勧めします。
(便利な場合は、ext4とbtrfs以外のファイルシステムに関するビットを含めることを歓迎します-ありがとうございます)
Ext4(BtrFSについて話すことはできません)の場合、小さなxattrを格納すると、iノードに直接収まり、パスの解決やディレクトリの反復パフォーマンスには影響しません。
「小さい」xattrに使用できるスペースの量は、iノードがフォーマットされているサイズによって異なります。新しいext4ファイルシステムはデフォルトのiノードサイズ512バイトを使用し、古いext4ファイルシステムは256バイトを使用し、iノード自体とxattrヘッダーに約192バイトを使用していません。残りはxattrに使用できますが、通常はSELinux用のxattrがすでに存在し、場合によっては他のxattrもあります( "getfattr -d -m - -e hex /path/to/file
"はすべてのxattrをiノードにダンプします)。このスペースに収まらないxattrは、外部ブロックに格納されます。または、4KBより大きく、新しいカーネル(4.18ish以降)がある場合は、外部iノードに格納できます。
Xattrのパフォーマンスがワークロード(Sambaなど)にとって重要な場合は、「mke2fs -I <size>
」オプションを使用してフォーマット時にiノードサイズを変更し、xattrにより多くのスペースを提供することができます。