DetailPage-MSS-KB

Base de connaissances

Numéro d'article: 187941 - Dernière mise à jour: jeudi 11 mai 2006 - Version: 4.1

Pour vous procurer une version Microsoft Windows XP de cet article, reportez-vous à l'article 314835  (http://support.microsoft.com/kb/314835/ ) .

Sommaire

Résumé

Dans Windows NT version 4.0 Service Pack 4 (SP4) et Windows 2000, deux nouveaux commutateurs ont été ajoutés à Chkdsk.exe. Ces commutateurs permettent aux utilisateurs de mieux gérer les temps morts provoqués par l'exécution de CHKDSK ou AUTOCHK.

Les commutateurs qui ont été ajoutés à Windows NT 4.0 SP4 et Windows 2000 sont /C et /I ; ils sont valides uniquement lorsque le lecteur cible est au format NTFS. Chaque commutateur indique au programme CHKDSK d'ignorer certaines actions qu'il effectuerait normalement pour valider l'intégrité des structures de données NTFS.

Avertissement Microsoft déconseille d'interrompre le processus CHKDSK lorsqu'il est utilisé avec le commutateur /f ; l'intégrité du disque n'est pas garantie en cas d'interruption du programme CHKDSK.

Plus d'informations

Chkdsk.exe est l'interface de ligne de commande d'un programme qui vérifie l'intégrité logique d'un système de fichiers sur Windows. Lorsque CHKDSK rencontre des incohérences logiques, il prend des mesures afin de réparer les données du système de fichiers, à condition qu'il ne soit pas en mode lecture seule.

Le code qui effectue la vérification lorsque CHKDSK est exécuté en ligne réside dans des DLL utilitaires telles que Untfs.dll et Ufat.dll. Les routines de vérification appelées par CHKDSK sont identiques à celles appelées lors de la vérification d'un volume par le biais de l'interface graphique utilisateur de l'Explorateur Windows ou d'Administrateur de disques. En revanche, lorsque CHKDSK est programmé pour s'exécuter au redémarrage, le module binaire qui contient le code de vérification est Autochk.exe. Autochk.exe est une application Windows native qui s'exécute si tôt dans la séquence d'amorçage système qu'elle ne tire pas parti de la mémoire virtuelle ni d'autres services Win32. Autochk.exe génère le même type de sortie textuelle que les DLL utilitaires appelées par Chkdsk.exe. Mais en plus d'afficher cette sortie à l'écran durant le processus d'amorçage, Autochk.exe enregistre également un événement dans le journal des événements d'applications du système contenant autant de sortie textuelle que le tampon de données du journal des événements peut en contenir.

Étant donné qu'Autochk.exe et le code de vérification dans les DLL utilitaires utilisées par Chkdsk.exe sont basés sur le même code source, nous utiliserons le terme générique « CHKDSK » pour faire référence à ces deux utilitaires dans le reste de cet article. De même, cet article traitant uniquement des modifications du comportement de CHKDSK en ce qui concerne les volumes NTFS, il est entendu que lorsqu'il est écrit « CHKDSK effectue telle ou telle opération », cela signifie « CHKDSK effectue telle ou telle opération lorsque vous l'exécutez sur un volume NTFS ».

L'utilisation des commutateurs /C et /I pouvant laisser un volume dans un état endommagé même après l'exécution de CHKDSK, elle n'est recommandée que dans les situations où les temps morts doivent être réduits à un minimum. Ces commutateurs sont destinés à être utilisés par des utilisateurs ayant des volumes exceptionnellement grands et qui requièrent une certaine flexibilité pour gérer les temps morts provoqués par l'exécution de CHKDSK sur de tels volumes.

Pour déterminer quand il peut être approprié d'utiliser ces commutateurs, il convient de connaître certaines des structures de données NTFS internes ainsi que les types d'endommagement possibles, les mesures prises par CHKDSK lors de la vérification d'un volume et les conséquences potentielles si vous contournez les étapes de vérification habituelles de CHKDSK.

L'activité de CHKDSK est divisée en trois « phases » majeures, au cours desquelles il examine toutes les « métadonnées » sur le volume, et une quatrième phase facultative. Les métadonnées sont des « données à propos des données ». Elles représentent pour ainsi dire la fonction auxiliaire du système de fichiers, qui est utilisée pour effectuer le suivi des informations concernant tous les fichiers du volume. Les métadonnées indiquent quelles unités d'allocation constituent les données pour un fichier, quelles unités d'allocation sont libres, quelles unités d'allocation contiennent des secteurs défectueux, et ainsi de suite. Le « contenu » d'un fichier, en revanche, est nommé « données utilisateur ». Le système NTFS protège ses métadonnées par le biais d'un journal des transactions. Les données utilisateur ne sont pas protégées de cette manière.

