ZFS ARC dnodeサイズ> dnode最大サイズ

ZFS ARC dnodeサイズ> dnode最大サイズ

コピーしました。レディット投稿これは私の質問を要求しましたが、まだ答えがありません。

私は過去数週間でZFSの使用量と統計を監視するためのツールを使用してきました。それが私に話していることを理解したとき、ZFSについてもっと学ぶように励ましました。私はほとんどすべてのことを行い、私が何をしたのか、そしてその理由を理解した後にのみ調整を行いました。

私をパニックにしたことの1つは、dnode_sizeがarc_dnode_limit * 0.9より大きくてはいけないという警告です。

$ grep dnode /proc/spl/kstat/zfs/arcstats 
dnode_size                      4    334416720
arc_dnode_limit                 4    307463731

それから334416720! >276717357.9....ええと…こんな!私はこのアドバイスよりはるかに優れています...

特にdnodeに関する良い情報がたくさん見つかりました。ZFS文書を開く豊富なコンテンツ。しかし、私はdnode_sizeがarc_dnode_limitよりはるかに高いことが何を意味するのかについての良い情報を見つけることができませんでした。これについてどうすべきかは言うまでもありません。

この警告が私に何を言うかを説明できる人はいますか?これは実際に問題なのでしょうか、それとも「良いヒント」の1つですか?

ベストアンサー1

TL、DR:したがって、より高い制限を設定してください。

それが実際に問題になった場合、あなたの質問に答えることはできませんが、使用量が制限を超えることを心配している場合は、制限を人為的に下げたのか、ユースケースでは単により高い制限を必要とするのかを検討してください。

これはFreeBSDにあるため、行とYMMVの間を読み取る必要がありますが、16GB RAMと460GBのシングルデバイス非冗長VDEVを搭載したFreeBSD 14ノートブックには適用範囲がありません。現在、FreeBSDのデフォルト制限は1,594,027,212です。サイズ/制限率は0.0008です。

(No dnode setting overrides in /etc/sysctl.conf:)
$ grep dnode /etc/sysctl.conf
$ sysctl -a | egrep 'dnode_(size|limit)'
vfs.zfs.arc.dnode_limit_percent: 10
vfs.zfs.arc.dnode_limit: 0
kstat.zfs.misc.arcstats.arc_dnode_limit: 1594027212
kstat.zfs.misc.arcstats.dnode_size: 1362288
$ bc <<< "scale=4; $(sysctl -n kstat.zfs.misc.arcstats.dnode_size) / $(sysctl -n kstat.zfs.misc.arcstats.arc_dnode_limit)"
.0008

人為的に下限(例:2 ^ 20)を設定して再起動すると、はい、比率は「推奨」より高くなります。

$ grep dnode /etc/sysctl.conf
vfs.zfs.arc.dnode_limit=1048576
$ sysctl -a | egrep 'dnode_(size|limit)'
vfs.zfs.arc.dnode_limit_percent: 10
vfs.zfs.arc.dnode_limit: 1048576
kstat.zfs.misc.arcstats.arc_dnode_limit: 1048576
kstat.zfs.misc.arcstats.dnode_size: 1358248
$ bc <<< "scale=4; $(sysctl -n kstat.zfs.misc.arcstats.dnode_size) / $(sysctl -n kstat.zfs.misc.arcstats.arc_dnode_limit)"
1.2960

同様に、オペレーティングシステムで選択されたデフォルトの制限が低すぎると思われる場合は、より低い割合の0.0006を達成するためにより大きな制限を設定できます。

$ grep dnode /etc/sysctl.conf
vfs.zfs.arc.dnode_limit=2147483648
$ sysctl -a | egrep 'dnode_(size|limit)'
vfs.zfs.arc.dnode_limit_percent: 10
vfs.zfs.arc.dnode_limit: 2147483648
kstat.zfs.misc.arcstats.arc_dnode_limit: 2147483648
kstat.zfs.misc.arcstats.dnode_size: 1376024
$ bc <<< "scale=4; $(sysctl -n kstat.zfs.misc.arcstats.dnode_size) / $(sysctl -n kstat.zfs.misc.arcstats.arc_dnode_limit)"
.0006

私のZFSユースケースの多くはFreeBSDにありますが、OpenZFSのドキュメントでは次のことをお勧めします。

場合によっては、カーネルモジュールがロードされる前にパラメータを設定する必要がある場合、または起動時にパラメータを自動的に設定したい場合があります。多くのディストリビューションでは、次の形式を使用して、各モジュールパラメータのテキスト行を含む/etc/modprobe.d/zfs.confというファイルを生成してこれを実行できます。

# change PARAMETER for workload XZY to solve problem PROBLEM_DESCRIPTION 
# changed by YOUR_NAME on DATE 
options zfs PARAMETER=VALUE

dnode制限を増やして再起動して、使用/制限率が向上することを確認してください。

おすすめ記事