[Défragmentation sous linux] Le saviez-tu ?

Ce qui ne concerne ni le forum ni des problèmes
Avatar de l’utilisateur
ed0c
Chu Ko Nu
Messages : 329
Inscription : mer. 24 mars 2010, 10:02

[Défragmentation sous linux] Le saviez-tu ?

Message par ed0c »

Jesse Smith@Distrowatch a écrit :
Checking file system fragmentation

Reorganizing-my-hard-drive asks: When I was running Windows I used to defrag my hard drive once a month to keep performance up. I have heard that it is not necessary to defrag the drive under Linux, is that true and how do I defrag my Linux drive if I want to?

DistroWatch answers: Most file systems that Linux will support, such as ext4, XFS and Btrfs, will generally avoid fragmenting your files automatically. A hard drive gets fragmented when the operating system writes part of a file in one location and another part of the same file in a different location. This breaks up files and causes pieces of large files to be scattered around the hard drive. On spinning drives this results in poorer performance as it takes longer to access all the various pieces of the file. Linux file systems generally attempt to write data to the hard drive in a way that keeps the parts of the file together.

Sometimes, usually when the hard drive is close to full (around 80% or 90% of its capacity) files may become fragmented as the system runs out of convenient places to write large files in continuous blocks. But when the disk is less than 80% full, a Linux file system will generally avoid fragmentation.

While most people do not need to worry about their Linux file system becoming fragmented, there are tools for dealing with fragmentation. As each file system works a little differently, there are different utilities for dealing with fragmentation on each file system.

The most commonly used file system on Linux is probably ext4. If you would like to check to see if your ext4 file system is fragmented you can run the following command as the root user or via sudo:

Code : Tout sélectionner

e4defrag -c /
The above command runs the ext4 defrag command. The -c option tells the program to check for fragmentation. This will cause the e4defrag program to look for fragmentation, but not attempt to repair it if any is found. The last parameter, / in this example, is the location of the file system. In our example we are checking the root (/) file system, but we could also check our /home directory using

Code : Tout sélectionner

e4defrag -c /home
The e4defrag command will produce a "fragmentation score". A score in the range of 0 to 30 indicates there is no problem. A file system with a score of 31 through 55 is slightly fragmented, but the fragmentation can probably be ignored. A score of 56 or higher suggests the drive should be defragged. We can defrag the drive by running the same e4defrag command again, this time without the -c option.

Code : Tout sélectionner

e4defrag /home
Different file systems use different commands, most of them feature more options than the e4defrag command and I recommend reading their respective manual pages. The command to defragment a Btrfs volume mounted at /home is as follows:

Code : Tout sélectionner

btrfs filesystem defrag -r /home
If you are running a system with XFS as one of the file systems, you can defragment all connected XFS partitions by running the command

Code : Tout sélectionner

xfs_fsr
These defrag commands may never need to be run as each file system generally keeps itself well organized. However, if you want to experiment to see if your file system can be better organized, these above commands will do the job.
Source distrowatch

Franchement j'ai été surpris à la lecture de cet article. Mais bon, vu que j'ai une tendance compulsive à changer d'OS, je n'ai pas trop le temps d'avoir un disque fragmenté....
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17187
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Défragmentation sous linux] Le saviez-tu ?

Message par benjarobin »

Bonjour,
Je ne vois rien d’extraordinaire ici. Il faut savoir que si tu as de la place (plus de 20%) sur ta partition racine, à chaque mise à jour cela revient à faire une sorte de défragmentation des fichiers des paquets mises à jour.
Mais comme de plus en plus de personne utilise un SSD, cela devient vraiment inutile de défragmenter.
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
ed0c
Chu Ko Nu
Messages : 329
Inscription : mer. 24 mars 2010, 10:02

Re: [Défragmentation sous linux] Le saviez-tu ?

Message par ed0c »

