Défragmenter le système de fichiers XFS
Utilisateur heureux du système de fichier XFS, je suis au fait qu'il faille le défragmenter de temps en temps, selon l'utilisation que l'on fait de ses disques durs.
En effet, contrairement à la croyance trop répandue qu'un système de fichier sous GNU/Linux ne se défragmente pas, il faut rappeler que XFS et ReiserFS échappent à cette règle. Sur un système de fichier en XFS de 250Go dans lequel transitent à un rythme effréné les films de vacance de ma grand-mère en MKV de 10Go chacun, j'en arrive en quelques mois à des taux de fragmentation qui laissent baba devant son écran : 70, 80 et même 99% de fragmentation ! Il va de soi que les performances en lecture deviennent déplorables…
La solution ? Défragmenter, évidemment…
Il faut commencer par s'assurer que l'on dispose des outils nécessaires : xfsprogs, qui est un ensemble d'utilitaires de gestion du système de fichiers XFS.
Sous Ubuntu, il suffit de cliquer sur le lien ci-dessus, ou de passer par Synaptic ou encore par le terminal :
$ sudo apt-get install xfsprogs
À adapter, bien sûr, selon votre distribution…
Passons maintenant aux choses sérieuses :
On partira du principe, pour la suite, que la partition visée est /dev/sdb2.
Dans un terminal, on lance :
$ sudo xfs_db -c frag -r /dev/sdb2 actual 622, ideal 497, fragmentation factor 20,10%
L'option -c permet de passer la commande frag directement à xfs_db. La commande frag nous indique le taux de fragmentation du système.
L'option -r ouvre le système de fichier en lecture seule, ce qui est toujours préférable.
Maintenant que nous savons à quel point le système est fragmenté, passons à la défragmentation proprement dite. Pour cela, xfsprogs contient un utilitaire nommé xfs_fsr qui se charge de tout le boulot :
$ sudo xfs_fsr /dev/sdb2
Selon la taille du disque et son degré de fragmentation, vous pouvez aller vous entraîner à la cornemuse, faire du jogging ou vous occuper de votre copine (ou copain), ça risque de prendre un peu de temps.
Une fois l'opération terminée, on peut constater l'efficacité du procédé :
$ sudo xfs_db -c frag -r /dev/sdb2 actual 517, ideal 497, fragmentation factor 1,92%