Menü
Avatar von JustTryIt
  • JustTryIt

mehr als 1000 Beiträge seit 17.05.2000

Re: Warum willst du BTRFS?

Recluce schrieb am 22.04.2016 00:43:

JustTryIt schrieb am 21.04.2016 21:23:

Siehe
https://pthree.org/2012/12/18/zfs-administration-part-xi-compression-and-deduplication/ unter der Überschrift "Enabling Deduplication":
"To enable deduplication for a dataset, you change the "dedup" property. However, realize that even though the "dedup" property is enabled on a dataset, it deduplicates against ALL data in the entire storage pool. Only data committed to that dataset will be checked for duplicate blocks."

https://docs.oracle.com/cd/E19120-01/open.solaris/817-2271/gjhav/index.html:
"Although deduplication is set as a file system property, the scope is pool-wide."

cu
JustTryIt

Danke, sehr interessant. Allerdings sind die Statements im Widerspruch zu anderen Quellen, z.B.:

https://blogs.oracle.com/bonwick/entry/zfs_dedup

Oder dieses Statement:

"To improve deduplication, ZFS doesn't limit itself to duplicate blocks within just one filesystem. Instead it looks across the whole pool. If dedup is not enabled for a particular filesystem then block writes are performed without passing through the dedup pipeline, even if duplicate blocks exist" (http://superuser.com/questions/521646/view-zfs-deduplication-ratio-on-a-dataset)

Ich sehe da keinen Widerspruch. Dedup wird auf einem Dataset aktiviert, nutzt aber den ganzen Pool als Quelle.

Damit könnte die Wahrheit in der Mitte liegen:

1.) Nur wenn dedup für ein Filesystem (Data Set) aktiviert ist, wird Deduplication aktiv und braucht entsprechend Speicher. Für andere FS erfolgt ein Pass Through
2.) Wenn man in ein Dateisystem mit dedup schreibt, wird als Referenz für den Blockvergleich der gesamte Pool benutzt. Dies erhöht (zumindest theoretisch) die Wahrscheinlichkeit einen geeigneten Block zu finden. Auf den RAM-Bedarf sollte das nur dann einen Einfluß haben, wenn ein entsprechender Block gefunden wird.

Ja, so verstehe ich das auch. Allerdings bezieht sich der RAM Bedarf beim Schreiben auf ein dedup Dataset auf die Größe des gesamten Pools, nicht nur auf das Dataset, da ja im Pool nach geeigneten Blöcken gesucht wird (zum schnellen Suchen braucht man den RAM, nicht nachdem man den Zielblock auch gefunden hat).
Einfach mal Dedup auf einem kleinen Dataset aktivieren, da man nicht genug RAM für den ganzen Pool hat geht so nicht. Jedenfalls nicht wenn man auf das Dataset dann auch schreiben will...

Irgendwie scheinen wir beide Recht zu haben... ;-)

Kann ich gut mit leben ;-)

cu
JustTryIt

Bewerten
- +
Anzeige