Quelqu'un a-t-il réalisé une véritable synchronisation différentielle avec rsync dans ESXi?

11

Reprenez-moi plus tard sur le fait que j'utilise la console de service pour faire quoi que ce soit dans ESXi ...

J'ai un binaire rsync fonctionnel (v3.0.4) que je peux utiliser dans ESXi 4.1U1. J'ai tendance à utiliser rsync sur cp lors de la copie de VM ou de sauvegardes d'une banque de données locale vers une autre banque de données locale. J'ai utilisé rsync pour copier des données d'une boîte ESXi à une autre, mais c'était uniquement pour les petits fichiers.

En essayant maintenant de faire de vraies synchronisations différentielles de sauvegardes prises via ghettoVCB entre ma machine ESXi principale et une secondaire. Mais même lorsque je le fais localement (une banque de données vers une autre banque de données sur la même machine ESXi), rsync semble copier les fichiers dans leur intégralité. J'ai deux VMDK totalement de 80Go taille et rsync prend encore quelque part entre 1 et 2 heures , mais les années VMDK ne grandissez pas que beaucoup par jour.

Ci-dessous se trouve la commande rsync que j'exécute. Je copie localement car, finalement, ces fichiers seront copiés sur une banque de données créée à partir d'un LUN sur un système distant. Ce n'est pas un rsync qui sera géré par un démon rsync sur un système distant.

rsync -avPSI VMBACKUP_2011-06-10_02-27-56/* VMBACKUP_2011-06-01_06-37-11/ --stats --itemize-changes --existing --modify-window=2 --no-whole-file
sending incremental file list
>f..t...... VM-flat.vmdk
 42949672960 100%   15.06MB/s    0:45:20 (xfer#1, to-check=5/6)
>f..t...... VM.vmdk
         556 100%    4.24kB/s    0:00:00 (xfer#2, to-check=4/6)
>f..t...... VM.vmx
        3327 100%   25.19kB/s    0:00:00 (xfer#3, to-check=3/6)
>f..t...... VM_1-flat.vmdk
 42949672960 100%   12.19MB/s    0:56:01 (xfer#4, to-check=2/6)
>f..t...... VM_1.vmdk
         558 100%    2.51kB/s    0:00:00 (xfer#5, to-check=1/6)
>f..t...... STATUS.ok
          30 100%    0.02kB/s    0:00:01 (xfer#6, to-check=0/6)

Number of files: 6
Number of files transferred: 6
Total file size: 85899350391 bytes
Total transferred file size: 85899350391 bytes
Literal data: 2429682778 bytes
Matched data: 83469667613 bytes
File list size: 129
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 2432530094
Total bytes received: 5243054

sent 2432530094 bytes  received 5243054 bytes  295648.92 bytes/sec
total size is 85899350391  speedup is 35.24

Est-ce parce que ESXi apporte lui-même tant de modifications aux VMDK qu'en ce qui concerne rsync, le fichier entier doit être retransmis?

Quelqu'un a-t-il réellement réussi la synchronisation des diff avec ESXi?

JuliusPIV
la source
rsynce est incrémentiel par défaut. Difficile à croire, mais vrai. Je suis curieux de savoir où vous allez le téléchargement de rsynce qui fonctionne sur ESXi. J'ai ESXi 4.1

Réponses:

6

Il semble que vous n'ayez transféré que 2 Go de modifications incrémentielles. N'oubliez pas que rsync doit toujours lire dans un fichier entier et le contrôler afin qu'il doive lire 80 Go de données. Vérifiez les statistiques de votre serveur pendant la rsync. Êtes-vous lié au processeur ou aux entrées-sorties pendant l'opération? À quelle vitesse pouvez-vous lire le fichier de 80 Go sur le disque? Ce sera près de votre temps de transfert minimum absolu.

Il convient également de noter que rsync effectue une copie du fichier lors du transfert, puis déplace le fichier final en place dans une opération atomique. Vous pouvez le voir en voyant un nom de fichier similaire avec un suffixe aléatoire lors du transfert dans le répertoire de destination. Cela signifie que vous devez lire 160 Go de données (80 Go chacun pour chaque source et destination) et écrire 80 Go du côté de la destination. Avez-vous envisagé l'option --inplace? Cela peut être bénéfique ici.

En bref, vous ne pouvez avoir que 2 Go de modifications, mais rsync fait BEAUCOUP de travail. Vous êtes probablement lié aux E / S car tout ce que la lecture et l'écriture sur le même disque pourraient causer beaucoup de conflits et de ralentissements.

bot403
la source
Merci bot403 pour votre réponse. J'ai remarqué que les octets transférés étaient considérablement inférieurs, mais je cherchais toujours un temps d'attente de 30 à 45 minutes. J'aurais tout aussi bien pu renvoyer les fichiers dans leur intégralité. Il pourrait y avoir un col de bouteille IO ici, mais je pense que c'est dans ESXi et pas tellement le matériel. Je vais le déplacer vers un LUN et le tester là-bas. Merci beaucoup à tous.
JuliusPIV
4

Ce fil est très ancien, mais qu'il aide quelqu'un.

Comme ESX verrouille le système de fichiers à chaque écriture de nouveaux blocs, les performances ne sont pas excellentes, avec l'option --inplace vous pouvez obtenir de meilleurs résultats, mais sachez que si vous annulez la synchronisation, le fichier ne sera pas cohérent plus. À propos de la cohérence, rsync d'un fichier ouvert pourrait être incohérent de toute façon -> mieux utiliser l'instantané avant rsync.

Cordialement Marc

Nessi
la source
2

À première vue, vous effectuez une copie de local à local avec rsync. Dans ce cas, le comportement par défaut de rsyncest de désactiver l'algorithme de transfert delta et d'effectuer des transferts "de fichiers entiers". La raison de ce comportement par défaut est que les transferts locaux à locaux utilisant l'algorithme delta-xfer seraient généralement plus lents que la simple copie de tous les fichiers, car l'algorithme delta implique beaucoup plus de crunching CPU que la simple copie de fichiers entiers.

Si vous pensez qu'une copie de local à local gagnerait à utiliser l'algorithme delta-xfer, vous pouvez forcer rsyncà l'utiliser en spécifiant l' option --no-W(ou --no-whole-file).

Steven Monday
la source
Merci pour la réponse Steven! Vous avez raison: je fais une copie locale uniquement à des fins de test (c'est-à-dire pour confirmer qu'elle fera effectivement une synchronisation différentielle). En fin de compte, les fichiers seront copiés dans une banque de données locale, un LUN que j'ai exposé qui réside sur une machine distante. Ce ne sera en fait pas un type de synchronisation de démon rsync-to-rsync. Pour ce que ça vaut, j'utilise l' --no-whole-fileoption dans le cadre de la commande rsync; son au-delà de la vue de l'écran.
JuliusPIV
@Julius: Oups, j'ai raté cette barre de défilement horizontale! Oh, désolé d'avoir perdu votre temps.
Steven lundi