Serveur d'impression

Consolidation des serveurs de fichiers avec PowerShell et Robocopy – Serveur d’impression

Le 6 juin 2020 - 12 minutes de lecture

Serveurs de fichiers – Nous les avons tous sous une forme ou une autre. Ces serveurs ont tendance à croître de façon exponentielle plus critique que ce que nous imaginions lors de leur déploiement. Ils étaient également assez lourds à migrer jusqu'à ce que Microsoft publie son service de migration de stockage. Mais il existe un scénario important qu'il ne couvre pas: la consolidation de plusieurs serveurs de fichiers en un seul.

Dans ce didacticiel, nous expliquerons comment éviter les versions non prises en charge de Windows et garantir la disponibilité de vos serveurs de fichiers en les consolidant.

Pourquoi devrais-je consolider mes serveurs de fichiers?

De nombreuses entreprises ont plusieurs (et parfois des dizaines) de serveurs de fichiers créés pour différentes raisons au fil des ans. Mais les consolider en un ou quelques serveurs a plus de sens maintenant, car la mise en réseau et le stockage sont à la fois moins chers et plus rapides que jamais. Cela diminue le temps passé à les gérer. Vous pouvez également avoir quelques serveurs de fichiers presque vides, car de nombreuses entreprises utilisent des services tels que OneDrive et SharePoint pour les données utilisateur.

De plus, en les migrant vers un serveur de fichiers en cluster, vous pouvez sécuriser la disponibilité et utiliser des fonctions telles que la mise à jour adaptée aux clusters pour automatiser les correctifs sans que nos utilisateurs ne s'en rendent même compte.

Commençons maintenant!

Conditions préalables

Dans cet article, vous apprendrez à consolider des serveurs de fichiers. Mais gardez à l'esprit que votre environnement est unique et procédez avec prudence. Les partages et les dossiers que vous souhaitez migrer dépendent de vous!

Cela dit, il y a quelques conditions préalables:

  • Deux serveurs de fichiers ou plus à consolider (serveurs source). Cela a été testé sur Windows Server 2008 et versions ultérieures, mais pourrait fonctionner pour les anciennes versions.
  • Un ou plusieurs serveurs de fichiers avec Windows Server 2019 pour consolider vers (serveur de destination) – de préférence un cluster
  • Un PC Windows 10 avec Powershell 5.1 et Microsoft Excel installé
  • Droits d'administrateur sur les serveurs source et de destination

Gardez à l'esprit que les spécifications du nouveau serveur de fichiers doivent être capables de gérer la charge des serveurs qu'il remplace – combinées!

La collecte d'informations

le plus une partie importante d'une consolidation réussie est d'avoir les bonnes informations à portée de main. Vous pouvez les rassembler manuellement – bien que cela ne soit pas préféré, car il est sujet aux fautes de frappe et autres erreurs, cela fonctionne.

Mais c'est sur la façon de consolider avec PowerShell – Et comme il est difficile de mettre votre expérience et vos connaissances dans un script, nous utiliserons plutôt une méthode semi-automatique. Commencer par installer ImportExcel collecter des informations sur les partages sur nos serveurs source avec PowerShell.

Installer ImportExcel

ImportExcel est un module PowerShell qui peut à la fois importer et exporter des données Excel. C'est un outil parfait à avoir lors de la collecte d'informations nécessitant un traitement manuel. Lancez PowerShell en tant qu'administrateur sur votre PC et tapez ce qui suit pour installer le module PowerShell:

Collecter des informations sur les partages de fichiers

Lancez Powershell en tant qu'administrateur sur votre PC disposant des autorisations d'administrateur sur les serveurs source et tapez:

Une sortie de tous les partages configurés sur le serveur source vous sera présentée.

Maintenant, faire cela pour chaque serveur source n'est pas viable dans de nombreux cas, alors créons quelque chose de mieux qui récupère les partages de tous les serveurs source et les exporte vers Excel avec le module ImportExcel:

Ouvrez le fichier Excel que vous venez de créer dans C: temp Shares.xlsx. Il vous présentera une sortie qui peut ressembler à ceci:

Image n ° 1 Développer

Lisez attentivement et vous remarquerez peut-être quelques choses différentes avec l'exemple ci-dessus:

  • Le \ fs01…. Départements semble être un partage avec un dossier pour chaque service
  • Le partage RH et informatique sur fs01 est partagé à partir du dossier de partage des départements
  • fs02 a le CRM directement partagé même s'il réside dans E: Applications qui est partagé en tant que \ fs02… Applications
  • \ fs02… Finance semble être un partage de service

