Also meine Maschine hier ist klein, nur 4x2TB im RaidZ mit 32GB RAM. Hmm... könnte knapp werden.
Effiziente Deduplizierung bei VMs muss immer mit der eingestellten Blockgröße im Gast passieren um das Beste aus der Deduplizierung herauszuholen, da die Daten oft fragmentiert und eben nicht immer gleich im Gast liegen. Ganz doofes und simples Beispiel ist die Reihenfolge von Dateien wie (examplarisch) config.sys autoexec.bat und command.com. Alles ist klein aber wenn die Daten identisch sind, aber in verschiedenen Reihenfolgen im Gast direkt hintereinander liegen sieht die Deduplizierung außen eben verschiedenen Inhalt.
Dabei muss natürlich das Alignment auch korrekt sein. Somit hat man meist eine Blockgröße von maximal 4K und somit ist das zum einen schlecht (bei ashift=9) bis zu garnicht (bei ashift=12) zu komprimieren und zum anderen benötigt man VIEL VIEL mehr RAM für die Deduplizierungstabelle, da die ganzen Hinweise zur Deduplizierung immer von Blockgrößen bis 128K ausgehen. Auf meinem Backupserver kann ich mir mit 72 GB-RAM nichtmal die simulierte Deduplizierungstabelle anzeigen lassen, der Prozess schmiert mit OOM ab.
Die Versuche die ich zu dem Thema gemacht hatte (also im Vorfeld) war, dass sich natürlich VMs prima deduplizieren lassen, wenn diese ähnlich sind. Für sehr viele VMs bringt das natürlich ersparnis, jedoch haben wir bei über 100 VMs zwar einiges Identische (Meistens Debian in Verwendung), aber die "gleichen" Teile sind meistens nur so 1 GB pro VM (keine GUI usw. OS brauch ja nicht viel). Die meisten Daten liegen aber als "sonstiges" rum, also der Teil, den man so hat wie Dokumente, Bilder, Videos, Software-Installationspakete, ISOs, Paketspiegel usw.
Daher könnte man natürlich bei Deduplizierung den gemeinsamen Teil sparen, aber das wäre in unserem Fall weniger als 10% und dafür ist das Ding einfach viel, viel viel zu RAM hungrig. Deduplizierung auf SSDs wäre noch was, das ist natürlich auch alles langsam, aber es fällt nicht so auf, bzw. es wird länger schnell reagieren als es Festplatten tun. Ich hatte meistens genau an dem Punkt, an dem der DDT nicht mehr in den RAM gepasst hat solche Aussetzer am Client, dass jedes Programm in ein Timeout gelaufen ist. Das war nicht schön.