Page d'accueil » comment » Pourquoi existe-t-il une grande différence entre taille et taille sur disque?

    Pourquoi existe-t-il une grande différence entre taille et taille sur disque?

    La plupart du temps, les valeurs de «Taille» et «Taille sur le disque» seront très proches de la correspondance lors de la vérification de la taille d'un dossier ou d'un fichier, mais que se passera-t-il s'il y a un écart énorme entre les deux? Le billet de questions et réponses du SuperUser d’aujourd’hui examine la réponse à ce problème déroutant.

    La séance de questions et réponses d'aujourd'hui nous est offerte par SuperUser, une sous-division de Stack Exchange, un groupe de sites Web de questions-réponses dirigé par la communauté..

    La question

    Le lecteur SuperUser thelastblack veut savoir pourquoi il existe une telle différence entre "Taille" et "Taille sur disque" pour un dossier situé sur la carte SD de son téléphone:

    Comme vous pouvez le voir ci-dessous, il y a tellement de différence entre les champs "Taille" et "Taille sur le disque" de ce dossier. Pourquoi donc?

    Je sais que «Taille sur le disque» devrait être un peu plus que «Taille» à cause des unités d'allocation dans Windows, mais pourquoi y a-t-il tant de différence? Serait-ce à cause du grand nombre de fichiers?

    BTW, ce dossier est sur la carte SD de mon téléphone Android. À l'intérieur de cela, mon application Cartes stocke ses cartes en cache, et l'application tire ses cartes de Google Maps..

    En regardant la capture d'écran, il y a vraiment un énorme écart entre "Taille" et "Taille sur le disque", donc qu'est-ce qui s'est passé ici pour causer cela?

    La réponse

    Le contributeur de SuperUser, Bob, a la solution pour nous:

    Je vais supposer que vous utilisez le système de fichiers FAT / FAT32 ici, puisque vous mentionnez qu'il s'agit d'une carte SD. NTFS et exFAT se comportent de la même manière en ce qui concerne les unités d’allocation. D'autres systèmes de fichiers peuvent être différents, mais ils ne sont quand même pas pris en charge par Windows.

    Si vous avez beaucoup de petits fichiers, c'est certainement possible. Considère ceci:

    • 50 000 fichiers
    • Taille de cluster de 32 Ko (unités d'allocation), ce qui correspond au maximum pour FAT32

    Ok, maintenant le le minimum l'espace pris est de 50 000 * 32 000 = 1,6 Go (en utilisant des préfixes SI, non binaires, pour simplifier les calculs). L'espace occupé par chaque fichier sur le disque correspond toujours à un multiple de la taille de l'unité d'allocation. Dans ce cas, nous supposons que chaque fichier est suffisamment petit pour tenir dans une seule unité, avec de l'espace (gaspillé) laissé..

    Si la taille moyenne de chaque fichier est de 2 Ko, vous obtenez environ 100 Mo au total, mais vous perdez également 15 fois (30 Ko par fichier) en moyenne en raison de la taille de l'unité d'allocation..

    Explication détaillée

    Pourquoi cela arrive-t-il? Eh bien, le système de fichiers FAT32 doit garder une trace de l'emplacement de stockage de chaque fichier. S'il devait conserver une liste de chaque octet, la table (comme un carnet d'adresses) grandirait à la même vitesse que les données - et perdrait beaucoup d'espace. Ils utilisent donc des «unités d'allocation», également appelées «taille de cluster». Le volume est divisé en ces unités d’allocation et, en ce qui concerne le système de fichiers, elles ne peuvent pas être subdivisées - ce sont les plus petits blocs qu’elle peut traiter. Tout comme vous avez un numéro de maison, mais votre facteur se fiche du nombre de chambres à coucher ou de personnes qui y vivent..

    Alors que se passe-t-il si vous avez un très petit fichier? Eh bien, le système de fichiers ne se soucie pas de savoir si le fichier est de 0 Ko, 2 Ko, voire 15 Ko, il lui laissera le moins d’espace possible - dans l’exemple ci-dessus, 32 Ko. Votre fichier utilise seulement une petite quantité de cet espace et le reste est essentiellement gaspillé, mais appartient toujours au fichier - tout comme une chambre que vous laissez inoccupée..

    Pourquoi existe-t-il différentes tailles d'unités d'allocation? Cela devient un compromis entre avoir une table plus grande (carnet d'adresses, par exemple, en disant que John possède une maison située au 123, rue Fake, 124, rue Fake, 666, voie Satan, etc.) ou davantage d'espace inutilisé dans chaque unité . Si vous avez des fichiers plus volumineux, il est plus logique d'utiliser des unités d'allocation plus grandes, car un fichier ne reçoit pas une nouvelle unité (maison) tant que tous les autres ne sont pas remplis. Si vous avez beaucoup de petits fichiers, eh bien, vous allez avoir une grande table (carnet d'adresses) de toute façon, alors aussi bien leur donner de petites unités (maisons).

    En règle générale, les grandes unités d'allocation gaspillent beaucoup d'espace si vous avez beaucoup de petits fichiers. Il n'y a généralement pas de bonne raison de dépasser 4 Ko pour une utilisation générale.

    Fragmentation?

    En ce qui concerne la fragmentation, la fragmentation ne devrait pas gaspiller de l’espace de cette manière. Les gros fichiers peuvent être fragmentés, c'est-à-dire scindés, en plusieurs unités d'allocation, mais chaque unité doit être renseignée avant le démarrage de la suivante. La défragmentation peut économiser un peu d’espace dans les tables d’allocation, mais ce n’est pas votre problème.

    Solutions possibles

    Comme suggéré par gladiator2345, vos seules options réelles à ce stade sont de vivre avec ou de reformater avec des unités d'allocation plus petites..

    Votre carte peut être au format FAT16, qui impose une limite inférieure à la taille de la table et nécessite donc des unités d’allocation beaucoup plus grandes afin de traiter un volume plus important (avec une limite supérieure de 2 Go avec 32 unités d’allocation). Source gracieuseté de Braiam. Si tel est le cas, vous devriez quand même pouvoir formater en toute sécurité le format FAT32..


    Avez-vous quelque chose à ajouter à l'explication? Sound off dans les commentaires. Voulez-vous lire plus de réponses d'autres utilisateurs de Stack Exchange doués en technologie? Découvrez le fil de discussion complet ici.