Serveur de fichiers lent : diagnostiquer SMB, DNS, antivirus et stockage

Isolez une lenteur de serveur de fichiers avec des mesures SMB, DNS, réseau, antivirus et stockage, sans désactiver les protections ni appliquer des réglages au hasard.

01

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ômePremière comparaisonPistes fréquentes
Dossier lent à afficherNom contre IP, petit contre grand dossierDNS, métadonnées, filtre, latence
Gros fichier lentClient, serveur local et autre réseauDébit, perte, SMB, stockage
Petits fichiers lentsUn gros fichier de taille totale équivalenteAllers-retours, antivirus, métadonnées
Une seule applicationExplorateur ou Robocopy sur le même cheminApplication, verrou, filtre, modèle d'accès
Lenteur intermittenteChronologie des sauvegardes et tâchesContention, analyse, croissance, réplication
02

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.
03

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.

PowerShell — résolution et connectivité en lecture seule
$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 -Auto
04

3. 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.

Client — connexion, configuration et canaux
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,EnableInsecureGuestLogons
Serveur — sessions, fichiers et configuration
Get-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,EncryptData
05

4. 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.

PowerShell et Windows — état du chemin réseau
$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 -Auto
06

5. 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.

Invite de commandes — test contrôlé vers un dossier jetable
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.
07

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.

PowerShell — échantillon court de compteurs
$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 30
08

7. 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.

PowerShell administrateur — enregistrement Defender ciblé
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,ExclusionExtension
09

8. 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.

PowerShell — capacité, fiabilité et événements
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 filters
10

9. 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.

11

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 reproductibleCause à testerProchaine validation
Nom lent, IP rapideDNS ou Kerberos, pas simplement SMBRésolution, SPN, billets, alias
Petits fichiers lents, gros fichier normalLatence, métadonnées ou analyseRTT, filtre, processus, IOPS
Copie locale et SMB lentesStockage, filtre ou CPU serveurCompteurs, événements, baie
Copie locale normale, SMB lent sur un siteRéseau ou chemin clientPerte, retransmissions, VPN, MTU
Un seul client lentNIC, pilote, DNS, sécurité ou applicationClient témoin sur le même port
Pic aux heures de sauvegardeContention planifiéeChronologie, volume, limite et fenêtre
Defender domine l'enregistrementAnalyse d'un chemin ou processus précisException minimale en pilote, puis mesure
Multichannel absentTopologie ou capacité non admissibleRSS, interfaces, routes, support
12

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 sessionsCapture réseau longue ou débogage verbeux
Échantillon court de compteursCompteurs SMB serveur continus sous forte E/S
État des volumes, NIC et événementsDiskSpd ou test d'écriture soutenu
Rapport Defender pendant une reproductionDésactivation de protection ou exclusion large
Robocopy limité dans un dossier jetableCopie massive sur le volume de production
Inventaire des filtresRetrait de pilote, changement registre ou redémarrage
13

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.