web-dev-qa-db-fra.com

Pourquoi l'utilisation du disque est-elle supérieure à la taille de tous les fichiers qu'il contient?

J'ai un disque dur de 3 To. Dans l'écran des propriétés du disque dur, il est indiqué que j'ai utilisé 471,4 Go, mais lorsque je sélectionne tous les fichiers dans Nautilus, il indique que 321,0 Go est sélectionné. Si je ne dispose que de 321,0 Go de fichiers sur le disque dur, pourquoi utilise-t-il 471,4 Go?

Le partitionnement du disque dur utilise GUID et le système de fichiers utilisé dans EXT4. Lorsque je sélectionne le disque dur à l'aide de l'application Utilitaire de disque, un avertissement s'affiche:

WARNING: The partition is misaligned by 3072 bytes.
This may result in very poor performance.  Repartitioning is suggested.

Cela at-il quelque chose à voir avec les 150,4 Go manquants?

6
oshirowanen

Les fichiers sur le disque ont deux tailles: la "taille apparente" et la "taille sur le disque". Plusieurs raisons peuvent provoquer une différence grande:

  • Un grand nombre de fichiers entraînera une surcharge importante en raison de la fragmentation interne. Par exemple. Ext4 a une taille de bloc par défaut de 4 Ko; les fichiers plus petits que cela consommeront toujours 4 Ko, et les tailles ci-dessus seront "arrondies" à cet alignement de bloc.
  • Les répertoires sont aussi des fichiers et la même règle s’applique également à eux. De plus, si vous créez une grande quantité de fichiers dans un répertoire et que vous les supprimez ultérieurement, l'utilisation du fichier de répertoire ne peut pas être récupérée (recréer le répertoire aide).
  • Les fichiers fragmentés sont des fichiers spéciaux, qui semblent volumineux, mais ne "consomment" pas d'espace. Ceci est courant dans la virtualisation pour les images de disque virtuel; ils apparaîtront grands, mais la taille réelle peut être beaucoup plus petite. De nombreux utilitaires (et gestionnaires de fichiers) sont incapables d'indiquer l'utilisation réelle du disque.
  • L'utilisation de liens durs. Le contenu d'un fichier peut exister sur le disque lorsque plusieurs références pointent vers celui-ci. Certains gestionnaires de fichiers peuvent indiquer la taille de chaque référence.

Je suggérerais d'utiliser un outil d'utilisation de disque connu pour être capable de lister les deux tailles pour voir si c'est le problème. Essayez ncdu dans un terminal et utilisez a pour basculer entre l'utilisation réelle et l'utilisation du disque.


Une courte démonstration sur la fragmentation interne due à un système de fichiers d'une taille de bloc de 4 Ko à l'aide de du:

$ Sudo tune2fs -l /dev/path-to-device | grep "Block size"
Block size:               4096

$ echo blaataaap > myfile                      # creates a 10-byte file

$ du --block-size=1 myfile                     # prints the usage on disk (filesystem)
4096   myfile

$ du --apparent-size --block-size=1 myfile     # prints the apparent size, i.e.
10     myfile                                  # content length when seeking

$ ls -al
-rw-rw-r-- 1 gert gert 10 Jan 1 23:24 myfile   # ls uses apparent sizes

Cela signifie que ce fichier de 10 octets est 4086 octets plus grand sur le disque qu'il ne le semble dans une liste et souffre de fragmentation interne.


Une brève démonstration sur les liens physiques et l'utilisation du disque s'est révélée incorrecte lors de la création de la liste des fichiers (ls dans ce cas):

$ dd if=/dev/zero of=1MBfile bs=1M count=1 # create a 1MB file
$ ln 1MBfile a_hard_link                   # create a hard link to it

$ ls -alht                                 # ls will report 2MB
total 2.1M
drwxrwxr-x  2 gert gert 4.0K Jan  2 11:21 .
-rw-rw-r--  2 gert gert 1.0M Jan  2 11:21 1MBfile
-rw-rw-r--  2 gert gert 1.0M Jan  2 11:21 a_hard_link

$ du -B 1024 .                             # du reports 1028K total for directory
1028    .

$ du -B 1024 a_hard_link                   # and 1024K for each file individually
1024    a_hard_link
$ du -B 1024 1MBfile
1024    1MBfile
13
gertvdijk

Cela est dû au fait que l’utilisation totale du disque n’est jamais égale à la somme de tous les fichiers (ce que Nautilius affiche une fois que vous avez sélectionné tous les fichiers).

La raison en est que les systèmes de fichiers eux-mêmes ont tendance à occuper un peu d'espace sur la partition. Très probablement, si vous effacez toutes les données que vous stockez sur ce disque dur, l'utilisation du disque sera d'environ 150 Go. Cet espace est réservé au système de fichiers - il est requis, car le système de fichiers doit stocker les données relatives aux fichiers quelque part. ext4 pré-alloue cet espace supplémentaire avant tous les fichiers sont créés, par opposition à - par exemple - ext3, où cet espace augmente à mesure que de nouveaux fichiers sont ajoutés à la partition.

Si vous considérez ces 150 Go comme un problème, veuillez noter que c'est seulement 5% de la taille totale de votre disque dur. Si vous avez besoin de plus de 95% de votre disque dur, vous devrez probablement en acheter un plus grand, au lieu de vous inquiéter de ces 150 Go qui sont hors de votre portée.

Aussi, gardez à l'esprit que, en cas d'ext4, cet espace n'est pas perdu. La fragmentation des données n’est pas un problème ici, mais le coût de cet avantage est cet espace occupé supplémentaire. Il existe des moyens de le réduire et de forcer ext4 à utiliser beaucoup moins de cet espace, mais cela n’est pas recommandé car, en raison des risques de fragmentation et d’autres optimisations qui ne pourront pas se produire, votre machine fonctionnera très probablement. beaucoup plus lent, car l'accès aux données ne sera pas aussi facile.

2
Rafał Cieślak