Liens connexes

Dépêche modérée par

Dépêche éditée par

: ShaKe, un défragmenteur pour GNU/Linux

Posté par Brice Arnould ( un_brice ) (page perso, ). Modéré le 20 août 2006.
0
ShaKe est un logiciel libre qui met à disposition de tous les (GNU/)Linuxiens le plaisir de la défragmentation. En effet, et contrairement à xfs_fsr, il n'utilise que les fonctions du noyau communes à la plupart des systèmes de fichiers. Plus qu'un portage, il essaie également d'apporter une touche d'originalité, par exemple avec l'idée d'une défragmentation sélective.

Deux notes cependant :
  • Son utilisation requiert d'avoir monté la partition avec le support des attributs étendus ("user_xattr").
  • Ce n'est pas un outil d'usage hebdomadaire, plutôt quelque chose à utiliser tous les un ou deux ans pour le principe (sauf si l'on a trop de fichiers sparses). Ceci dit, les utilisateurs actuels disent avoir ressenti un réel bénéfice, et n'ont généralement pas eu de problèmes.

> Lire la suite (57 commentaires, moyenne: 3,4).   [dépêche : 1951 caractères]

Concrètement, cette sélectivité prend la forme d'un jeu de critères visant à estimer le coût réel de la fragmentation, pour évaluer si la défragmentation est rentable.
En premier lieu, il cherche les "amis" du fichier. Par défaut ce sont les fichiers du même dossier ayant un atime proche.
Ensuite il exprime des exigences, notamment le nombre maximal de fragments, le nombre maximal de "miettes" (minuscules fragments qui font faire des déplacements consécutifs à la tête de lecture), et la distance vis à vis des amis (utile pour des programmes comme dpkg, make ou portage qui manipulent de nombreux fichiers d'un même dossier).
Ces exigences sont exprimées sous formes de seuils que les statistiques du fichier ne doivent pas dépasser.
Après cela, il examine la taille des fichiers et les classe en trois catégories : ceux qui sont petits et qui correspondent surtout à une fragmentation de l'espace libre (typiquement un fichier de configuration), ceux qui sont énormes (typiquement un film), et les autres.
À chacune de ces catégories il associe une tolérance, qui multiplie les seuils.
Enfin, il prends sa décision.

Il a également d'autres stratégies, par exemple éviter que des fichiers restent trop longtemps au même endroit en ré-allouant l'espace des vieux fichiers.
Il propose aussi un mode "lecture seule" (--pretend) dans lequel il ne fait qu'afficher des statistiques. Utilisé conjointement avec le module python pré-alpha qui extrait les informations de la sortie standard, il permettras à terme de faire une interface graphique plus classique, ou des statistiques détaillés sur la fragmentation.

Pour conclure, voici quelques exemples, extraits de la manpage :
Voir la fragmentation d'un dossier : shake --pretend --verbose --verbose DOSSIER
Examiner tous les MP3 des sous-dossiers, en conseillant de placer à coté ceux qui sont proches dans l'ordre lexical : find -type f -iname '*.mp3' | sort | shake

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.

Re: Pourquoi Linux n'a pas besoin de défragmentation

Posté par Brice Arnould ( un_brice ) (page perso, ) le 20/08/2006 à 10:19. (lien). Évalué à 10.

Apparement les modérateurs ont ajouté à ma proposition initiale de dépêche un lien qui présente pourquoi Linux n'a pas besoin de défragmentation.

De mon point de vue, cet article est dans le vrai : dans la quasi-totalité des cas le système de fichier sait se débrouiller tout seul.
ShaKe vise précisement à déceler les seuls cas où le système de fichier échoue.

Il y en a au moins trois :
Premièrement, le cas où le disque est trop plein. Lors de la présentation à mes profs (à la base c'est un projet d'étude à Lyon1), j'avais fourni une image de filesystem qui faisait bien ressortir le problème : http://vleu.net/shake/disk.bin.bz2 . Sur cet exemple (très articiel), les fichiers "gros" (un méga si je me rappelle bien) passaient d'un millier de fragments à quelques uns. Le cas de cet utilisateur montre que ça arrive aussi dans la vraie vie http://forums.gentoo.org/viewtopic-t-463204-postdays-0-posto(...) .
Ensuite, les "fichiers sparses". Quand un programe Linux accède par exemple au 60ème méga octet d'un d'un fichier qui n'en fait que 5, le système de fichier ne génére pas un fichier plein de zeros pour "remplir le trou" mais "saute par dessus". On a alors systèmatiquement deux fragments. C'est une fonctionalité très interessante puisqu'elle fait gagner une quantitée non négligeable d'espace disque. Mais les logiciels de peer to peer (notament) lui causent problèmes car il reçoivent les morceaux dans un ordre plus ou moins aléatoire, ce qui cause de nombreux sauts et une fragmentation importante. Shake détecte ces sauts injustifiés, mais aussi ajoute des sauts dans le cas où il seraient utiles.
Enfin, il y a le problème de l'évolution de la taille et de l'usage des fichiers. ReiserFS (extN aussi je suppose) semble s'arranger pour placer les fichiers d'un même dossier ensemble, et dans l'ordre d'écriture. Mais aussi intelligent soit-il, le système ne peut pas anticiper deux ans d'utilisation, et si par exemple un dossier se voit ajouter une centaine de fichiers après être longtemps resté intact, ou si un fichier grossit sans cesse longtemps encore après avoir été crée, il seras bien obligé de fragmenter.

Il y a aussi d'autres choses, comme le fait que l'ordre d'écriture ne soit pas nécessairement l'ordre de lecture (shake réecrit les fichiers éloignés les un des autres dans l'ordre de lecture) et le fait que de nombreux fichiers restent "sur place" longtemps, fragmentant l'espace libre car le FS ne va pas de lui même les déplacer (shake les réecrit aussi).

Pour résumer : il y a des cas (rares) où les hypothèses que le système de fichier avait fait sur l'utilisateur, ou sur l'usage des fichiers sont fausses. Shake notifie le problème au système de fichier simplement en lui intimant l'ordre de les réecrire. L'efficacité du système de fichier sous jacent est donc justement ce qui fait marcher Shake et cet article va dans mon sens.
Par contre, s'il est donc suceptible d'être utile, ce n'est bel et bien pas au quotidien car ces cas sont rares.

--
Respect à RMS.

Réponse au 3° lien

Posté par Mjules (page perso, ) le 20/08/2006 à 10:21. (lien). Évalué à 2.

L'un des développeurs de KDE a fait une réponse à l'article cité en 3° lien qu'il a intitulé :
Why does Linux need defragmenting?
http://www.kdedevelopers.org/node/2270

En "rangeant" les fichiers, Shake semble répondre à sa problématique.
Tu devrais lui proposer ;)

[+] Exercice de style ?

Posté par Pierre Jarillon (page perso, ) le 20/08/2006 à 10:35. (lien). Évalué à -1.

On peut se demander si ce programme est vraiment utile vu que tous les FS créés pour les Unix (Linux inclus) ont traité le problème à la base au lieu de faire du curatif. C'est exactement comme pour les virus, en prenant toutes les précautions leur existence devient quasi-impossible.

Je pense donc que si l'utilité de ce programme est marginale, il s'agit néanmoins d'un bel exercice de style.

Il existe un défragmenteur humoristique que nous devons à Sébastien Blondeel :
--------------------------------------------------------------------------------------------
#!/bin/sh
echo "Defragmenting all hard drives"
for pourcent in `yes | head -100 | cat -n | sed 's/y//'`
do
echo "... $pourcent% completed"
sleep 5
done
echo "Now your system is nice and clean and ready to run faster!"

-- sbi (défragmenteur pour système de fichier ext2)
--------------------------------------------------------------------------------------------
et une variante issue d'une compétition spontanée sur la liste tech de l'ABUL :
--------------------------------------------------------------------------------------------
#!/bin/bash
for i in `seq 100`
do
echo $i
sleep 1
done | dialog --backtitle "Défragmenteur de disque universel (ext2/ext3, ReiserFS, XFS et JFS)" --title "defrag" --gauge "Défragmentation en cours ..." 18 60

dialog --backtitle "Défragmenteur de disque universel (ext2/ext3, ReiserFS et Vfat)" --title "defrag" --msgbox "Défragmentation terminée avec succès" 18 60

exit
--------------------------------------------------------------------------------------------

^-^

Posté par ♪♬♬♩ ♫♪♬♩ () le 20/08/2006 à 10:58. (lien). Évalué à 2.

J'ai une partition qui est fragmentée à plus de 28%, et qui rame d'une force... (Vive aMule, et les logiciels de P2P en général, qui alloue l'espace disque dynamiquement).

Pour moi, la fragmentation sous Linux existe, et n'est certainement pas négligeable. La différence de performances sur les disques durs est la première chose qui m'a frappé lorsque j'ai switché de Windows, il y a quelques années. Même avec son écriture différée et autres artifices (qui au passage m'a emmerdé je ne sais combien de fois lors d'une écriture sur clé USB), la gestion des disques sous Linux est moins performante que sous Windows.

Par exemple, copier un gros fichier (genre une iso) est non seulement plus lent sous Linux, mais en plus ça me fait tout ramer (le curseur de la souris saccade, les autres applications mettent 3 plombes à réagir, et ne parlons pas d'ouvrir un programme à ce moment là !), et j'ai pu vérifier cela avec différentes distributions (Mandriva, Debian, Ubuntu, etc.).

Le problème est bien présent, et les personnes qui l'éludent en prétextant qu'il n'existe pas n'ont soit pas utilisé Windows depuis des années, soit font preuve d'une certaine dose de mauvaise foi.

Cela dit, je ne suis pas certain que la fragmentation soit la raison du problème de différence de performances dans la gestion des disques. Certes, cela doit jouer un peu, mais à mon avis, le noyau est le principal responsable.

en cours d'utilisation

Posté par fabien () le 21/08/2006 à 10:13. (lien). Évalué à 2.

interressant comme projet,
il est ecrit sur le site que le FS peu être defragmenter en cours d'utilisation.
que ce passe t'il si shake defrag un gros fichier et qu'une application souhaite y acceder en lecture ? en ecriture?.. par exemple les données d'une base de données ?...

Et sur du RAID

Posté par Maz (page perso, ) le 21/08/2006 à 12:32. (lien). Évalué à 3.

Bonjour

Y'a-t-il un intérêt de cet outil sur des partitions RAID (software), que ce soit 0,1 ou 5. Ou au contraire, cela risque de poser plus de problèmes qu'autre chose ?

Revenir en haut de page