Une copie lente ne désigne pas automatiquement le stockage
Un serveur de fichiers peut sembler lent parce que l'ouverture d'un dossier prend dix secondes, qu'une application attend sur des milliers de petits fichiers ou qu'une copie séquentielle plafonne. Ces symptômes traversent DNS, authentification, SMB, réseau, filtres antivirus, cache et stockage. Remplacer des disques avant d'identifier la couche en attente déplace souvent le problème sans le résoudre.
La bonne démarche relie une expérience utilisateur à une heure, un chemin, un client et un type de charge. Elle compare ensuite des scénarios contrôlés. Les commandes proposées ci-dessous observent l'état sans modifier la configuration, sauf le test Robocopy clairement isolé dans un dossier jetable et l'enregistrement local de diagnostic Defender.
| Symptôme | Première comparaison | Pistes fréquentes |
|---|---|---|
| Dossier lent à afficher | Nom contre IP, petit contre grand dossier | DNS, métadonnées, filtre, latence |
| Gros fichier lent | Client, serveur local et autre réseau | Débit, perte, SMB, stockage |
| Petits fichiers lents | Un gros fichier de taille totale équivalente | Allers-retours, antivirus, métadonnées |
| Une seule application | Explorateur ou Robocopy sur le même chemin | Application, verrou, filtre, modèle d'accès |
| Lenteur intermittente | Chronologie des sauvegardes et tâches | Contention, analyse, croissance, réplication |
1. Définir le périmètre avant de mesurer
Conservez une petite matrice de tests avec début, fin et résultat. Une moyenne globale masque les pointes qui bloquent une application interactive. À l'inverse, une pointe isolée n'établit pas une saturation durable. Il n'existe pas de seuil universel valable pour tous les fichiers, protocoles, baies et applications.
- Noter l'heure exacte, le chemin UNC, l'opération, la taille et le nombre de fichiers.
- Déterminer si un utilisateur, un site, un VLAN, un VPN ou tous les clients sont touchés.
- Comparer un client câblé à un client Wi-Fi ou VPN sans changer plusieurs variables à la fois.
- Distinguer ouverture de dossier, lecture, écriture, renommage, suppression et verrouillage.
- Recenser les changements récents : correctif, GPO, agent EDR, pilote NIC, sauvegarde, réplication ou stockage.
- Répéter le même scénario à froid et à chaud; le cache peut rendre une deuxième exécution trompeusement rapide.
2. Vérifier DNS et le chemin d'authentification
Résolvez le nom utilisé par l'utilisateur, puis validez le port TCP 445. Une connexion par adresse IP peut sembler contourner un délai DNS, mais elle change aussi le chemin d'authentification et peut faire perdre Kerberos. Utilisez cette comparaison comme indice seulement, jamais comme correctif permanent.
Un alias DNS mal conçu peut également empêcher Kerberos si les noms alternatifs et SPN ne sont pas gérés correctement. Microsoft recommande d'utiliser Kerberos, de ne pas accéder aux partages par adresse IP et de gérer les noms alternatifs de façon prise en charge.
$Server = 'FS01.contoso.example'
Resolve-DnsName $Server -Type A
Resolve-DnsName $Server -Type AAAA -ErrorAction SilentlyContinue
Test-NetConnection $Server -Port 445 -InformationLevel Detailed
# Après une connexion au partage : billets et session SMB
klist
Get-SmbConnection | Where-Object ServerName -eq 'FS01' |
Format-Table ServerName,ShareName,Dialect,NumOpens -Auto3. Lire la session SMB réelle, pas la configuration supposée
Le dialecte, la signature, le chiffrement et le nombre de canaux doivent être observés sur la session qui reproduit la lenteur. Get-SmbConnection s'exécute sur le client; Get-SmbSession et Get-SmbOpenFile s'exécutent sur le serveur avec des droits administratifs. Les fichiers ouverts servent aussi à repérer un verrou ou un client inattendu, mais ne prouvent pas à eux seuls la cause.
SMB Multichannel peut augmenter le débit et la tolérance aux pannes avec plusieurs interfaces ou RSS. SMB Direct utilise RDMA pour réduire latence et CPU lorsque la pile complète le prend en charge. Ne forcez ni l'un ni l'autre sans vérifier les cartes, pilotes, commutateurs et chemins réellement utilisés.
Get-SmbConnection | Format-Table ServerName,ShareName,UserName,Dialect,NumOpens -Auto
Get-SmbMultichannelConnection | Format-Table ServerName,ClientIPAddress,ServerIPAddress,Selected,ClientRssCapable,ServerRssCapable -Auto
Get-SmbClientConfiguration | Select-Object EnableMultiChannel,EnableSecuritySignature,RequireSecuritySignature,EnableInsecureGuestLogonsGet-SmbSession | Format-Table ClientComputerName,ClientUserName,Dialect,NumOpens,SecondsIdle -Auto
Get-SmbOpenFile | Sort-Object ClientComputerName,Path | Select-Object ClientComputerName,ClientUserName,Path,Locks
Get-SmbServerConfiguration | Select-Object EnableMultiChannel,EnableSecuritySignature,RequireSecuritySignature,EncryptData4. Mesurer le réseau sans confondre débit et latence
Une liaison à 1 ou 10 Gb/s n'assure ni faible latence, ni absence de perte. Les petits fichiers et les applications bavardes réagissent fortement aux allers-retours; une copie séquentielle mesure surtout le débit. Comparez les mêmes opérations depuis le même client, puis depuis un autre segment.
Ping peut donner un signal, mais certains équipements filtrent ICMP. Pathping estime perte et latence sur les sauts; il ne remplace pas une capture ciblée lorsque les retransmissions TCP ou les pauses sont soupçonnées. Corrélez avec les compteurs d'interface des deux extrémités.
$Server = 'FS01.contoso.example'
Test-NetConnection $Server -Port 445 -InformationLevel Detailed
pathping $Server
Get-NetAdapter | Sort-Object Name | Format-Table Name,Status,LinkSpeed,DriverInformation -Auto
Get-NetAdapterStatistics | Format-Table Name,ReceivedDiscardedPackets,ReceivedPacketErrors,OutboundDiscardedPackets,OutboundPacketErrors -Auto
Get-NetTCPConnection -RemotePort 445 | Format-Table LocalAddress,RemoteAddress,State,OwningProcess -Auto5. Comparer un gros fichier et de nombreux petits fichiers
Créez à l'avance un jeu de données non sensible dans un partage de test. Exécutez le même test hors production et consignez la durée, les octets et les fichiers par seconde. Robocopy /J utilise des E/S non mises en cache, ce qui aide pour un gros fichier; /MT peut accélérer de nombreux fichiers, mais il change la concurrence et ne doit pas servir à dissimuler une latence anormale.
Une copie locale sur le volume serveur aide à séparer réseau et stockage, mais elle reste une opération d'E/S. Utilisez un dossier jetable, une fenêtre approuvée et supprimez-le par le processus normal après le test. Ne lancez pas DiskSpd en écriture sur un volume de production.
robocopy C:\PerfTest \\FS01\PerfTest$ large.bin /J /R:0 /W:0 /NP /LOG:C:\Temp\large-file.log
robocopy C:\PerfTest\Small \\FS01\PerfTest$\Small /E /R:0 /W:0 /NP /LOG:C:\Temp\small-files.log
rem Répéter ensuite avec /MT:8 pour mesurer l'effet de la concurrence, pas comme correctif automatique.6. Corréler SMB, CPU, mémoire, réseau et disque
Capturez les compteurs pendant le scénario, pas plusieurs heures plus tard. Les instances SMB Client Shares, SMB Server Shares et SMB Server Sessions rapprochent la demande du partage. Microsoft prévient que certains compteurs SMB côté serveur peuvent avoir un impact significatif sur une charge d'E/S élevée; utilisez une période courte et représentative.
Avg. Disk sec/Read et Write indiquent le temps observé par Windows, mais une moyenne masque les pointes et ne révèle pas toujours la couche fautive dans une VM, un SAN ou une baie. Comparez à la base normale du même service et à la sensibilité de l'application plutôt qu'à un seuil Internet universel.
$Counters = @(
'\Processor(_Total)\% Processor Time',
'\Memory\Available MBytes',
'\PhysicalDisk(*)\Avg. Disk sec/Read',
'\PhysicalDisk(*)\Avg. Disk sec/Write',
'\PhysicalDisk(*)\Disk Transfers/sec',
'\Network Interface(*)\Bytes Total/sec',
'\SMB Server Shares(*)\Data Bytes/sec',
'\SMB Server Sessions(*)\Data Bytes/sec'
)
Get-Counter -Counter $Counters -SampleInterval 2 -MaxSamples 307. Prouver l'impact antivirus avant toute exclusion
L'antivirus peut ajouter du travail lorsqu'une application ouvre, crée et renomme rapidement des milliers de fichiers. Il peut aussi être accusé à tort alors que le stockage attend déjà. L'analyseur de performance Microsoft Defender enregistre les événements du moteur antimalware pendant une reproduction et classe les chemins, fichiers, extensions et processus qui consomment le temps d'analyse.
Une présence dans le rapport ne justifie pas automatiquement une exclusion. Confirmez l'éditeur, le type de données, le risque, le processus réel et l'amélioration mesurable. Préférez une portée précise, un propriétaire et une date de révision. N'excluez jamais un volume, le processus d'une application entière ou des extensions exécutables simplement pour gagner du débit.
New-MpPerformanceRecording -RecordTo C:\Temp\Defender-FileServer.etl
# Reproduire une seule fois le scénario, puis appuyer sur Entrée.
Get-MpPerformanceReport -Path C:\Temp\Defender-FileServer.etl -TopFiles 20 -TopProcesses 20 -TopExtensions 20
Get-MpPreference | Select-Object ExclusionPath,ExclusionProcess,ExclusionExtension8. Examiner le stockage et les filtres dans leur contexte
Vérifiez l'espace libre, l'état des volumes et les événements de stockage. Sur une machine virtuelle, demandez aussi les métriques de l'hyperviseur et de la baie : le système invité peut voir une pause sans connaître la file d'attente physique, un snapshot ou une reconstruction RAID.
Les pilotes de filtre du système de fichiers appartiennent aux antivirus, sauvegardes, réplications, chiffrement, déduplication et outils DLP. Leur simple présence n'est pas une faute. Cherchez plutôt une corrélation temporelle et la version du pilote; mettez à jour ou reconfigurez avec l'éditeur plutôt que de retirer un filtre à chaud.
Get-Volume | Sort-Object DriveLetter | Format-Table DriveLetter,FileSystem,HealthStatus,SizeRemaining,Size -Auto
Get-PhysicalDisk | Format-Table FriendlyName,MediaType,HealthStatus,OperationalStatus,Size -Auto
Get-PhysicalDisk | Get-StorageReliabilityCounter -ErrorAction SilentlyContinue
Get-WinEvent -FilterHashtable @{LogName='System'; StartTime=(Get-Date).AddHours(-4)} |
Where-Object ProviderName -Match 'disk|stor|ntfs|refs|volsnap' |
Select-Object TimeCreated,ProviderName,Id,LevelDisplayName,Message
fltmc filters9. Ne pas affaiblir SMB pour masquer une lenteur
La signature et le chiffrement SMB consomment des ressources, surtout sur du matériel ancien, mais les désactiver change la protection contre la falsification, le relais et l'écoute. Windows 11 24H2 Enterprise, Pro et Education exige la signature SMB entrante et sortante; Windows Server 2025 exige la signature sortante par défaut. Traitez un écart comme une décision d'architecture et de capacité, pas comme un truc de dépannage.
Mesurez CPU, dialecte, algorithme, débit et matériel. Mettez à jour les pilotes et le microcode, puis testez une correction compatible. Les anciennes modifications de registre liées aux crédits ou aux threads SMB ne doivent pas être copiées depuis un billet générique : Microsoft précise que plusieurs réglages sont dépendants de la version et qu'ils ne conviennent pas à tous les serveurs.
10. Transformer les mesures en diagnostic
Une corrélation n'est pas encore une cause. Changez une seule variable, définissez le résultat attendu et gardez un retour arrière. Si la mesure ne s'améliore pas ou si un autre risque apparaît, annulez le changement.
| Constat reproductible | Cause à tester | Prochaine validation |
|---|---|---|
| Nom lent, IP rapide | DNS ou Kerberos, pas simplement SMB | Résolution, SPN, billets, alias |
| Petits fichiers lents, gros fichier normal | Latence, métadonnées ou analyse | RTT, filtre, processus, IOPS |
| Copie locale et SMB lentes | Stockage, filtre ou CPU serveur | Compteurs, événements, baie |
| Copie locale normale, SMB lent sur un site | Réseau ou chemin client | Perte, retransmissions, VPN, MTU |
| Un seul client lent | NIC, pilote, DNS, sécurité ou application | Client témoin sur le même port |
| Pic aux heures de sauvegarde | Contention planifiée | Chronologie, volume, limite et fenêtre |
| Defender domine l'enregistrement | Analyse d'un chemin ou processus précis | Exception minimale en pilote, puis mesure |
| Multichannel absent | Topologie ou capacité non admissible | RSS, interfaces, routes, support |
Collecte légère et opérations à réserver à une fenêtre
| Collecte légère | À planifier avec prudence |
|---|---|
| DNS, TCP 445, Get-SmbConnection et sessions | Capture réseau longue ou débogage verbeux |
| Échantillon court de compteurs | Compteurs SMB serveur continus sous forte E/S |
| État des volumes, NIC et événements | DiskSpd ou test d'écriture soutenu |
| Rapport Defender pendant une reproduction | Désactivation de protection ou exclusion large |
| Robocopy limité dans un dossier jetable | Copie massive sur le volume de production |
| Inventaire des filtres | Retrait de pilote, changement registre ou redémarrage |
Plan d'action réutilisable
Pour un incident critique, protégez d'abord l'intégrité des données et la capacité de retour arrière. Une analyse d'infrastructure complète doit ensuite relier les mesures Windows à l'hyperviseur, au réseau, à la baie, aux sauvegardes et aux objectifs de service. Ce guide accélère le triage; il ne remplace pas cette validation bout en bout.
- T0 — consigner heure, utilisateur, chemin, opération, nombre et taille des fichiers.
- T+5 — capturer DNS, port 445, connexion SMB, client, serveur et changements récents.
- T+15 — reproduire gros fichier et petits fichiers en corrélant réseau, SMB, CPU et disque.
- T+30 — analyser Defender et les filtres seulement si les données pointent vers l'analyse.
- Triage — classer DNS/authentification, client, réseau, SMB, filtre ou stockage.
- Correction — une modification, propriétaire, fenêtre, critère de succès et retour arrière.
- Après — comparer avant/après, surveiller une période représentative et documenter la cause.