Et ainsi de suite – une migration basée sur ces données ne serait pas du tout jolie. Il semble également que nous migrerions l'ancien partage informatique qui n'est pas utilisé.

Cela souligne combien il est important de faire des recherches et un peu de retouche manuelle avant de faire quoi que ce soit d'autre.

Vous devez créer un nouveau partage sur le serveur de destination pour chaque catégorie que vous définissez avec le même nom.

Nettoyage des données

Faisons un peu de nettoyage manuel et classons les données en entrant une catégorie dans la colonne Catégorie. Commencez par supprimer les «partages qui se trouvent dans un partage»:

Image n ° 2 Développer

Après cela, vous appliquez une catégorie de votre choix dans la colonne «Catégorie»:

Image n ° 3 Développer

La colonne «Catégorie» décidera sur quel partage il sera copié sur le serveur de destination. c'est-à-dire \ fs10.contoso.com AppData

Enfin, vous marquez les partages dont vous souhaitez migrer les sous-dossiers au lieu d'un 1: 1 du partage lui-même. Pour ce faire, saisissez «Oui» dans la colonne MigrateSubFolders:

Image # Développer

La migration de sous-dossiers au lieu du dossier entier lui-même est utile lorsque vous migrez ensemble plusieurs partages différents avec la même catégorie de données. Étant donné que vous pouvez avoir des partages pour différents services répartis sur plusieurs serveurs en raison de la taille et d'autres limitations.

Maintenant que vous avez des informations à jour, nous allons les enregistrer et les fermer Shares.xlsx et générer une dernière feuille de calcul que nous pouvons utiliser pour notre fonction PowerShell + RoboCopy plus tard.

Génération de la feuille de calcul de migration

Une bonne feuille de calcul de migration est au cœur d'une consolidation bien réalisée. Ce sera la base lors de l'organisation et de la communication avec les différentes parties de l'organisation au sujet de la consolidation. C'est également ici que vous trouverez et corrigerez les doublons, les anciens partages, etc.

Le script qui crée le fichier * Migration.xlsx- * devra faire les choses suivantes:

  • Lire le nettoyage Shares.xlsx
  • Lire les sous-dossiers d'actions avec MigrateSubFolders
  • Créez un chemin de destination composé du serveur de destination, de la catégorie et du nom de partage
  • Exportez au moins le chemin source et le chemin de destination vers une feuille Excel.

Vous pouvez commencer par lire le Shares.xlsx que nous avons créé plus tôt avec PowerShell en tant qu'administrateur:

Vous allez maintenant les parcourir un par un et soit créer une sortie basée sur les données d'Excel, soit effectuer Get-ChildItem si la propriété MigrateSubFolders est définie sur «Oui»:

L'exécution du code ci-dessus générera une sortie qui ressemble à ceci:

Notez comment nous utilisons la colonne Catégorie de la feuille de calcul précédente pour déterminer le chemin de destination. Ensuite, exportons cela pour exceller afin que nous puissions effectuer le dernier nettoyage, mais le plus crucial:

Cela affichera le contenu de $ MigrationList dans C: certains dossier Migration.xlsx.

Maintenant, lors de l'ouverture du Migration.xlsx fichier avec Excel et en regardant de plus près, vous découvrez que nous avons beaucoup de doublons:

Image n ° 4 Développer

Ce n'est pas inhabituel – Cela peut être dû au fait que deux dossiers portent le même nom par coïncidence ou que les anciennes données n'ont pas encore été supprimées. Vous pouvez cependant rendre cela un peu plus facile et les marquer comme doublons avant de les exporter vers Excel. Fermez le fichier Excel et entrez-le dans la fenêtre PowerShell que vous avez précédemment utilisée:

Cela utilise l'applet de commande PowerShell Group-Object regrouper les objets par la propriété «Destination» et ainsi détecter les doublons. Nous définissons ensuite Migrate sur no et indique que cette ligne contient des doublons. C'est un moyen simple et rapide de détecter les doublons et vous facilite la vie lorsque vous traitez des dizaines, voire des milliers de dossiers.

Vous avez maintenant une feuille de calcul plus facile à trier qui ressemble à ceci:

Image n ° 5 Développer

Il est fortement recommandé de parcourir tous les partages, car il n'est pas rare de trouver des partages inutilisés, des doublons et similaires, comme illustré dans l'exemple ci-dessous. Cela peut réduire la quantité de données à transférer en téraoctets!

Image n ° 6 Développer

Vous disposez désormais d'une excellente base pour baser cette migration de données et cette consolidation de serveurs de fichiers. Enregistrez et fermez Excel pour pouvoir l'exporter vers un CSV et commencer à transférer les données

Exportation vers CSV