Durant sa phase initiale, CHKDSK affiche un message à l'écran signalant qu'il vérifie les fichiers, accompagné d'un indicateur de progression de 0 à 100 pour cent. Pendant cette phase, CHKDSK examine chaque segment d'enregistrement de fichier (FRS, File Record Segment) dans la table de fichiers maîtres (MFT, Master File Table) du volume. Chaque fichier et répertoire sur un volume NTFS est identifié de manière unique par un segment FRS spécifique dans la table MFT et le pourcentage d'achèvement affiché par CHKDSK durant cette phase correspond au pourcentage de la table MFT qui a été vérifié. Pendant cette phase, CHKDSK examine chaque segment FRS pour en vérifier la cohérence interne et génère deux bitmaps, un représentant les segments FRS qui sont en cours d'utilisation et l'autre représentant les clusters en cours d'utilisation sur le volume. À la fin de cette phase, CHKDSK connaît l'espace en cours d'utilisation et l'espace disponible, à la fois dans la table MFT et sur le volume dans son ensemble. Le système NTFS assure le suivi de ces informations dans ses propres bitmaps qui sont stockés sur le disque, ce qui permet à CHKDSK de comparer ses résultats avec les bitmaps stockés du système NTFS. En cas de différences, celles-ci sont notées dans la sortie CHKDSK. Par exemple, si un segment FRS en cours d'utilisation est jugé endommagé, les clusters de disque auparavant associés à ce segment FRS finiront marqués comme « disponibles » dans le bitmap de CHKDSK, mais comme « en cours d'utilisation » par le bitmap du système NTFS.

Durant sa deuxième phase, CHKDSK affiche un message à l'écran signalant qu'il vérifie les index, accompagné d'un deuxième indicateur de progression de 0 à 100 pour cent. Au cours de cette phase, CHKDSK examine chacun des index sur le volume. Les index sont essentiellement des répertoires NTFS et l'indicateur de pourcentage d'achèvement affiché par CHKDSK pendant cette phase représente le pourcentage du nombre total de répertoires du volume qui a été vérifié. Pendant cette phase, CHKDSK examine chaque répertoire sur le volume, en contrôlant la cohérence interne et en vérifiant que chaque fichier et chaque répertoire représentés par un segment FRS dans la table MFT sont référencés par au moins un répertoire. Il confirme également que chaque fichier ou sous-répertoire référencé dans chaque répertoire existe réellement en tant que segment FRS valide dans la table MFT et contrôle les références de répertoires circulaires. Enfin, il confirme que les différents horodatages et informations de taille de fichier associés aux fichiers sont tous à jour dans les entrées de répertoires pour ces fichiers. À la fin de cette phase, CHKDSK a vérifié qu'il n'existe pas de fichiers « orphelins » et que toutes les entrées de répertoires correspondent à des fichiers légitimes. Un fichier orphelin est un fichier pour lequel il existe un segment FRS légitime, mais qui n'est répertorié dans aucun répertoire. Lorsqu'un fichier orphelin est trouvé, il peut souvent être restauré dans son répertoire légitime, à condition que celui-ci existe encore. Si le répertoire qui doit contenir le fichier n'existe plus, CHKDSK crée un répertoire dans le répertoire racine et y place le fichier. Si CHKDSK trouve des entrées de répertoires faisant référence à des segments FRS qui ne sont plus en cours d'utilisation ou qui sont en cours d'utilisation mais qui ne correspondent pas au fichier répertorié dans le répertoire, l'entrée de répertoire est simplement supprimée.

Durant sa troisième phase, CHKDSK affiche un message à l'écran signalant qu'il vérifie les descripteurs de sécurité, accompagné d'un troisième indicateur de progression de 0 à 100 pour cent. Au cours de cette phase, CHKDSK examine chaque descripteur de sécurité associé à chaque fichier et répertoire du volume. Les descripteurs de sécurité contiennent des informations concernant le propriétaire d'un fichier ou d'un répertoire, l'autorisation NTFS du fichier ou répertoire, ainsi que des informations d'audit pour le fichier ou le répertoire. Dans ce cas, le pourcentage d'achèvement représente le pourcentage du nombre de fichiers et de répertoires sur le volume. CHKDSK vérifie que chaque structure de descripteur de sécurité est bien formée et a une cohérence interne. Il ne vérifie pas que les utilisateurs ou groupes répertoriés existent réellement, ni que les autorisations accordées sont appropriées.

