Follow

btrfs / dĂ©duplication 

Déduplication d'environ 1,2 To de données, 92000 extends, sur un systÚme de fichier et avec duperemove : environ 2,8Go de mémoire (en pointe).

Voilà, pour info 🙂

· · 2 · 4 · 0

btrfs / dĂ©duplication 

En complément: c'est redescendu à 500~600Mo actuellement

btrfs / dĂ©duplication 

Et le fichier de cache des hash (XXX.dat, qui est une base de donnée) fait 2,4Go.
J'en dĂ©duis que l'essentiel de la consommation en RAM vient de la taille de ce fichier ? đŸ€”

btrfs / dĂ©duplication 

Mise à jour: j'ai dû couper puis relancer l'opération.
Et j'ai pu observer plus longuement le processus, et
 la pointe est à ~4,1Go de RAM.
"Un peu" plus 😅

btrfs / dĂ©duplication 

Ah intéressant, en mode verbeux on a des infos du genre: «Skipping small file [fichier]"» quand il fait les hash des nouveaux fichiers.

Il a l'air d'Ă©viter de "perdre" du temps sur les petits fichiers.
Est-ce que ça fait perdre (beaucoup ?) en dĂ©duplication ? đŸ€”
Peut-ĂȘtre que ça ne concerne que des fichiers d'une taille similaire Ă  la taille de l'extend, oĂč ça n'aurait pas d'intĂ©rĂȘt (face Ă  une dĂ©duplication de fichiers).

btrfs / dĂ©duplication 

En fait, plus je le lance, plus il consomme ? 😅
5,5Go maintenant.
Pourtant, mĂȘme si c'est le mĂȘme fichier .dat, je ne travaille que sur un sous-ensemble đŸ€” 😅

btrfs / dĂ©duplication 

Ah pour info dans le manuel y'a la formule de calcul de la taille du fichier .dat, si ça vous intéresse.
("Hashfile Size = Num Hashes X 90 + Num Files X 270", je vous laisse regarder les détails si besoin)

Et bien en effet, ça donne pile 2,4Go dans mon cas.

Note: je me suis rendu compte qu'il passait aussi sur les snapshots, donc en fait c'est plutît 3To et 276 000 fichiers 😅

btrfs / dĂ©duplication 

Et donc aprÚs correction : y'avait une (grosse) erreur dans mon opération, avec une déduplication qui se faisait sur les snapshots (ce qui est inutile, elles sont déjà dédupliquées).

Et donc, la vraie valeur, pour 5816 fichiers traités (sur les 92000) : environ 150 à 200Mo de mémoire utilisés.
Et un fichier .dat de 630Mo.

ping @sebsauvage @aplufr

btrfs / dĂ©duplication 

@Lapineige
ok. merci.

Il faudra vraiment que je ré-évalue la déduplication en mode blocs (duperemove) par rapport à celle au niveau fichiers (jdupes).

Curieusement (et ce n'est pas logique), j'avais de meilleurs résultats avec jdupes qu'avec duperemove.

btrfs / dĂ©duplication 

@sebsauvage ça m'intĂ©resse aussi de savoir đŸ€”

Et peut-ĂȘtre de comparer au coĂ»t de ZFS.
Il paraßt que c'est trÚs gourmand en RAM, je serais intéressé par un retour pour comparer avec mon exemple là.

btrfs / dĂ©duplication 

@Lapineige

mmm... pourtant il me semblait que l'utilisation d'un fichier avec dupreremove diminuait justement la consommation de RAM ? đŸ€”

btrfs / dĂ©duplication 

@Lapineige la dedup chez moi avec duperemove et monté à 28Go de RAM.
Le problùme c’est que si tu as des fichiers strictement identique de plusieurs giga, il fait la dedup par 128K ... du coup c’est mega long.
LĂ  j’ai rusĂ© en utilisant l’option --fdupes et simulant la sortie de fdupes (je sais dĂ©jĂ  ce qu’il faut dedup).

btrfs / dĂ©duplication 

@aplufr c'est quoi fdupes ?

btrfs / dĂ©duplication 

@Lapineige le papa de jdupes :)
Un soft qui fait des md5sum/sha1 de fichiers pour trouver les fichiers identiques (et qui peut faire des actions, supprimer, remplacer par des liens hard)

btrfs / dĂ©duplication 

@aplufr pour combien et quel volume de fichiers ?

