Mon disque est plein!


Dans cet article, nous allons aborder le sujet des espaces disque.

Il arrive qu'une partition se retrouve complètement remplie alors que nous étions persuadés qu'il lui reste encore pas mal d'espace libre.

Différentes sources peuvent être à l'origine d'une telle situation:

  • Un snapshot VSS qui prendrait de la place
  • Des permissions qui manquent pour voir tous les fichiers
  • Des flux alternatifs
  • Des descripteurs de sécurité

Nous ne détaillerons pas les deux premiers cas et nous intéresserons surtout aux deux derniers qui sont le moins connus.

Les stream alternatifs, ou Alternate Data Stream (ADS)

Dans cet exemple, nous avons une partition de 1 GB sur laquelle il ne reste plus que 93 MB de disponible.

clip_image001

Ceci est la vérité.

Vous pouvez utiliser tous les outils que vous souhaitez, la vérité sera fournie par Windows, et il y a plusieurs façons de la voir:

1. La copie d'écran ci-dessus

2. Un click droit propriétés sur le volume vous indique également que 927 MB sont utilisés et qu'il ne reste que 93 MB de disponible

clip_image002

3. Sélectionner le contenu de la partition pour en lister le contenu donne également une idée de la situation car on constate que 3.47 MB de fichiers occupent 903 MB sur le disque:

clip_image003

clip_image004

En général, nous sommes habitués à avoir le contraire avec la compression NTFS et ce n'est de toutes les façons pas le cas dans notre cas. Nous reviendrons plus tard sur ce point.

4. Chkdsk est de toutes les manières l'outil ultime qui vous fournira la vérité absolue sur le taux d'utilisation de votre partition.

clip_image005

Le compte rendu est très important à lire, car il peut nous fournir l'indice d'une autre source de ce problème qui est fort peu connu : Le champ "in use by the system". Dans le cas présent cette partie est négligeable, et on voit bien que nous avons 32 fichiers qui occupent 940128 KB sur le disque.

Revenons à la différence remontée dans la 3ième méthode : 3 MB de données occupant 903 MB sur le disque. Pour cet exemple (nous avons très peu de répertoires et de fichiers) il est facile de se rapprocher au plus près.

Voyons ce fichier qui est sensé n'occuper que 18 Bytes mais qui occupe 497 MB sur le disque

clip_image006

Vu son contenu, on ne l'imagine pas occuper plus des 18 bytes mentionnés:

clip_image007

Le fin mot de l'histoire nous sera fournit par la commande "DIR" avec l'option "/R" qui a été rajoutée dans les dernières versions de Windows. Cette option permet de fournir les Alternate Data Stream qui pouraient être ajoutés à des fichiers. Sur les ancienes versions de Windows dans lesquelles nous ne pouvons pas utiliser "dir /R", il est possible d'utiliser streams.exe pour obtenir cette information. Cf : https://technet.microsoft.com/en-us/sysinternals/bb897440.aspx

clip_image008

Il faut savoir que chaque fichier possède un stream principal (grosso modo, son contenu) et potentiellement un stream secondaire, plus communément appelé Alternate Data Stream (ADS). Plusieurs articles traitent de ce sujet, dont https://msdn.microsoft.com/en-us/library/windows/desktop/aa364404(v=vs.85).aspx. De nombreuses applications peuvent utiliser ces ADS (Antivirus, SQL, etc.)
Dans la copie d’écran ci-dessus: Fichier1.txt occupe 18 Bytes mais possède un ADS alt.txt qui occupe 520 MB, de même, le Fichier2.txt qui n’est sensé prendre que 88 KB possède un ADS de 420 MB. Les autres fichiers ne possèdent pas d’ADS.

Dans la situation d'un volume contenant plusieurs milliers de fichiers, il est possible de lancer un "DIR /S /R" voire de faire un pipe sur une commande findstr pour avoir la liste des fichiers ne contenant des ADS (Alternate Data Stream).

clip_image009

L'outil stream.exe mentionné plus haut permet de supprimer ces ADS mais vous pouvez avoir envie de savoir ce qu'ils contiennent. Utilisons notepad par exemple

clip_image010

Il s'agit visiblement d'un petit malin qui nous a fait une mauvaise blague

clip_image011

Les Security Descriptors

Prenons cette situation dans laquelle l'explorer nous montre 4 GB disponibles sur un disque de 99 GB

clip_image012

Passons outre les problèmes de permissions sur l'affichage et les snapshot VSS.

Dans ce cas-là, la taille des fichiers est la même que celle occupée sur le disque, donc a priori pas un problème de stream. Un Dir /S /R | findstr /C:"$DATA" ne nous montrera de toutes les façons rien dans la situation présente.

clip_image013

Dans toutes ces situations, il faut lancer un chkdsk pour avoir l'image la plus proche de la réalité:

The type of the file system is NTFS.
Volume label is Application.
...
104724479 KB total disk space.
32643000 KB in 56668 files.
4113996 KB in 4202 indexes.
0 KB in bad sectors.
59304299 KB in use by the system.
65536 KB occupied by the log file.
8663184 KB available on disk.

Le point crucial dans ce rapport est le "in use by the system" qui occupe 56 GB de données.

Cette partie là regroupe toutes les structures qui sont utilisées pour décrire les fichiers et répertoires. Ils ne sont pas mentionnés par un DIR et ne sont pas nécessairement résident dans la MFT. En effet, un record occupant généralement 1 Ko, il est possible que certaines informations ne soient pas stockées à même la MFT mais attachés au fichier lui-même. Par exemple les Security Descriptors.

Ca tombe bien, nos amis dévelopeurs ont ajouté la fonction /sdcleanup à chkdsk et c'est typiquement l'opération qu'il fait: Un nettoyage des Security Descriptors.

clip_image014

Cette opération prendra du temps (dans le cas que j'ai rencontré plus de 5 heures) mais un chkdsk /f /sdcleanup nous a permis de passer de 56 GB à 2 GB.

The type of the file system is NTFS.
Volume label is Application.
...
104724479 KB total disk space.
  33209888 KB in 44389 files.
     17592 KB in 4227 indexes.
         0 KB in bad sectors.
    217159 KB in use by the system.
     65536 KB occupied by the log file.
  71279840 KB available on disk.

Voilà, vous savez tout. Nous aurons probablement un article sur VSS en cours d’année pour détailler un peu ce qu'on trouver dans le System Volume Information.

Serge Gourraud

55 AA

Comments (0)

Skip to main content