Comment la déduplication du niveau de blocage ZFS s'ajoute-t-elle à la taille du bloc variable?

Selon le premier résultat Google pour "Deduplication ZFS"


Que faire pour déduire: files, blocs ou octets?

Le décount au niveau du bloc a des frais généraux un peu plus élevés que le décount du niveau de file lorsque des files entiers sont dupliqués, mais contrairement au décount du niveau de file, il gère extrêmement datatables au niveau du bloc telles que les images des machines virtuelles.

ZFS fournit une déduplication au niveau du bloc

Selon l'article ZFS de Wikipédia

ZFS utilise des blocs de taille variable allant jusqu'à 128 kilobytes. Le code actuellement disponible permet à l'administrateur d'accorder la taille de bloc maximale utilisée car certaines charges de travail ne fonctionnent pas bien avec de gros blocs. Si la compression des données (LZJB) est activée, les tailles de blocs variables sont utilisées. Si un bloc peut être compressé pour s'adapter à une taille de bloc plus petite, la taille la plus petite est utilisée sur le disque pour utiliser less de stockage et améliorer le débit d'IO (même si le coût de l'utilisation CPU accrue pour les opérations de compression et de décompression).

Je veux m'assurer que je comprends bien cela.

En supposant que la compression est désactivée

Si j'ai un file rempli au hasard de 1GB, j'écris un deuxième file qui est le même sauf à mi-path, je change un des octets. Est-ce que ce file sera déduplicé (tous sauf le bloc d'octets modifié?)

Si j'écris un file d'octet unique, prend-il un total de 128 kilo-octets? Sinon, les blocs augmenteront-ils si le file est plus long?

Si un file prend deux blocs 64kilobyte (cela arriverait-il?), Alors un file identique devrait être déduite après avoir pris un seul bloc de 128 kilo-octets

Si un file est raccourci, une partie de son bloc aurait été ignorée, peut-être que datatables ne seraient pas réinitialisées à 0x00 octets. Un demi-bloc utilisé serait-il déduite?

La déduplication ZFS fonctionne sur des blocs (recordlength), il ne connaît pas les problèmes de files. Chaque bloc est supprimé à l'aide de sha256 (par défaut, modifiable). Si la sum de contrôle correspond à un autre bloc, elle fera reference au même logging et aucune nouvelle donnée ne sera écrite. Un problème de déduplication avec ZFS est que les sums de contrôle sont conservées dans la memory, de sorte que de vastes pools nécessiteront beaucoup de memory. Donc, vous ne devez appliquer qu'une duplication lorsque vous utilisez une grande longueur d'logging

En supposant une longueur d'logging de 128k

Si j'ai un file rempli au hasard de 1GB, j'écris un deuxième file qui est le même sauf à mi-path, je change un des octets. Est-ce que ce file sera déduplicé (tous sauf le bloc d'octets modifié?)

Oui, seul un bloc ne sera pas dupliqué.

Si j'écris un file d'octet unique, prend-il un total de 128 kilo-octets? Sinon, les blocs augmenteront-ils si le file est plus long?

128k sera atsortingbué, si la taille du file dépasse 128k plus de blocs seront atsortingbués au besoin.

Si un file prend deux blocs 64kilobyte (cela arriverait-il?), Alors un file identique devrait être déduite après avoir pris un seul bloc de 128 kilo-octets

Un file prendra 128k, le même file sera déduplicé

Si un file est raccourci, une partie de son bloc aurait été ignorée, peut-être que datatables ne seraient pas réinitialisées à 0x00 octets. Un demi-bloc utilisé serait-il déduit?

Si le même bloc est identique, oui

Les blocs de taille variable de ZFS sont tels que Yavor a déjà mentionné qu'il ne faut pas confondre le morceau de taille variable random, également appelé chunking défini par le contenu ou empreinte digitale de Rabin. Voici une petite discussion décrivant les différences.

ZFS a utilisé des blocs statiques mais configurables.