La famille de systèmes de fichiers ext2 / ext3 / ext4 n'a pas besoin de défragmentation.
Quelle conception sous-jacente aide ce système de fichiers à ne pas se fragmenter?
La famille de systèmes de fichiers ext2 / ext3 / ext4 n'a pas besoin de défragmentation.
Quelle conception sous-jacente aide ce système de fichiers à ne pas se fragmenter?
Réponses:
Une façon dont le système de fichiers ext4 garde la fragmentation en échec est le processus d' allocation retardée (mode d'allocation par défaut d'ext4).
L'allocation différée fonctionne en différant le mappage des blocs de données de fichier nouvellement écrits aux blocs de disque dans le système de fichiers jusqu'au moment de la réécriture.
Cela fonctionne en allouant la plupart des blocs pour un fichier en même temps, lorsque le nombre total de blocs (ou au moins un stade approximatif) dans chaque fichier est connu. Cela permet à l'allocateur de blocs ( mballoc
mentionné dans la réponse de MMK) de faire un meilleur travail pour trouver une zone d'espace libre de taille appropriée pour placer le fichier.
Dans le système de fichiers ext3, il existe un allocateur de blocs pour le disque pour chaque bloc, et il est donc tout à fait possible qu'une fragmentation se produise.
Cependant, dans le système de fichiers ext4, il existe un allocateur multi-blocs qui peut retarder l'écriture des blocs sur le disque, afin qu'il puisse allouer plusieurs blocs à la fois dans un seul morceau de disque pour permettre une écriture contiguë - et ainsi, il est moins probable qu'une fragmentation puisse se produire (c'est toujours possible, juste moins probable)
Au moins pour Ext2 (et Ext3 je pense, bien que je sois moins sûr), il n'y a rien dans le format / la structure sur le disque qui empêcherait la défragmentation.
Le manque de besoin de défragmentation va résider au niveau de l'implémentation, qui variera d'un OS à l'autre. Autrement dit, selon l'implémentation, un fichier dans Ext2 peut être fragmenté ou non.
Si la fragmentation est évitée, cela sera probablement dû à l'allocation retardée des blocs physiques. Autrement dit, à un certain niveau de l'implémentation, le système de fichiers mettra en cache les données (et y accèdera via le numéro de bloc logique) jusqu'à ce qu'elles soient écrites / validées sur le disque. Lorsque les données sont finalement écrites sur le disque, des blocs physiques doivent être alloués. L'algorithme d'allocation peut (ou non) allouer un certain nombre de blocs physiques contigus disponibles pour les données.
J'espère que cela t'aides.