web-dev-qa-db-fra.com

Que font "Robocopy / Nooffload"?

L'outil Windows robocopy a un commutateur de ligne de commande /NOOFFLOAD. Qu'est-ce que ce commutateur fait réellement, et dans quelles circonstances je l'utiliserais-je?

La documentation pour le commutateur dit

/NOOFFLOAD :: copy files without using the Windows Copy Offload mechanism.

Des recherches supplémentaires sur le "mécanisme de déchargement de la copie Windows" sont ce document MSDN , mais j'ai du mal à comprendre quel effet désactiver le déchargement aurait réellement.

Si un fichier de fichier réseau est sur un serveur qui utilise 'Copie de fenêtre de déchargement', quels avantages/inconvénients notables utiliseraient /NOOFFLOAD avoir sur le processus de copie?
[.____] Par exemple, cela augmenterait-il ou diminuerait-il la charge sur le serveur ou accélérez le transfert au coût d'autres ressources?

14
HugoRune

En théorie, la charge sur le serveur distant (par agrégat) sera la même. C'est la même quantité en cours de téléchargement d'un serveur et le même montant en cours de téléchargement à un autre, mais le point de mise au point de cette charge est décalé.

De - votre lien :

enter image description here

En déchargeant la copie sur le serveur, il devient le serveur lui-même qui fait la copie. Pour deux serveurs dans le même centre de données, cela peut être beaucoup plus rapide, car la copie peut se produire à la vitesse locale de la liaison de datacenter. Si vous avez une connexion de 10 Mbps aux deux serveurs, mais elles ont des connexions locales de 10 Gbps, la copie locale sera incroyablement lente par comparaison. Cela pourrait entraîner une processeur instantanée plus élevée ou une charge de réseau, mais le transfert peut arriver plus rapidement. Il serait peut-être même que le transfert soit plus efficace, en raison de la baisse de la latence causée par divers appareils réseau entre vous et le serveur.

Comme mentionné dans ce lien en déchargeant la copie sur le serveur lui-même, vous supprimez presque entièrement votre machine locale de l'équation:

Un fichier source et un fichier de destination peuvent figurer sur le même volume, deux volumes différents hébergés par la même machine, un volume local et un volume à distance via le bloc de messages du serveur (SMB2 ou SMB3) ou deux volumes sur deux machines différentes via SMB2 ou SMB3

Donc, peu importe que ce soit le même serveur, ou des serveurs différents, l'opération de copie sera beaucoup plus efficace et utilisera tout ce qui est disponible.

Sur un serveur ou un cluster avec déduplication une copie peut être effectivement un coût nul en termes de CPU et de temps de disque, car aucune donnée de fichier réelle ne devra être copiée jusqu'à ce que des modifications soient apportées. Seule une référence de fichier devrait être créée. Dans ce cas en utilisant /NOOFFLOAD Serait un gaspillage massif de ressources, car vous téléchargeriez les données et le téléchargeriez-la, tout en forçant le serveur à revérifier et de supprimer les données.

La désactivation du déchargement forcera le téléchargement pour passer par votre machine. Vous téléchargerez les données d'un serveur et téléchargez-la sur l'autre. Il y a certaines situations dans lesquelles cela pourrait être souhaitable, en particulier si vous savez que vous êtes entre deux serveurs et que vous avez un lien plus efficace, peut-être avec moins de routage ou appareils de gestion.

13
Mokubai

Le déchargement est un mécanisme d'optimisation: lorsque vous copiez un fichier entre deux emplacements qui ne figurent pas sur votre machine, vous n'avez pas besoin de voir que la machine est de voir les données IFF les emplacements peuvent être d'accord les uns avec les autres pour effectuer le transfert directement. Ceci est une optimisation facultative et sera utilisée si possible. Mais /NOOFFLOAD Désactive le désactive, alors même si l'optimisation pourrait être utilisée - ce ne sera pas. C'est fondamentalement une pessimisation prématurée. Il y a très peu de raisons de l'utiliser réellement. Parfois, il est insisté pour que /NOOFFLOAD veillera à ce qu'une copie des données ait été réellement effectuée, au lieu d'un par exemple. Hardlinking le fichier. Laissez-le être clair que ce n'est pas le cas , et utiliser cette option au lieu de sauvegardes est une course de foutre - souvent avec une étiquette de prix attachée.

Dans les situations où le mécanisme de déchargement est disponible, le stockage est souvent dédupliqué, et même si les données feront une ronde dans votre système, ce n'est que pour atteindre le filtre de déduplication de bloc qui jettera les blocs en double. En d'autres termes: /NOOFFLOAD ne fait rien de mieux, mais cela peut le rendre pire, le résultat final étant exactement pareil - si vous êtes chanceux (lu sur).

Le seul cas d'utilisation que je connaisse pour /NOOFFLOAD Cela concerne toute préoccupation pour techniquement astucieux, mais sinon, les utilisateurs de puissance "réguliers" sont des tests de contrainte réseau. Si vous souhaitez mettre une charge sur le réseau et le système de stockage, /NOOFFLOAD Assurez-vous que vous obtiendrez le pire des cas dans les circonstances en termes de quantité de données mélangées. Ce n'est pas gratuit mais: l'utilisation de /NOOFFLOAD augmente la probabilité de corruption de données dans la copie. Il n'y a pas de protection d'intégrité de données de bout en bout dans le système de fichiers virtuel Windows et les copies de fichiers effectuées sans déchargement ont un potentiel mesurable pour les débiles de bit. C'est quelque chose qui frappe des systèmes marginaux et des réseaux particulièrement difficiles. Donc, si vous pensez que vous voulez effectuer des tests de stress, utilisez-le des données que vous ne vous souciez pas, c'est-à-dire supprimer les copies une fois qu'ils ont été synchronisés sur le disque.