Maintenant que vous disposez de toutes les informations nécessaires pour démarrer le transfert de données, vous devez exporter la feuille de calcul vers un fichier CSV. En effet, vous voulez pouvoir le lire sur le serveur de destination sans avoir à installer Excel.

Vous pouvez le faire sur l'ordinateur que vous avez créé le Migration.xslx tableur en entrant la commande suivante dans PowerShell:

Cela lira le Migration.xlsx feuille de calcul avec le Import-Excel applet de commande et l'exporter vers Migration.csv en utilisant Export-CSV.

Transférez le CSV vers le serveur de destination – Dans cet exemple, nous l'avons transféré vers C: Temp Migration.csv sur le serveur de migration. Vous disposez désormais de toutes les informations nécessaires à notre fonction PowerShell pour transférer les données.

Maintenant, laissez-nous RDP au serveur de destination pour savoir comment transférer les partages de fichiers!

Robocopie

Pour transférer les données, votre script PowerShell va utiliser 2 composants principaux:

  • RoboCopy
  • Le fichier migration.csv

Jetez un œil à RoboCopy – la commande la plus importante que vous allez utiliser en premier.

La commande RoboCopy

La commande ci-dessous est similaire à ce que vous allez utiliser si vous transférez vos partages de fichiers conformément à cet article.

La commande ci-dessus:

  • Copiez le répertoire source \ fs01.contoso.com Some Share à \ fs10.contoso.com Some Share
  • / mir mettra en miroir le répertoire source vers le répertoire de destination – tous les fichiers de la destination qui ne correspondent pas ou n'existent pas dans le répertoire source seront supprimés / remplacés.
  • /seconde Copiera toutes les autorisations de fichier.
  • / ZB Démarre les transferts de fichiers en mode redémarrable – en cas d'échec, il les transférera en mode de sauvegarde (plus lent)
  • / MT: 64 Dira à robocopy de transférer les fichiers avec 64 threads simultanés
  • / E copie les sous-répertoires, y compris les sous-répertoires vides
  • / R: 1 Réessayera le transfert de fichiers une fois s'il échoue
  • / W: 1 Attend 1 seconde entre les tentatives
  • / unilog: " affichera un journal au format Unicode pour

Ces paramètres peuvent devoir être ajustés en fonction du matériel de votre serveur de destination. Maintenant, commençons par la fonction PowerShell qui démarrera robocopy pour nous!

Création d'un script

L'approche la plus simple pour transférer toutes les actions serait d'utiliser Foreach-Object sur le fichier CSV que vous avez transféré au serveur précédemment et pour chaque boucle, lancez RoboCopy. C'est fondamentalement la méthode que nous allons utiliser mais avec un peu plus de finesse pour que vous puissiez transférer plusieurs partages à la fois sans ralentir les vitesses de transfert.

La fonction que vous allez utiliser dans cet article s'appelle Start-FileShareMigrationJob – Il est inclus ci-dessous et vous allez obtenir les principales parties expliquées en détail.

Les paramètres de fonction

Commencez par regarder les paramètres:

Comme vous pouvez le voir -La source et -Destination les paramètres ont l'option de paramètre ValueFromPipeLineByPropertyName ensemble. Cela signifie que vous pouvez lui rediriger un objet qui a le La source et Destination Propriétés.

Vous pouvez même diriger un tableau d'objets (comme dans l'ensemble migration.csv) qui contient ces propriétés et il les parcourra tant que Commencer, Processus et Fin des blocs sont présents.

vous avez également quelques paramètres que vous pourriez reconnaître en regardant les paramètres RoboCopy plus tôt. En fait – tous les paramètres ici seront utilisés comme arguments pour démarrer la robocopie.

Le bloc Begin

Jetez maintenant un œil à la Commencer bloquer:

Cela va récupérer l'heure de début du travail, créer un identifiant de session et définir le chemin de sortie de nos journaux pour C: Temp logs – Nous utilisons sessionId afin de pouvoir séparer les différentes exécutions puisque vous pouvez utiliser cette fonction pour récupérer le «delta» car elle ne copiera que les fichiers qui ont changé.

Il contient également un petit Journal d'écriture pour faciliter l'écriture des journaux.

Le bloc de processus

La partie principale de la fonction est le bloc de processus illustré ci-dessous:

Le bloc de processus agit comme une boucle Foreach lorsqu'un tableau d'objets est canalisé si la fonction a des paramètres qui ont le ValueFromPipeLine ou ValueFromPipeLineByPropertyName ensemble d'options. Vous pouvez en savoir plus sur la création de fonctions de support de pipeline ici.

