Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Fragmentation

  • Objet : Fragmentation des données sur un disque
  • Suivi :
    • Création par smolski le 22/09/2012
  • Commentaires sur le forum : C'est ici1)

Préambule

La taille d'un fichier se mesure en kilo-octets.

Un disque dur est compartimenté en blocs de quelques kilo-octets (par défaut, 4 ko pour le système de fichiers ntfs), ce bloc étant appelé un cluster. Il s'agit en fait de la plus petite taille que peut occuper un fichier donné sur votre disque dur.

Par exemple, si vous avez un fichier de 17 ko, il va occuper 5 clusters (pour un total de 20 ko ; en effet, 4 clusters seraient insuffisants, car avec 16 ko au total, ils ne permettraient pas l'écriture intégrale du fichier), et il restera 3 ko réservés (20 ko disponibles dans les 5 clusters, mais seulement 17 ko occupés par le fichier), mais cependant non utilisés.

Lorsque vous utilisez Windows et que vous avez besoin d'écrire un fichier sur le disque dur, le logiciel se positionnera sur le premier cluster libre qu'il rencontrera, et commencera à le remplir. S'il a besoin de plus d'un cluster, il écrira également dans le cluster voisin, puis dans le suivant, et ainsi de suite, jusqu'à ce que le fichier entier soit écrit, ou que le cluster qui suit soit déjà occupé par un autre fichier.
En ce cas, il continuera à parcourir le disque dur jusqu'à trouver un nouveau cluster libre et écrira dedans et ses voisins, ainsi de suite, jusqu'à ce que le fichier entier soit écrit, en autant de blocs séquentiels logiques possibles.
Bien sûr, il en résulte qu'un même fichier peut être écrit, petit bout par petit bout, en plusieurs endroits du disque.
Si les données sont trop dispersées, la lecture d'un fichier peut en être plus ou moins ralentie, et le phénomène empire à mesure que le disque se remplit.
On dit alors que le disque est fragmenté, c'est-à-dire que les données ne sont pas rangées à la suite les unes des autres.

Défragmentation

Préambule

Sous Windows, il existe des utilitaires qui permettent d'analyser le contenu du disque, et de réorganiser son contenu de façon à ce que tous les clusters liés au même fichier soient contigus, et dans le bon ordre.
Cette opération d'analyse et de réorganisation s'appelle la défragmentation. Elle permet, dans certains cas, de nettes accélérations du système.

Sous GNU/Linux, cette opération n'est pas nécessaire, car de par leur conception, les systèmes de fichiers2) ext3 ou reiserfs (par exemple) vont avoir une tendance naturelle à n'écrire que là où il y aura la place de le faire, et d'optimiser l'espace disque consommé.
Bien sûr, lorsque le disque commence à être plein, et que de gros volumes de données sont manipulés, il n'y aura pas de miracle : le système écrira ce qu'il pourra où il pourra, même s'il en résulte une fragmentation des fichiers.

GNU/Linux

Pour constater l'état de fragmentation de ses disques, voir :

man e2freefrag

En attendant un tuto df sur cet outil bien sûr ! ;-)

Il est incorrect de dire qu'il n'existe pas d'outils de défragmentation sous GNU/Linux, mais il conviendra d'insister sur le fait qu'ils sont le plus souvent totalement inutiles.

Alors doit-on défragmenter sous Linux ?

Si vous écoutez les prêcheurs anti-Windows, jamais de la vie : Linux est tellement plus intelligent que son système de fichier ne fragmente (presque, mais on l'oublie souvent) pas.
Il est vrai que les systèmes de fichiers Linux font un usage optimisé de l'espace, mais il n'est malheureusement pas en mesure de savoir aujourd'hui quelle sera l'organisation optimale de votre disque après une ou deux années d'usage intensif.

Pour résumer, si vos disques durs ont une durée de vie supérieure à deux ans, que vous travaillez régulièrement dessus, que vous manipulez quotidiennement de gros fichiers (vidéos, morceaux de musique…), que vous vous livrez au P2P ou encore qu'il vous arrive d'exhumer de vieux (et gros !) fichiers pour retravailler dessus, vous ressentirez vite, comme tout le monde, le besoin de défragmenter votre beau disque Linux !

Donc sous GNU/Linux, si vous avez besoin de réaliser cette opération, il ne vous reste plus qu'à vous intéresser à l'un des projets suivants :

ou encore :

Mais ne sombrez pas dans la paranoïa et assurez-vous bien d'en avoir réellement besoin avant de vous lancer dans l'aventure : pour un utilisateur lambda, cela n'en vaudra certainement pas la peine…

Source

SSD

La fragmentation a peu d'impact sur les performances en lecture d'un SSD car le temps d'accès est négligeable par rapport à celui d'un disque dur.

Comme je ne suis pas sous windows mais sous linux, il ne se fragmente pas

L'absence de fragmentation sous Linux est une légende urbaine.
Tous les systèmes de fichiers qui vivent fragmentent, et ceux de Linux n'y font pas exception.

Certains systèmes de fichiers comme ext4 avec la notion d'extent permettent des stratégies d'allocation ayant pour but de limiter la fragmentation, mais il ne faut pas oublier que :

plus l'espace libre est faible, plus la probabilité de fragmentation augmente.

D'autre part il ne s'agit que de la fragmentation externe, due au système de fichiers.
Les SSD ont en plus une fragmentation interne qui résulte des contraintes d'écriture de la mémoire flash.

Comme l'a écrit robert2a, contrairement à un disque dur on ne peut pas juste réécrire dans un bloc de mémoire flash qui contient des données, on doit l'effacer avant.
Or l'effacement est une opération longue et qui se fait sur des blocs de taille largement supérieure à la taille d'un bloc d'écriture (et qui use la mémoire flash).

Donc, pour augmenter la vitesse d'écriture, lorsqu'on modifie le contenu d'un bloc logique au lieu de :

  1. lire les données du bloc d'effacement,
  2. effacer le bloc d'effacement et
  3. réécrire les données modifiées,

les nouvelles données sont écrites dans un nouveau bloc physique déjà effacé. :!:

Cela implique que tout fichier modifié depuis sa création a des chances d'être physiquement fragmenté sur un SSD.

Encore une fois, ce n'est pas gênant en lecture puisque le temps d'accès est négligeable.
En écriture par contre, une fragmentation excessive de l'espace libre peut affecter les performances puisqu'il va être de plus en plus difficile de trouver des blocs effacés prêts à l'écriture.

C'est pourquoi les SSD ont un mécanisme interne de ramasse-miettes3) qui a pour but de : rassembler les blocs contenant des données et de libérer d'autres blocs partiellement remplis afin de les effacer pour qu'ils soient prêts à être écrits.

À noter que le marquage des blocs inutilisés par le système hôte avec TRIM/discard facilite ce processus.

Si ça ne ressemble pas à de la défragmentation, je ne sais pas ce que c'est. 8-o

De raleur sur le forum là : https://debian-facile.org/viewtopic.php?pid=192639#p192639

Merci à tous les intervenants qui permettent ainsi à l'amélioration des connaissances de tous, depuis çui qui demande jusqu'à tous ceux qui participent.
Ainsi quel que soient les lacunes, sur DF elles sont sources de Savoir pour tous ! 8-)

1) N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !
3) garbage collector
doc/systeme/fragmentation.txt · Dernière modification: 25/09/2016 10:48 par smolski

Pied de page des forums

Propulsé par FluxBB