Ich habe einen Pool, auf dem sich 3,41 TB Daten befinden. Die Deduplizierung ist auf den Volumes aktiviert, gemessen an der Ausgabe des
zpool status -D <pool_name>
...
dedup: DDT entries 73665285, size 696B on disk, 154B in core
...
Ich sehe, dass nur 10 GB DDT im RAM gespeichert sind, und wenn ich mehr Daten lade, erhöht sich die Anzahl der Blöcke und die Anzahl der Bytes verringert sich. Soweit ich weiß, wird DDT in den Metadaten des ARC gespeichert und bei der Ausgabearc_meta_used, ich sehe dort nur etwa 8 GB, die Grenze für die Menge an Metadaten(zfs_arc_meta_limit_percent) im ARC ist auf 75 % eingestellt, d. h., es wird noch nicht einmal erreicht, die RAM-Menge beträgt 64 GB. Warum wird nicht die gesamte Deduplizierungstabelle in den RAM übertragen?
Laut dieser Ausgabe beträgt meine DDT-Größe 37,19 GB
zdb -b pool
bp count: 124780196
ganged count: 0
bp logical: 3997925134336 avg: 32039
bp physical: 3988307198976 avg: 31962 compression: 1.00
bp allocated: 6056878956544 avg: 48540 compression: 0.66
bp deduped: 2188370706432 ref>1: 15910160 deduplication: 1.36
SPA allocated: 3868508110848 used: 25.36%
additional, non-pointer bps of type 0: 95
Dittoed blocks on same vdev: 3706666
Warum wird die Tabelle nicht in den RAM ausgelagert? Und wie kann ich sie zwangsweise entladen?