Aller au contenu
Contact us

Ce qu'implique une migration, et ce qui détermine sa vitesse

Pas une copie de fichiers

Une migration déplace des fichiers entre deux systèmes qui ont chacun leurs propres règles, limites et charge. La vitesse d'une copie sur un disque local n'en dit pas grand-chose.

Chaque tâche parcourt sa source un fichier à la fois, et chaque fichier suit les mêmes étapes, quelle que soit sa taille :

  1. Préparer la tâche

    SMART Migration se connecte à la source et à la destination, lit les dossiers de la source et liste les fichiers que les filtres de la tâche laissent passer. Aucun fichier n'est déplacé avant la fin de cette étape.

  2. Examiner la destination

    Pour chaque fichier, il recherche ce que la destination contient déjà et compare — selon sa règle d'ajout et d'écrasement des fichiers — pour décider s'il faut l'ajouter, le remplacer ou le laisser.

  3. Lire le fichier et ses versions

    Le fichier est lu depuis la source et, avec l'historique des versions, chaque version également : chaque version est un fichier à part entière à déplacer.

  4. L'écrire dans Nextcloud

    Le fichier est écrit dans son dossier dans Nextcloud, avec ses dates et, avec MetaVox, ses métadonnées.

  5. Journaliser le résultat

    L'étape est journalisée, les chiffres de l'exécution sont transmis à l'application, et tout problème est enregistré comme problème de fichier.

Les octets ne transitent qu'aux troisième et quatrième étapes. Tout le reste consiste en appels à la source ou à la destination, chacun recevant sa réponse via le réseau — et pour de nombreux petits fichiers, ces appels prennent bien plus de temps que les octets.

Un même volume peut prendre une heure ou une journée, selon ce qui le compose et l'endroit où il va :

FacteurEffet sur la vitesse
Nombre de fichiersChaque fichier coûte les mêmes étapes : 100 000 petits fichiers prennent donc bien plus de temps qu'une centaine de gros fichiers de même volume
Historique des versionsChaque version est déplacée comme un fichier à part entière ; une bibliothèque avec de longs historiques de versions contient plusieurs fois le nombre de ses fichiers actuels
PréparationLecture des dossiers de la source et du contenu de la destination avant le déplacement du premier fichier ; sur une tâche comportant peu de fichiers, elle représente une grande part de son temps
Contenu de la destinationUne exécution répétée compare chaque fichier avec la destination, et ce n'est qu'ensuite qu'elle sait que la plupart ne nécessitent rien — sauf s'il s'agit d'une exécution incrémentielle, qui ne lit et ne compare que les fichiers modifiés depuis la dernière exécution réussie
Limitation par Microsoft 365SharePoint Online et OneDrive limitent le nombre de requêtes qu'ils acceptent, et SMART Migration attend lorsqu'ils demandent de ralentir — affiché comme SPO Rate Limit Delay dans les détails de l'exécution
La destinationUn serveur Nextcloud chargé, un stockage lent ou un disque plein ralentit chaque tâche qui y écrit
Le réseauEntre le serveur SMART Migration, la source et Nextcloud — la latence compte davantage que la bande passante lorsqu'il y a beaucoup de fichiers
Tâches simultanéesLe serveur SMART Migration exécute au maximum quatre tâches à la fois ; les tâches supplémentaires attendent leur tour
L'éditionEnterprise+ migre jusqu'à trois fois plus vite qu'Enterprise

Pourquoi cela peut être plus lent que prévu

Un débit de quelques gigaoctets par heure peut sembler faible au regard de la vitesse du réseau. Ce n'est pas la vitesse de transfert : c'est le volume déplacé par heure de la durée totale d'une tâche, toutes les étapes ci-dessus comprises. Une première exécution sur une grande bibliothèque, de nombreux petits fichiers ou un tenant limité le font tous baisser — et aucun d'eux ne signifie qu'il y a un problème.

Les chiffres ci-dessus décrivent une migration qui s'exécute sans interruption. Aucune migration ne se déroule ainsi. Au fil de semaines de travail entre un tenant, un serveur de fichiers et un serveur Nextcloud, des incidents surviennent naturellement — non parce que quelque chose est cassé, mais parce que les systèmes réels sont partagés, maintenus et utilisés par des personnes pendant que la migration s'exécute :

