Article de reference

Défragmentation

Dans la maintenance des systèmes de fichiers , la défragmentation est un processus qui réduit la fragmentation des fichiers, c'est-à-dire leur répartition en plusieurs segments ...

systèmes de fichiers , la défragmentation est un processus qui réduit la fragmentation des fichiers, c'est-à-dire leur répartition en plusieurs segments non contigus sur le support de stockage. Elle y parvient en réorganisant physiquement le contenu du périphérique de stockage en un nombre minimal de régions contiguës (fragments, extents ). Elle tente également de créer de plus grandes zones d'espace libre grâce à la compaction , afin d'empêcher la fragmentation à nouveau.

La défragmentation est avantageuse et pertinente pour les systèmes de fichiers sur les supports de disques électromécaniques ( disques durs , lecteurs de disquettes et disques optiques ). Le déplacement des têtes de lecture/écriture du disque dur sur différentes zones du disque lors de l'accès à des fichiers fragmentés est plus lent que l'accès séquentiel à l'intégralité du contenu d'un fichier non fragmenté, sans déplacement des têtes de lecture/écriture pour rechercher d'autres fragments.

système de fichiers n'alloue pas suffisamment d'espace contigu pour stocker un fichier complet en une seule unité, et le répartit en fragments entre les fichiers existants. Ces fragments sont généralement créés lors de la suppression d'un fichier, et parfois lorsqu'un espace excédentaire lui est alloué. Les fichiers fréquemment mis à jour (comme les fichiers journaux), l'ajout et la suppression de fichiers, ainsi qu'un grand nombre de fichiers contribuent à la fragmentation et à la baisse de performance qui en découle. La défragmentation vise à atténuer ces problèmes.

Exemple

Exemples de cinq états de fragmentation

Un disque vierge contient cinq fichiers, de A à E, chacun occupant 10 blocs d'espace (dans cette section, un bloc est une unité d'allocation du système de fichiers ; sa taille est définie lors du formatage du disque et peut être quelconque, selon les capacités du système de fichiers). Sur un disque vierge, ces fichiers sont alloués successivement (voir l'exemple 1 sur l'image). Si le fichier B est supprimé, deux options sont possibles : marquer l'espace occupé par B comme disponible pour une utilisation ultérieure, ou déplacer tous les fichiers suivants afin que cet espace vide se trouve à la fin. Le déplacement des fichiers pouvant être long s'il y en a beaucoup, l'espace vide est généralement laissé tel quel, marqué dans un tableau comme disponible pour de nouveaux fichiers (voir l'exemple 2 sur l'image). Lorsqu'un nouveau fichier, F, est alloué et nécessite 6 blocs d'espace, il peut être placé dans les 6 premiers blocs de l'espace précédemment occupé par le fichier B, les 4 blocs suivants restant disponibles (voir l'exemple 3 sur l'image). Si un autre nouveau fichier, G, est ajouté et ne nécessite que 4 blocs, il pourrait alors occuper l'espace après F et avant C (exemple 4 dans l'image). Chaque section de fichier est stockée dans des paquets séparés sur le disque ; lorsque le fichier est supprimé, il laisse des espaces inutilisés contribuant à la fragmentation du disque.

Toutefois, si le fichier F doit être agrandi, trois options sont possibles, car l'espace qui le suit immédiatement n'est plus disponible :

  1. Déplacez le fichier F vers un emplacement permettant de le créer en un seul fichier contigu de la nouvelle taille, plus importante. Cette opération est impossible si le fichier est plus volumineux que l'espace contigu maximal disponible. Le fichier pourrait également être si volumineux que l'opération prendrait un temps excessivement long.
  2. Déplacez tous les fichiers après F jusqu'à ce que l'un d'eux libère suffisamment d'espace pour les rendre à nouveau contigus. Cela pose le même problème que dans l'exemple précédent : s'il y a peu de fichiers ou peu de données à déplacer, ce n'est pas un problème majeur ; mais s'il y a des milliers, voire des dizaines de milliers de fichiers, le temps manque pour tous les déplacer.
  3. Ajoutez un nouveau bloc ailleurs et indiquez que F possède une seconde étendue (voir l'exemple 5 sur l'image). Répétez cette opération des centaines de fois : le système de fichiers comportera alors de nombreux petits segments libres dispersés à divers endroits, et certains fichiers auront plusieurs étendues. Lorsqu'un fichier possède de telles étendues, son temps d'accès peut devenir excessivement long en raison des nombreuses recherches aléatoires que le disque devra effectuer lors de sa lecture.

