19 votes

Meilleure compression pour les envois/récupérations ZFS

J'envoie des instantanés ZFS incrémentiels sur une ligne T1 point à point et nous en sommes à un point où l'équivalent d'une journée d'instantanés peut à peine passer le fil avant que la sauvegarde suivante ne commence. Notre commande d'envoi/récupération est la suivante :

zfs send -i tank/vm@2009-10-10 tank/vm@2009-10-12 | bzip2 -c | \
ssh offsite-backup "bzcat | zfs recv -F tank/vm"

J'ai beaucoup de cycles de CPU à épargner. Existe-t-il un meilleur algorithme de compression ou une méthode alternative que je peux utiliser pour faire passer moins de données sur la ligne ?

1 votes

H

0 votes

Y

3 votes

H

0voto

Dan Buhler Points 446

Vous devrez tester avec vos données. Il suffit de les envoyer dans un fichier et de les compresser avec chaque méthode.

Pour nous, gzip a fait une énorme différence et nous faisons tout passer par là, mais il n'y avait même pas 1% de différence entre gzip et bzip ou 7z.

Si vous êtes sur une ligne T1 lente, vous devrez le stocker dans un fichier et le transférer par rsync.

Pour ceux (pas vous) qui sont un peu plus limités par le CPU que par la bande passante, comme lstvan l'a dit, un chiffrement différent comme arcfour128 accélère les choses. Nous l'utilisons en interne lorsque nous déplaçons des objets.

0voto

venkatachalam Points 18235

Expérimenter l'activation de la déduplication pour zfs send avec -D. Les économies dépendent de la quantité de duplication dans vos données, bien sûr.

0 votes

Puisqu'il utilise -i qui implique une sauvegarde "incrémentale", il n'y a pas beaucoup d'espoir que la -D donnerait n'importe quoi.

0 votes

@poige dépend de la nature de leurs données. S'ils génèrent beaucoup de données avec des blocs dupliqués, c'est une grande victoire. Je ne vois pas en quoi -i rendrait plus ou moins probable la présence de blocs dupliqués. Si vous créez normalement des données qui ont beaucoup de duplication, vous allez probablement créer beaucoup de duplication à l'intérieur tous les jours, donc -i n'aide pas ou ne nuit pas.

0 votes

Si vous avez beaucoup de doublons, une compression suffira de toute façon à les éliminer.

0voto

MattK Points 7319

Après avoir fait zfs send tank@datasnapshot > /dev/null J'ai réalisé que je n'allais pas saturer mon réseau 10Gbit de toute façon, donc j'ai décidé de laisser le pool de sauvegarde utiliser zfs set compression=gzip .

Les chiffres s'avèrent être similaires.

C'est assez dur pour le CPU, mais l'utilisation de mbuffer aide beaucoup.

expéditeur : zfs send -v dank/data@snapshot | mbuffer -s 128k -m 10G -O s2dna:9090

récepteur : mbuffer -s 128k -m 10G -I 9090 | zfs receive -s -v backuppool/engram/data

Ce grand tampon est utilisé lorsque le CPU est occupé à compresser... il sera occasionnellement plein, donc il pourrait être plus grand.

Dans l'ensemble, je suis satisfait du débit, qui était à deux chiffres sans mbuffer : bmon throughput for zfs send with mbuffer

cpu hates gzip

-1voto

TuxOtaku Points 59

Avez-vous envisagé de régler votre pile TCP/IP de manière à ce que la taille de votre tampon TCP et de vos fenêtres soit un peu plus grande ? Vous pouvez utiliser la fonction ndd sur Solaris pour cela ou l'outil sysctl sur Linux/BSD/Mac OSX. Sur Solaris, vous recherchez l'outil /dev/tcp tcp_max_buf y /dev/tcp tcp_cwnd_max et sur Linux sysctl, vous recherchez net.ipv4.tcp_mem , net.ipv4.tcp_rmem y net.ipv4.tcp.wmem valeurs.

Ces liens peuvent également vous être utiles :

Optimisation des performances TCP de Solaris

Il y a un ensemble de liens au bas de cette page qui expliquent comment faire de même pour Linux/BSD/OSX.

1 votes

1. C'est une question vieille de 5 ans que vous déterrez. 2. Il n'a pas dit que le lien était sous-utilisé et a posé une question sur la compression, à laquelle vous ne faites pas référence. 3. De nos jours, la plupart des systèmes d'exploitation ajustent automatiquement la taille de la fenêtre. L'information que vous mettez en lien était vieille de 3 ans lorsque l'auteur l'a postée.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X