Ce qui se produitEffet sur la migrationQue faire
Coupures réseauUne connexion entre le serveur SMART Migration, la source et Nextcloud s'interrompt : un fichier échoue, ou une exécution entière s'arrêteVérifiez le résultat de l'exécution et Problèmes de fichiers, puis relancez la tâche
LimitationMicrosoft 365 ralentit ou refuse des requêtes lorsque le tenant est chargé — surtout pendant les heures de bureau — et une tâche attend, parfois plusieurs minutes à la fois pendant des heuresExécutez les plus grosses tâches le soir et le week-end ; consultez SPO Rate Limit Delay dans les détails de l'exécution
Redémarrages de serveurMises à jour Windows sur le serveur SMART Migration, mises à jour et maintenance de Nextcloud, machine virtuelle redémarrée — les tâches en cours s'arrêtent et l'application affiche Hors ligneConvenez de fenêtres de maintenance avec l'informatique, et vérifiez les tâches en cours une fois le serveur rétabli
Autorisations manquantesUn site, une bibliothèque, un OneDrive ou un dossier que l'App Registration ou le compte de service ne peut pas lire ; des fichiers dotés de leurs propres autorisationsL'exécution se termine par une erreur, ou les fichiers sont listés dans Problèmes de fichiers ; accordez l'accès et relancez la tâche
Fichiers en cours d'utilisationLes fichiers verrouillés, extraits ou ouverts dans une application ne peuvent pas toujours être lusIls sont listés dans Problèmes de fichiers ; relancez la tâche plus tard
Identifiants expirésUn certificat ou un mot de passe qui expire, un mot de passe d'application révoqué : toutes les tâches s'arrêtent jusqu'à son renouvellementNotez les dates d'expiration avant le début du projet
Nextcloud refuse les requêtesDes échecs de connexion depuis l'adresse du serveur SMART Migration amènent Nextcloud à ralentir chaque requête provenant de celui-ci, puis à les refuser avec 429 Too Many Requests : toutes les tâches s'arrêtentCorrigez le mot de passe et ajoutez l'adresse du serveur à la liste d'autorisation anti-force brute de Nextcloud ; voir « Dimensionner les serveurs » ci-dessous
La destination se remplitUn disque plein ou un quota atteint arrête les écritures ; l'analyse antivirus et les fenêtres de sauvegarde les ralentissentVérifiez l'espace libre et les quotas avant chaque vague
Les utilisateurs continuent de travaillerDes fichiers changent dans la source pendant leur migrationPrévoyez une exécution de rattrapage finale avant la bascule
Décisions et correctionsLes demandes d'autorisation, les réponses des propriétaires et les validations prennent du temps aux personnes — souvent plusieurs joursIntégrez-les dans les vagues, ne les planifiez pas à côté

La plupart des interruptions coûtent peu en elles-mêmes, et la règle par défaut pour les fichiers existants les rend sans risque : relancez la tâche et Ajouter les nouveaux, écraser les existants si plus récents laisse intacts les fichiers déjà déplacés et copie le reste. Ce qu'elles coûtent, c'est du temps calendaire — les heures entre le moment où une tâche s'est arrêtée et celui où quelqu'un l'a remarqué, a corrigé la cause et l'a relancée.

Planifiez pour le monde réel, pas pour le monde idéal

La prévision mesure le temps pendant lequel les tâches se sont exécutées. Les interruptions rencontrées au sein de ces exécutions — attentes dues à la limitation, fichiers en échec — y sont déjà incluses ; le temps perdu pendant que rien ne s'exécutait ne l'est pas. Considérez-la comme le meilleur scénario pour un travail sans interruption, et planifiez le calendrier avec une marge en plus. Une vague pilote menée sur des jours ouvrés ordinaires, avec ses interruptions, montre l'ampleur de cette marge dans votre environnement.

Comment le Tableau de bord prévoit le temps restant

Section intitulée « Comment le Tableau de bord prévoit le temps restant »

Sous les barres de Progression de la migration, le Tableau de bord affiche trois lignes calculées à partir des chiffres des tâches elles-mêmes. Placez le pointeur dessus pour afficher une carte qui explique chacune d'elles, avec les chiffres sur lesquels elle repose.

Temps restant

Les fichiers restants, multipliés par le temps moyen par fichier, répartis entre les tâches exécutées simultanément.

Terminé vers

Le moment où les fichiers restants seront déplacés au rythme qu'atteignent actuellement les tâches en cours.