Pour chaque boucle, il construit un tableau d'arguments avec les chemins source et de destination, ainsi que les autres commandes RoboCopy que nous avons décrites précédemment. Il l'exécute ensuite avec les arguments et stocke les informations de processus dans un tableau.

Vous pouvez ensuite voir combien de processus RoboCopy sont en cours d'exécution en regardant $ Jobs.Process.HasExited.

Si le nombre de processus Robocopy en cours d'exécution est supérieur ou égal à la -NumberOfJobs (Par défaut 5), il dormira pendant une seconde et vérifiera à nouveau. Cela garantira que vous n'avez pas trop de transferts robocopy en cours d'exécution. Et maintenant pour la dernière partie du script – le bloc Fin.

Le bloc de fin

Le bloc de fin de cette fonction est juste utilisé pour attendre la fin des processus RoboCopy

Il bouclera tant que la quantité de processus de photocopie en cours d'exécution qui ne sont pas sortis est supérieure à 0.

La fonction complète

Ci-dessous, vous trouverez la fonction complète que vous utiliserez pour démarrer robocopy

Maintenant que vous avez la fonction, utilisez-la et Migration.csv pour démarrer un transfert de fichier.

Transfert des fichiers

Sur le serveur de destination – lancez PowerShell en tant qu'administrateur et collez-y la fonction ci-dessus et importez le CSV dans une variable en entrant:

Voyons le $ MigrationList variable:

Image n ° 7 Développer

Il ne reste plus qu'à démarrer le transfert de fichiers en le redirigeant vers Start-FileShareMigrationJob:

Image n ° 8 Développer

Vous pouvez voir ici que PowerShell génère différents travaux.

Les journaux de robocopy se trouvent dans le C: temp logs yyyyMMdd_HHmmss dossier.

Sélection des éléments à transférer

Pour certains scénarios, vous souhaiterez peut-être simplement effectuer un transfert pour un certain serveur. Ceci est facilement réalisé en utilisant Où-objet:

Vous pouvez également le diviser en plusieurs CSV et ainsi de suite en fonction de ce qui convient à votre cas d'utilisation.

La transition

Maintenant, après avoir attendu (généralement) longtemps la migration se termine, il est recommandé d'effectuer ces transferts régulièrement jusqu'à ce qu'il soit temps pour le basculement. Celles-ci ne prennent généralement que quelques minutes.

Le basculement peut être effectué de différentes manières. Mais la meilleure méthode si vous n'avez pas DFS en place est de définir les serveurs source dans des autorisations de partage en lecture seule et d'effectuer une dernière synchronisation à l'aide de la méthode décrite dans cet article.

Arrêtez ensuite les serveurs source et modifiez tout ce qui pointe vers les anciens serveurs source vers les nouveaux serveurs de destination. Ceci est sujet aux erreurs et entraînera de nombreux temps d'arrêt si les paramètres ne sont pas gérés de manière centralisée.

Si vous utilisez DFS pour tout, alors l'approche est beaucoup plus simple.

  • Commencez par définir le DFS TTL sur quelques minutes au lieu de 30 à 60 minutes.
  • Dans le même temps, ajoutez un lien désactivé aux chemins de partage.
  • Lorsque ces paramètres se sont propagés – définissez les partages du serveur source en lecture seule.
  • Courir $ MigrationList | Start-FileShareMigration une dernière fois.
  • Si vous voyez des erreurs de verrouillage de fichier dans les journaux qui résident dans C: temp logs yyyyMMdd_HHmmss – Redémarrez le serveur source et exécutez l'étape ci-dessus une fois de plus.
  • Activez les liens DFS pointant vers le serveur de destination et désactivez l'ancien.
  • Arrêtez les anciens serveurs source.

Lorsque vous voyez que vos utilisateurs et applications sont en cours d'exécution vers le nouveau serveur – réglez le DFS TTL à la normale.

Notez que c'est l'autorisation du partage et non les autorisations NTFS! La modification des autorisations NTFS pour tous les partages gâchera la dernière synchronisation et entraînera de nombreux temps d'arrêt.

Conclusion

Vous avez maintenant appris à consolider plusieurs serveurs de fichiers. Bien que cela demande beaucoup plus de travail, le concept de base consistant à effectuer une consolidation de plusieurs serveurs par rapport à une migration 1: 1 est le même. Le succès de la consolidation réside dans le travail qui est mis dans l'enquête au préalable et lors du basculement plutôt que dans le transfert du dossier lui-même.

Le conseil est donc d'être prudent et méticuleux lors du tri et de l'organisation des partages de fichiers au préalable. Et aussi puisque vous utilisez Excel, il est facile de partager avec vos collègues!

Commentaires

Laisser un commentaire

Votre commentaire sera révisé par les administrateurs si besoin.