De plus, le concept de « fragmentation » ne se limite pas aux fichiers individuels possédant plusieurs extensions sur le disque. Par exemple, un groupe de fichiers normalement lus dans un ordre précis (comme les fichiers utilisés par un programme lors de son chargement, tels que certaines DLL , divers fichiers de ressources ou les éléments graphiques et audio d'un jeu) peut être considéré comme fragmenté s'il n'est pas chargé séquentiellement sur le disque, même si ces fichiers individuels ne sont pas fragmentés ; les têtes de lecture/écriture devront rechercher ces fichiers (non fragmentés) de manière aléatoire pour y accéder séquentiellement. Certains groupes de fichiers peuvent avoir été initialement installés dans le bon ordre, mais se désorganiser avec le temps, certains fichiers du groupe étant supprimés. Les mises à jour en sont une cause fréquente, car pour mettre à jour un fichier, la plupart des programmes de mise à jour suppriment d'abord l'ancien fichier, puis écrivent une nouvelle version mise à jour à sa place. Cependant, la plupart des systèmes de fichiers n'écrivent pas le nouveau fichier au même emplacement physique sur le disque. Cela permet à des fichiers sans rapport de combler les espaces vides.

Atténuation

La défragmentation consiste à déplacer les fragments de fichiers (blocs d'allocation physique) afin qu'ils fusionnent, de préférence en un seul. Cette opération nécessite généralement au moins deux copies : une première pour déplacer les blocs vers un espace disque libre permettant de nouveaux déplacements, et une seconde pour les placer définitivement à leur emplacement final. Dans ce cas, aucune donnée n'est effacée du disque, ce qui permet d'interrompre l'opération en toute sécurité, même en cas de coupure de courant. L'illustration de cet article en donne un exemple.

Pour défragmenter un disque, un logiciel de défragmentation (également appelé « défragmenteur ») ne peut déplacer que les fichiers situés dans l'espace libre disponible. Cette opération gourmande en ressources est impossible sur un système de fichiers dont l'espace libre est faible, voire inexistant. La défragmentation dégrade les performances du système ; il est donc préférable de ne pas utiliser l'ordinateur pendant le processus afin d'éviter que le défragmenteur ne soit perturbé par des modifications inattendues du système de fichiers. Selon l'algorithme utilisé, il peut être avantageux ou non d'effectuer plusieurs passages. La réorganisation induite par la défragmentation ne modifie pas l'emplacement logique des fichiers (c'est-à-dire leur position dans l' arborescence des répertoires ).

Outre la défragmentation des fichiers programmes, l'outil de défragmentation peut également réduire le temps de chargement des programmes et d'ouverture des fichiers. Par exemple, le défragmenteur de Windows 9x intégrait l'Intel Application Launch Accelerator, qui optimisait les programmes sur le disque en plaçant les fichiers défragmentés et leurs dépendances côte à côte, dans l'ordre de chargement du programme, afin d'accélérer leur lancement. Sous Windows, un bon défragmenteur analyse les fichiers de préchargement pour identifier un maximum de groupes de fichiers et y placer les fichiers par ordre d'accès.

Au début du disque dur, les pistes extérieures ont un débit de transfert de données supérieur à celui des pistes intérieures. Placer les fichiers fréquemment utilisés sur les pistes extérieures améliore les performances. Les défragmenteurs tiers, tels que MyDefrag, déplacent les fichiers fréquemment utilisés vers les pistes extérieures et les défragmentent.

Les améliorations apportées aux disques durs modernes, telles que le cache RAM , la vitesse de rotation des plateaux plus élevée, la mise en file d'attente des commandes ( SCSI / ATA TCQ ou SATA NCQ ) et une densité de données accrue, réduisent quelque peu l'impact négatif de la fragmentation sur les performances du système. Toutefois, l'augmentation du volume de données couramment utilisées annule ces avantages. Les systèmes modernes tirent pleinement parti des capacités de disque actuellement disponibles, car les disques partiellement remplis se fragmentent beaucoup moins que les disques pleins . De plus, sur un disque dur haute capacité, une même partition occupe une plage de cylindres plus réduite, ce qui accélère les temps d'accès. Cependant, le temps d'accès moyen ne peut jamais être inférieur à une demi-rotation des plateaux, et la vitesse de rotation des plateaux (mesurée en tr/min) est la caractéristique des disques durs qui a connu la croissance la plus lente au cours des dernières décennies (comparativement au débit de transfert de données et au temps d'accès). Par conséquent, minimiser le nombre d'accès reste essentiel dans la plupart des applications gourmandes en stockage. La défragmentation consiste précisément à garantir qu'il n'y ait au maximum qu'un seul accès par fichier, en ne comptant que les accès à des pistes non adjacentes.

Partitionnement

Une stratégie courante pour optimiser la défragmentation et réduire l'impact de la fragmentation consiste à partitionner le ou les disques durs de manière à séparer les partitions du système de fichiers, où les lectures sont beaucoup plus fréquentes que les écritures, des zones plus volatiles où les fichiers sont fréquemment créés et supprimés. Les répertoires contenant les profils utilisateurs sont constamment modifiés (notamment le répertoire Temp et le cache du navigateur web, qui créent des milliers de fichiers supprimés en quelques jours). Si les fichiers des profils utilisateurs sont stockés sur une partition dédiée (comme c'est souvent le cas sur les systèmes de fichiers UNIX recommandés , où ils sont généralement stockés dans la partition /var), le défragmenteur est plus performant car il n'a pas à traiter tous les fichiers statiques des autres répertoires. (Il est également possible de configurer le défragmenteur pour qu'il exclue simplement certains chemins d'accès.) Pour les partitions peu sollicitées en écriture, le temps de défragmentation s'améliore considérablement après la première défragmentation, car le défragmenteur n'aura plus qu'un petit nombre de nouveaux fichiers à défragmenter.