Débit

Le volume déplacé par heure du temps d'une tâche, en moyenne et actuellement.

  • Le temps par fichier provient du journal de session. Pour chaque migration, la durée entre le début de la tâche dans le journal et sa dernière ligne de journal est divisée par le nombre de fichiers qu'elle a déplacés. Le temps passé à la préparation, avant le déplacement du premier fichier, est compris dans cet intervalle et se trouve donc réparti sur les fichiers. Les migrations terminées comptent avec leur début et leur fin ; celles en cours avec ce qu'elles ont journalisé jusqu'ici. Toutes ensemble donnent une moyenne unique.
  • Le temps restant correspond aux fichiers encore à déplacer, multipliés par cette moyenne, divisés par le nombre de migrations en cours — au moins une. Lorsque rien ne s'exécute, c'est le temps que prendrait une tâche à la fois, et la ligne l'indique : at the past pace. Il s'agit de temps de travail : les heures pendant lesquelles aucune tâche ne s'exécute s'y ajoutent.
  • Terminé vers est une estimation à partir de maintenant : le nombre de fichiers par heure de chaque tâche en cours depuis son démarrage, additionnés, et les fichiers restants à ce rythme. Elle réagit immédiatement à une source lente, à une destination chargée ou à une limitation, et varie donc davantage que le temps restant. Lorsque rien ne s'exécute, il n'y a pas d'estimation.
  • Débit est le volume déplacé par heure du temps d'une tâche, en Mo par heure : en moyenne sur les migrations terminées et en cours, et actuellement, toutes les tâches en cours confondues. Il inclut chaque étape, pas seulement les octets. Lorsque rien ne s'exécute, seule la moyenne est affichée, marquée past migrations.

La prévision apprend. Avec seulement quelques migrations terminées, elle est approximative ; elle se stabilise à mesure que d'autres tâches se terminent, et le choix sous Mesurer depuis détermine à partir de quelles exécutions terminées elle apprend.

Les barres mesurent chaque tâche par rapport à ce qu'a compté sa dernière exécution Analyse. Une tâche qui n'en a pas ne peut pas être mesurée précisément : le Tableau de bord la compte avec ce qu'a déplacé sa dernière exécution Migration terminée, ou sinon comme une tâche moyenne, de sorte que le temps restant la couvre aussi — mais seulement dans la mesure où cette estimation correspond à la tâche. Exécutez d'abord les tâches en Analyse pour obtenir des chiffres exacts. Progression des jobs sans exécution Analyse explique comment l'estimation est établie et dans quelle mesure elle peut s'écarter de la réalité.

  • Laissez de côté ce que personne n'utilise avec From Date et Source File Type, et limitez les versions avec Version History Scope.
  • Maintenez quatre tâches en cours en permanence : planifiez les plus grosses tâches le soir et le week-end, et attribuez-leur une Priority élevée.
  • Répartissez les plus grandes bibliothèques sur les vagues, plutôt que d'en exécuter quatre côte à côte face à un même tenant limité.
  • Divisez une bibliothèque de centaines de milliers ou de millions de fichiers en tâches portant chacune sur un sous-ensemble de ses dossiers : une seule tâche pour l'ensemble est lente et risque de ne jamais se terminer. Voir Sources
  • Exécutez des tâches récurrentes avant la bascule, afin que l'exécution finale ne compare et ne copie que ce qui a changé.
  • Rendez les exécutions répétées incrémentielles : avec Incrémentiel (uniquement les fichiers modifiés depuis la dernière exécution réussie), une exécution ne lit que les fichiers modifiés depuis la dernière exécution réussie et ne vérifie qu'eux par rapport à Nextcloud — quelques fichiers modifiés au lieu de la bibliothèque entière. Voir Exécutions incrémentielles : uniquement les fichiers modifiés depuis la dernière exécution
  • Vérifiez la destination : l'espace libre, et un serveur Nextcloud dimensionné pour la charge, avec suffisamment de workers PHP pour quatre tâches écrivant simultanément. Voir Dimensionner les serveurs pour une grande migration
  • Écourtez les interruptions : surveillez le Tableau de bord et les notifications, afin qu'une tâche arrêtée soit repérée en quelques minutes plutôt que le lendemain matin, et convenez de fenêtres de maintenance avec les personnes qui gèrent les serveurs. Voir Notifications lors de l'exécution d'une tâche

Voir aussi