La quatrième phase de CHKDSK est appelée uniquement si le commutateur /R est utilisé. Ce commutateur est utilisé pour rechercher des secteurs défectueux dans l'espace libre du volume. Lorsqu'il est utilisé, CHKDSK essaie de lire chaque secteur du volume pour confirmer qu'il est utilisable. Les secteurs associés à des métadonnées sont lus durant l'exécution normale de CHKDSK, même lorsque le commutateur /R n'est pas utilisé. Les secteurs associés à des données utilisateur sont lus durant les premières phases de CHKDSK, à condition que le commutateur /R soit spécifié. Lorsqu'un secteur illisible est détecté, le système NTFS ajoute le cluster contenant ce secteur à sa liste de clusters défectueux et, si le cluster était en cours d'utilisation, il alloue un nouveau cluster pour effectuer le travail de l'ancien cluster. En cas d'utilisation d'un pilote de disque à tolérance de panne, les données sont récupérées et écrites dans le cluster nouvellement alloué. Sinon, le nouveau cluster est rempli d'un motif d'octets 0xFF. Lorsque le système NTFS rencontre des secteurs illisibles durant le fonctionnement normal, il les remappe également de la même manière. Par conséquent, le commutateur /R n'est généralement pas essentiel, mais il peut être utilisé comme mécanisme commode pour analyser l'ensemble du volume si un disque est soupçonné avoir des secteurs défectueux.

Les paragraphes précédents ne fournissent qu'une description générale des opérations effectuées réellement par CHKDSK pour vérifier l'intégrité d'un volume NTFS. Chaque phase comporte de nombreux contrôles spécifiques et plusieurs contrôles rapides (qui ne sont pas mentionnés ici) sont effectués entre les différentes phases. Cette section ne fournit qu'un aperçu des facettes les plus importantes de l'activité de CHKDSK en guise de fondement pour la discussion suivante concernant le temps nécessaire à l'exécution de CHKDSK et l'impact des nouveaux commutateurs fournis dans le SP4.

Durant les première et troisième phases de CHKDSK, l'indicateur de pourcentage d'achèvement progresse de façon relativement fluide. Il peut toutefois y avoir une certaine irrégularité dans la vitesse à laquelle ces phases progressent. Les segments FRS qui ne sont pas en cours d'utilisation nécessitent moins de temps que ceux en cours d'utilisation. Les descripteurs de sécurité plus grands sont plus longs à traiter que les segments plus petits, et ainsi de suite. Mais globalement, le pourcentage d'achèvement affiché est une représentation assez exacte de la durée requise pour cette phase.

Cela n'est pas forcément valable pour la deuxième phase de CHKDSK. La durée requise pour traiter un répertoire est étroitement liée au nombre de fichiers ou de sous-répertoires présents dans ce répertoire. Mais le pourcentage d'achèvement indiqué pendant cette phase correspond au pourcentage du nombre de répertoires à examiner, sans considération du fait que certains répertoires peuvent être beaucoup plus longs à traiter que d'autres. Par exemple, sur un volume avec de nombreux petits répertoires et un très grand répertoire, le pourcentage de progression peut passer rapidement de 0 à 10 pour cent, puis sembler être figé pendant une durée prolongée, avant de progresser rapidement de 10 à 100 pour cent. Par conséquent, à moins que vous ne soyez sûr que les répertoires sur un volume sont très uniformes en ce qui concerne le nombre de fichiers, le pourcentage d'achèvement affiché durant cette phase ne peut être considéré comme une représentation fiable du temps réel restant pour cette phase.

Qui plus est, en cas de procédure CHKDSK inattendue, la deuxième phase de CHKDSK est celle qui prend en général le plus de temps à s'exécuter.

À présent, on comprend pourquoi de nombreux facteurs liés à l'état d'un volume jouent un rôle dans la durée nécessaire à l'exécution de CHKDSK. Une formule visant à prédire la durée requise pour exécuter CHKDSK sur un volume donné devrait prendre en considération des facteurs tels que le nombre de fichiers et de répertoires, le degré de fragmentation du volume en général et de la table de fichiers maîtres en particulier, le fait que les fichiers ont des noms longs et des noms au format 8.3, ainsi que l'étendue des dommages à réparer. Et cela ne tient pas compte des facteurs matériels tels que la quantité de mémoire système, la vitesse du processeur, la vitesse des disques, et ainsi de suite.

