Existe-t-il une commande, telle que rsync, qui peut synchroniser des fichiers volumineux et clairsemés d'un serveur Linux à un autre?
Il est très important que le fichier de destination reste clairsemé. Il peut être plus long (mais pas plus gros) que le lecteur qui le contient. Seuls les blocs modifiés doivent être envoyés sur le câble.
J'ai essayé rsync, mais je n'ai eu aucune joie. https://groups.google.com/forum/#!topic/mailing.unix.rsync/lPOScZgFE9M
Si j'écris un programme pour ce faire, est-ce que je réinvente la roue? http://www.finalcog.com/synchronise-block-devices
Merci,
Chris.
linux
rsync
kvm-virtualization
fadedbee
la source
la source
Réponses:
Pour créer de nouveaux fichiers en mode clairsemé
Suivi par
Pour mettre à jour tous les fichiers existants (y compris les fichiers clairsemés précédemment créés) sur place.
la source
rsync --existing --inplace
, puisrsync --ignore-existing --sparse
pour avoir une accélération de synchronisationRsync transfère uniquement les modifications dans chaque fichier et avec --inplace ne doit réécrire que les blocs modifiés sans recréer le fichier. Depuis leur page de fonctionnalités .
L'utilisation de --inplace devrait vous convenir. Cela vous montrera la progression, compressera le transfert (au niveau de compression par défaut), transférera le contenu du répertoire de stockage local de manière récursive (cette première barre oblique importante), apportera les modifications aux fichiers en place et utilisera ssh pour le transport.
J'utilise souvent le drapeau -a également, ce qui fait encore quelques choses. C'est équivalent à -rlptgoD Je vous laisse le comportement exact à rechercher dans la page de manuel.
la source
J'ai fini par écrire un logiciel pour faire ça:
http://www.virtsync.com
Il s'agit d'un logiciel commercial coûtant 49 $ par serveur physique.
Je peux maintenant répliquer un fichier clairsemé de 50 Go (qui contient 3 Go de contenu) en moins de 3 minutes sur le haut débit résidentiel.
la source
Jetez un oeil à Zumastor Linux Storage Project, il implémente la sauvegarde "snapshot" en utilisant "rsync" binaire via l'
ddsnap
outil.Depuis la page de manuel:
ddsnap fournit une réplication de périphérique de bloc grâce à une fonction d'instantané au niveau du bloc capable de contenir efficacement plusieurs instantanés simultanés. ddsnap peut générer une liste de blocs de snapshots qui diffèrent entre deux snapshots, puis envoyer cette différence sur le câble. Sur un serveur en aval, écrivez les données mises à jour sur un périphérique de bloc instantané.
la source
lvmsync fait cela.
Voici une transcription d'utilisation . Il crée un instantané LVM sur la source, transfère la partition logique. Vous pouvez transférer les mises à jour incrémentielles des modifications depuis la création de l'instantané aussi souvent que vous le souhaitez.
la source
La réplication de l'ensemble du système de fichiers pourrait-elle être une solution? DRBD? http://www.drbd.org/
la source
Peut-être un peu étrange ici, mais j'ai découvert récemment que NFS gère très bien.
Vous exportez donc un répertoire sur une machine puis le montez sur l'autre et vous copiez simplement les fichiers avec des utilitaires de base comme
cp
. (Certains utilitaires anciens / anciens peuvent avoir des problèmes avec des fichiers épars.)J'ai trouvé
rsync
particulièrement inefficace le transfert de fichiers épars.la source
Pour synchroniser des fichiers volumineux ou des blocs-périphériques avec des différences faibles à modérées, vous pouvez soit faire une copie simple ou utiliser bdsync , rsync n'est absolument pas adapté à ce cas particulier *.
bdsync
a fonctionné pour moi, semble assez mature, son histoire de bugs est encourageante (petits problèmes, résolution rapide). Dans mes tests, sa vitesse était proche du maximum théorique que vous pourriez obtenir ** (c'est-à-dire que vous pouvez synchroniser environ le temps dont vous avez besoin pour lire le fichier). Enfin, c'est open source et ne coûte rien.bdsync
lit les fichiers des hôtes et échange des sommes de contrôle pour les comparer et détecter les différences. Tout cela en même temps . Il crée enfin un fichier patch compressé sur l'hôte source. Ensuite, vous déplacez ce fichier vers l'hôte de destination et exécutez bdsync une deuxième fois pour patcher le fichier de destination.Lorsque vous l'utilisez sur une liaison plutôt rapide (par exemple, Ethernet 100 Mbit) et pour les fichiers avec de petites différences (comme c'est le plus souvent le cas sur les disques VM), cela réduit le temps de synchronisation avec le temps dont vous avez besoin pour lire le fichier. Sur une liaison lente, vous avez besoin d'un peu plus de temps car vous devez copier les modifications compressées d'un hôte à l'autre (il semble que vous puissiez gagner du temps en utilisant une astuce intéressante mais que vous n'avez pas testé).
*: rsync est extrêmement inefficace avec des fichiers volumineux. Même avec --inplace, il lira d'abord le fichier entier sur l'hôte de destination, AFTERWARDS commencera à lire le fichier sur l'hôte source et finalement transférera les différences (exécutez simplement dstat ou similaire tout en exécutant rsync et observez). Le résultat est que même pour les fichiers avec de petites différences, il faut environ le double du temps nécessaire pour lire le fichier afin de le synchroniser.
**: En supposant que vous n'avez aucun autre moyen de savoir quelles parties des fichiers ont changé. Les instantanés LVM utilisent des bitmaps pour enregistrer les blocs modifiés afin qu'ils puissent être extrêmement plus rapides (le fichier Lisezmoi de lvmsync contient plus d'informations).
la source
Je ne connais pas un tel utilitaire, seulement des appels système qui peuvent le gérer, donc si vous écrivez un tel utilitaire, il pourrait être plutôt utile.
ce que vous pouvez réellement faire est d'utiliser qemu-img convert pour copier les fichiers, mais cela ne fonctionnera que si le FS de destination prend en charge les fichiers épars
la source