Défragmentation hors ligne

La présence de fichiers système non déplaçables, notamment le fichier d'échange , peut entraver la défragmentation. Ces fichiers peuvent être déplacés sans risque lorsque le système d'exploitation n'est pas utilisé. Par exemple, la commande `ntfsresize` déplace ces fichiers pour redimensionner une partition NTFS . L'outil `PageDefrag` pouvait défragmenter les fichiers système Windows, tels que le fichier d'échange et les fichiers contenant la base de registre Windows , en s'exécutant au démarrage avant le chargement de l'interface graphique. Depuis Windows Vista, cette fonctionnalité n'est plus entièrement prise en charge et n'a pas été mise à jour.

Dans NTFS, lorsque des fichiers sont ajoutés au disque, la Master File Table (MFT) doit s'agrandir pour stocker les informations des nouveaux fichiers. Chaque fois que la MFT ne peut pas être étendue en raison d'un fichier qui la bloque, elle gagne un fragment. Dans les premières versions de Windows, la défragmentation était impossible lorsque la partition était montée ; Microsoft a donc introduit un blocage matériel dans l' API de défragmentation . Cependant, depuis Windows XP , un nombre croissant de défragmenteurs sont capables de défragmenter la MFT, car l'API de défragmentation de Windows a été améliorée et prend désormais en charge cette opération de déplacement. Malgré ces améliorations, les quatre premiers clusters de la MFT restent inamovibles par l'API de défragmentation de Windows. Par conséquent, certains défragmenteurs stockent la MFT en deux fragments : les quatre premiers clusters à leur emplacement d'origine lors du formatage du disque, et le reste de la MFT au début du disque (ou à l'emplacement jugé optimal par la stratégie du défragmenteur).

Disques à semi-conducteurs

Lors de la lecture de données sur un disque dur électromécanique classique, le contrôleur doit d'abord positionner la tête de lecture/écriture, relativement lentement, sur la piste où se trouve le fragment, puis attendre la rotation du plateau jusqu'à ce que le fragment atteigne la tête. Un disque SSD , quant à lui, utilise une mémoire flash sans pièces mobiles ; l'accès aléatoire à un fragment de fichier sur cette mémoire ne subit donc pas ce délai, rendant la défragmentation nécessaire à l'optimisation de la vitesse d'accès superflue. De plus, la mémoire flash ne pouvant être écrite qu'un nombre limité de fois avant de tomber en panne, la défragmentation est en réalité contre-productive (sauf en cas de panne catastrophique ). Cependant, Windows défragmente automatiquement un SSD (bien que de manière moins intensive) afin d'éviter que le système de fichiers n'atteigne sa limite de fragmentation (lorsque les métadonnées ne peuvent plus représenter de fragments de fichier). Une fois cette limite atteinte, toute tentative d'écriture ultérieure échoue.

Approche et défragmenteurs selon le type de système de fichiers

Un utilitaire de défragmentation Windows
  • FAT : Les systèmes MS-DOS 6.x et Windows 9x sont fournis avec un utilitaire de défragmentation appelé Defrag. La version DOS est une version limitée de Norton SpeedDisk. La version fournie avec Windows 9x était sous licence de Symantec Corporation , et celle fournie avec Windows 2000 et XP est sous licence de Condusiv Technologies .
  • Le système de fichiers NTFS a été introduit avec Windows NT 3.1 , mais son pilote ne prenait pas en charge la défragmentation. Sous Windows NT 4.0 , des API de défragmentation ont été introduites, permettant aux outils tiers d'effectuer des tâches de défragmentation ; toutefois, aucun logiciel de défragmentation n'était inclus. Sous Windows 2000 , Windows XP et Windows Server 2003 , Microsoft a intégré un outil de défragmentation basé sur Diskeeper , utilisant les API de défragmentation et disponible sous forme de composant logiciel enfichable pour la Gestion de l'ordinateur . Sous Windows Vista , Windows 7 et Windows 8 , cet outil a été considérablement amélioré et doté d'une nouvelle interface sans carte du disque ; il n'est plus intégré à la Gestion de l'ordinateur. De nombreux logiciels de défragmentation tiers, gratuits et payants, sont également disponibles pour Microsoft Windows .
  • BSD UFS et en particulier FreeBSD utilisent un réallocateur interne qui cherche à réduire la fragmentation dès l'écriture des données sur le disque. Ceci permet de contrôler efficacement la dégradation du système après une utilisation prolongée.
  • Btrfs propose une défragmentation en ligne et automatique.
  • Linux ext2 , ext3 et ext4 : à l’instar d’UFS, ces systèmes de fichiers utilisent des techniques d’allocation conçues pour limiter la fragmentation en permanence . De ce fait, la défragmentation est rarement nécessaire . ext2 utilise un défragmenteur hors ligne rétrocompatible avec ext3 et bénéficie donc généralement d’un support similaire de la part des programmes de défragmentation. Actuellement, e4defrag permet de défragmenter un système de fichiers ext4, y compris en ligne.
  • VxFS possède un JFS est HFS Plus, introduit en 1998 avec Mac OS 8.1, intègre plusieurs optimisations des algorithmes d'allocation afin de défragmenter les fichiers pendant leur accès, sans nécessiter de défragmenteur externe. La défragmentation à la volée est soumise à certaines restrictions (notamment une taille maximale de 20 Mo). L'utilitaire WAFL dans le système d'exploitation ONTAP 7.2 de NetAppreallocate possède une commande appelée qui est conçue pour défragmenter les fichiers volumineux.
  • XFS fournit un utilitaire de défragmentation en ligne appelé xfs_fsr.
  • SFS traite la fonction de défragmentation de manière presque totalement sans état (mis à part l'emplacement sur lequel elle travaille), de sorte que la défragmentation peut être arrêtée et démarrée instantanément.
  • ADFS , le système de fichiers utilisé par RISC OS et les anciens ordinateurs Acorn , maintient la fragmentation des fichiers sous contrôle sans nécessiter de défragmentation manuelle.

Plus d articles de Worldlex Wiki

Revenez a l index pour explorer davantage de pages sur l histoire, la science, la culture, la geographie et la societe en francais.

Explorer l index