Plutôt que de tenter de prédire la durée nécessaire à l'exécution de CHKDSK pour un volume donné sur une plateforme matérielle donnée, on ne peut qu'affirmer que cela peut prendre de quelques secondes à plusieurs jours, selon la situation spécifique. À moins que le commutateur /R soit utilisé, pour une plateforme matérielle donnée, le facteur le plus déterminant est le nombre de fichiers et de répertoires plutôt que la taille absolue du volume. Autrement dit, l'exécution de CHKDSK sur un volume de 50 Go avec un ou deux grands fichiers de base de données ne prendra que quelques secondes, à condition que le commutateur /R ne soit pas spécifié. Si le commutateur /R est spécifié, CHKDSK devra lire et vérifier chaque secteur sur le volume, ce qui rallonge nettement la durée d'exécution pour les grands volumes. En revanche, l'exécution de CHKDSK sur un volume relativement petit peut nécessiter plusieurs heures s'il contient des centaines de milliers ou des millions de petits fichiers, que le commutateur /R soit spécifié ou non.

La meilleure façon d'estimer la durée d'exécution de CHKDSK sur un volume donné est d'effectuer un essai en mode lecture seule pendant une période d'utilisation réduite du système. Il convient toutefois d'être prudent lors de l'utilisation de cette technique, pour trois raisons :
  • En mode lecture seule, CHKDSK se ferme avant de terminer les trois phases s'il rencontre des erreurs dans les premières phases et il est enclin à signaler des erreurs de manière incorrecte. Autrement dit, CHKDSK peut signaler qu'un disque est endommagé même lorsque aucune altération n'est réellement présente. Cela peut se produire si le système NTFS modifie des zones du disque pour le compte d'une certaine activité de programme que CHKDSK examine en même temps. Pour effectuer une vérification correcte d'un volume, celui-ci doit être à l'état statique ; la seule façon de garantir cet état consiste à verrouiller le volume. CHKDSK verrouille uniquement le volume lorsque le commutateur /F ou /R (qui implique « F ») est spécifié. Par conséquent, vous devrez peut-être exécuter CHKDSK plusieurs fois pour qu'il achève toutes les phases en mode lecture seule.
  • La charge système et le fait que CHKDSK s'exécute en ligne ou pendant la séquence d'amorçage de Windows NT peuvent avoir un impact sur la durée nécessaire à l'exécution de CHKDSK. CHKDSK utilise à la fois beaucoup de temps processeur et de disque. Le facteur susceptible de devenir un goulot d'étranglement dépendra du scénario matériel spécifique, mais si une utilisation intensive du processeur et une quantité importante d'E/S disque sont constatées pendant une exécution de CHKDSK en lecture seule, la durée d'exécution s'en verra accrue. En outre, Autochk.exe s'exécute dans un environnement différent de celui de Chkdsk.exe. Bien que l'exécution de CHKDSK par le biais d'Autochk.exe donne à CHKDSK l'utilisation exclusive des ressources processeur et E/S, elle empêche également CHKDSK d'utiliser la mémoire virtuelle. Par conséquent, si l'on peut s'attendre généralement à ce qu'Autochk.exe s'exécute plus rapidement que Chkdsk.exe, l'exécution d'Autochk.exe sur des systèmes disposant d'une quantité de RAM relativement faible peut être plus longue que celle de Chkdsk.EXE.
  • La correction des dommages augmente le temps d'exécution. Une exécution de CHKDSK en lecture seule peut s'achever uniquement si aucun dommage significatif n'est détecté. Si un disque présente uniquement des dommages mineurs, la durée nécessaire pour résoudre les problèmes ne sera que légèrement supérieure à celle requise pour CHKDSK en lecture seule. Mais si les dommages sont importants, par exemple suite à un incident de tête de lecture ou à une défaillance matérielle majeure, la durée requise pour exécuter CHKDSK peut être proportionnelle au nombre de fichiers endommagés. Dans les cas extrêmes, cela pourrait plus que doubler la durée d'exécution de CHKDSK.

Présentation des commutateurs /C et /I