En fait ce qui m'a surpris, c'est que j'ai toujours entendu que sous linux la défragmentation "manuelle" était inutile, du fait justement de cette "auto défragmentation ". Je pensais d'ailleurs qu'il n'était pas possible de réaliser cette défrag sous linux.
D'où ma surprise, et je ne pense pas être le seul à avoir ce préjugé.

Pourquoi est il inutile de défragmenter sur un SSD ? Les clusters doivent être réalloués de la même manière que sur un disque dur classique non?
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17187
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Défragmentation sous linux] Le saviez-tu ?

Message par benjarobin »

ed0c a écrit : jeu. 11 mai 2017, 16:37Je pensais d'ailleurs qu'il n'était pas possible de réaliser cette défrag sous linux
C'est que cela a été très longtemps le cas...
ed0c a écrit : jeu. 11 mai 2017, 16:37Pourquoi est il inutile de défragmenter sur un SSD
La question à se poser est pourquoi doit-on défragmenter sur un disque dur : Principalement pour des questions de performance. Tu as une tête de lecture, si celle-ci doit aller cherche à 10 endroits différents sur le disque des bouts d'un même fichier cela va lui prendre 5 fois plus de temps (valeur plus ou moins arbitraire) par rapport à une lecture consécutive / en un seul bloc.

Un SSD cela lui coute bien bien moins cher d'aller chercher des éléments à différents endroits, donc l'impacte sur les performances est réduite. De plus avec un SSD tu ne maitrises pas l'emplacement des données, le contrôleur gère le wear leveling pour éviter d'user toujours le même secteur. Il faut savoir que la défragmentation est désactivée sous Windows si tu as un SSD pour éviter d'user inutilement le SSD
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
Xorg
Maître du Kyudo
Messages : 1933
Inscription : dim. 22 janv. 2012, 19:25
Localisation : Entre le clavier et la chaise.

Re: [Défragmentation sous linux] Le saviez-tu ?

Message par Xorg »

J'ai toujours trouvé ça inutile de défragmenter sous Linux, tout simplement parce que j'utilise l'Ext4 comme système de fichiers, et qu'il fragmente peu naturellement :

Code : Tout sélectionner

276144/1921360 fichiers (0.5% non contigus), 4115527/7680000 blocs (score 1)
103404/4849664 fichiers (0.7% non contigus), 10414195/19396608 blocs (score 0)
104597/22937600 fichiers (1.1% non contigus), 29352185/91750400 blocs (score 0)
215/7864320 fichiers (21.4% non contigus), 21603104/31457280 blocs (score 0)
Dans la mesure où on ne s'amuse pas à remplir les partitions le plus possible, l'Ext4 semble bien gérer ça facilement... C'est la sortie de fsck.ext4 -fn, et entre parenthèses, c'est de score donné par e4defrag ; je suis assez perplexe par ce "score".

La partition avec 21,4% de fragmentation, ça reste tout à fait normal, c'est la partition que j'utilise pour mes VMs : avec une quinzaine de disques durs virtuels qui se partagent 127Go, ça fait vite des gros fichiers et peu d'espace contigu restant pour les manipuler. :lol:

Moi, j'ai toujours entendu dire qu'une défragmentation manuelle sous Linux était inutile, dangereuse, et que si on tient vraiment à défragmenter une partition, le meilleur moyen reste de déplacer les données sur une autre partition (de façon temporaire), puis de les replacer sur la partition d"origine, mais du coup ça prend du temps.

Par contre, j'ai toujours trouvé que le FAT et le NTFS fragmentent vite pour pas grand chose. Il me semble que Microsoft a contourné le problème en activant la défragmentation automatique des disques durs depuis Windows Vista. Je ne sais pas ce que ça donne aujourd'hui.
Arch Linux x86_64 - Sway
AMD Ryzen 5 3600X - 32 Go de DDR4 - SSD NVMe 1 To + SSD SATA 250 Go - Sapphire NITRO+ Radeon RX 580
Image AUR___Image Wiki___Image GitHub
Répondre