Effectivement là il a mis énormément de temps à charger tout le fichier en mémoire (si je comprends bien ce qu'il fait).
Ça affecte la gestion de la mĂ©moire aussi ?

btrfs / dĂ©duplication 

@Lapineige Là je fais la dedup sur 4To de données que je sais identique.
Le fait de passer la sortie de fdupes directement ça dĂ©sactive l'algo de detection des dedup basĂ© par block/csum, donc c’est plus rapide (mais ça ne peut faire de la dedup que par fichier complet, pas par block de fichier).

Le truc c’est que pour faire la dedup duperemove relis les fichiers complĂštement, donc pour gagner du temps j’ai virĂ© fdupes qui lisait aussi les fichiers.

btrfs / dĂ©duplication 

@Lapineige Du coup, oui utilisé --fdupes affecte bien sur la consommation ram puisque duperemove ne fait que dire à btrfs "fait la dedup des 3 fichiers suivants".
C’est aussi un peu plus rapide parce qu’il ne fait pas un I/O check + dedup pour chaque block de 128Ko.

btrfs / dĂ©duplication 

@aplufr t'as une ressource (tuto, 
) ou un exemple d'utilisation sous la main ?
Ça peut servir :)

btrfs / dĂ©duplication 

@Lapineige fdupes -r /foo /bar | duperemove -A -d --fdupes

btrfs / dĂ©duplication 

le -A de duperemove c’est pour avoir la dedup aussi sur des snapshot en readonly.

Si il n'y a pas de snapshot en readonly, jdupes -B doit faire le job.

btrfs / dĂ©duplication 

@aplufr
je lis dans le manuel (ton commentaire sur fdupes me fait réaliser que --help ne renvoi pas du tout toutes les options) qu'il y a cette option:

-b size
Use the specified block size. Raising the block size will consume less memory but may miss some duplicate blocks. Conversely, lowering the blocksize consumes more memory and may find more duplicate blocks. The default blocksize of 128K was chosen with these parameters in mind.

Ça ne te serait pas utile ?

btrfs / dĂ©duplication 

@Lapineige j’ai testĂ©, c’est plus rapide pour le scan mais la 2e Ă©tapes ça fait toujours par du 128K. J’ai pas vĂ©rifiĂ© dans le code mais je pense qu’il y'a une limite.
Par contre, plus petit, ça marche ;).

Là j’ai du faire à la louche 50% de la dedup, je vais laisser finir tel que.

btrfs / dĂ©duplication 

@Lapineige pour info, le fichier hashfile c’est une base sqlite ;)

btrfs / dĂ©duplication 

@aplufr ouaip ça j'avais vu, mais qu'est-ce que ça change ?

btrfs / dĂ©duplication 

@Lapineige @sebsauvage Fait attention, si tu as des snapshots en read-only a priori si tu ne les inclus pas dans la dedup ça peut faire sauter la dedup (si des fichiers sont dedup a cĂŽtĂ©), ouai, c’est pas clair mais c’est pas clair non plus ici mais j’ai eu un truc bizarre avec des snapshots en readonly et l'action "dedup" ne prennait pas tous les fichiers (snapshot) inclus dans la commande ça ne dedup pas comme il faut

btrfs / dĂ©duplication 

@aplufr je ne sais plus si c'est du read-only đŸ€”

J'ai l'air d'y avoir gagné au total.

C'est embĂȘtant s'il faut inclure ces fichiers, ça prend bien plus de mĂ©moire et de temps
 :/
@sebsauvage

btrfs / dĂ©duplication 

@aplufr @Lapineige

ewww... si ça fait sauter des liens de dĂ©dup des snapshots c'est pas gĂ©nial. 😬

btrfs / dĂ©duplication 

@sebsauvage d'autant que ça voudrait dire instantanĂ©ment dupliquer des tonnes de fichiers 😅
@aplufr

btrfs / dĂ©duplication 

@Lapineige @sebsauvage non juste des blocks dans les fichiers qui serait concerné, en gros :
- echo fooqwe > A
- echo foobar > B
- snapshot read only A -> A.1
ça ferait juste sautĂ© la partie "foo" pour faire la dedup de "foo" entre A et B mais "qwe" serait toujours liĂ©e entre A et A.1 (mais je ne suis pas sĂ»r de moi pour le comportement que j’ai cru comprendre avec btrfs fi du pendant mes bricoles de dedup)

btrfs / dĂ©duplication 

@sebsauvage @Lapineige je ne suis pas sĂ»r Ă  100% de moi non plus... c’est peut ĂȘtre liĂ©e Ă  la defrag que j’ai vais avant aussi.
Faudrait faire un test pour ĂȘtre sur, mais je dois avouer, j’ai un peu la flemme lĂ  😅

Sign in to participate in the conversation
La Quadrature du Net - Mastodon - Media Fédéré

Mamot.fr est une serveur Mastodon francophone, géré par La Quadrature du Net.