Le commutateur /C indique à CHKDSK d'ignorer les vérifications qui détectent des cycles dans la structure de répertoire. Les cycles sont une forme très rare d'endommagement dans laquelle un sous-répertoire est son propre ancêtre. L'utilisation du commutateur /C peut accélérer l'exécution de CHKDSK d'environ un à deux pour cent. Elle peut également laisser des « boucles » de répertoire sur un volume NTFS. De telles boucles peuvent être inaccessibles à partir du reste de l'arborescence et peuvent rendre certains fichiers orphelins, dans le sens où ils ne peuvent pas être vus par les applications Win32, y compris les applications de sauvegarde.

Le commutateur /I indique à CHKDSK d'ignorer les vérifications qui comparent des entrées de répertoires aux segments FRS correspondant à ces entrées. Par conséquent, bien que les entrées de répertoires soient tout de même vérifiées afin de s'assurer qu'elles sont autocohérentes, elles ne sont pas nécessairement cohérentes avec les données stockées dans leur segments FRS correspondants, même après l'exécution de CHKDSK avec ce commutateur. L'utilisation du commutateur /I réduit en général la durée d'exécution de CHKDSK de 50 à 70 pour cent. La durée exacte dépendra de facteurs tels que le ratio fichiers/répertoires, ainsi que de la vitesse relative des E/S de disque par rapport à la vitesse du processeur ; il est donc difficile de la prédire. L'utilisation du commutateur /I peut faire en sorte qu'il reste des entrées de répertoires faisant référence à des segments FRS incorrects ou qu'il reste des segments FRS non référencés par aucune entrée de répertoire. Ce dernier cas est une autre forme d'orphelinat. Le fichier représenté par le segment FRS peut être intact à tout point de vue, hormis le fait qu'il est invisible à toutes les applications Win32, y compris les applications de sauvegarde. Dans le premier cas, des fichiers peuvent sembler exister, mais des applications rencontrent des erreurs lorsqu'elles tentent d'y accéder.

En cas de détection de dommages sur un volume, vous disposez de trois options de base.

  • Ne rien faire. Pour un serveur stratégique qui doit fonctionner 24 heures sur 24, cette option est souvent utilisée par nécessité. Son inconvénient est que des dommages relativement mineurs peuvent faire boule de neige et se transformer en dommages majeurs s'ils ne sont pas réparés dès que possible après leur détection. Par conséquent, cette option doit être considérée uniquement lorsque la disponibilité d'un système est plus importante que l'intégrité des données stockées sur le volume endommagé car toutes les données sur le volume endommagé doivent être considérées « à risque » jusqu'à ce que CHKDSK soit exécuté.
  • Exécuter un CHKDSK complet. Cette option répare toutes les données du système de fichiers et restaure toutes les données utilisateur qui peuvent être récupérées au moyen d'un processus automatisé. L'inconvénient de cette option est que l'exécution d'une opération CHKDSK complète peut nécessiter plusieurs heures de temps mort de votre serveur stratégique à un moment inopportun.
  • Exécuter un CHKDSK abrégé à l'aide d'une combinaison des commutateurs /C et /I. Cette option répare les types de dommages qui peuvent se transformer en problèmes plus importants en beaucoup moins de temps qu'un CHKDSK complet, mais elle ne répare pas tous les dommages qui peuvent exister. Un CHKDSK complet sera encore requis ultérieurement afin de garantir que toutes les données qui peuvent être récupérées ont été récupérées.
Il convient de noter que le système NTFS ne garantit pas l'intégrité des données utilisateur après une instance de disque endommagé, même lorsque vous exécutez une opération CHKDSK complète juste après la détection du problème. Par conséquent, il peut y avoir des fichiers que CHKDSK ne peut récupérer. De plus, les fichiers qui sont récupérés peuvent être endommagés en interne même après l'exécution de CHKDSK. Il est donc essentiel que les données critiques soient protégées au moyen d'un régime de sauvegardes périodiques ou autre méthodologie de récupération d'urgence fiable.

Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Windows NT Server 4.0 Terminal Server
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professionel
  • Microsoft Windows 2000 Datacenter Server
  • Microsoft Windows NT Workstation 4.0 Édition Développeur
  • Microsoft Windows NT 4.0 Service Pack 4
Mots-clés : 
kbfea kbfix kbinfo KB187941
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.
Partager
Options de support supplémentaire
Forums du support Microsoft Community
Nous contacter directement
Trouver un partenaire Microsoft Certified Partner
Microsoft Store