Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
Défragmentation d'un disque ou comment éviter la fragmentation des données
Envoyé par: mitch10593

Bonjour à tous,

Après avoir cherché de longues heures (en vain) un outil pour défragmenter des partitions ext3, je viens chercher ici une aide que je n'ai su trouver ailleurs.

Alors voilà deux questions, toutes deux liées à la fragmentation des fichiers sous Linux:
1- existe-t-il un logiciel de défragmentation sous linux (ou, au mieux, une astuce qui permettrai de défragmenter certains fichiers)

2- comment éviter la fragmentation excessive des fichiers (peut-être en séparant au max les données sur des partitions à vocation dédiés, comme les petits fichiers d'un côté et les gros fichiers de l'autre)

Dans l'attente (inespérée) d'un bon tuyau,

Cordialement,

Mitch.

Poste le Monday 18 January 2010 18:00:54
Répondre     Citer    
Re: Défragmentation d'un disque ou comment éviter la fragmentation des données
Envoyé par: nicola

C’est géré par le noyau, bref ne t’en occupe pas, c’est inutile.

--
On ne prête qu’aux riches, et on a bien raison, parce que les autres remboursent difficilement.
-+- Tristan Bernard (1866-1947) -+-

Poste le Monday 18 January 2010 22:00:01
Répondre     Citer    
Re: Défragmentation d'un disque ou comment éviter la fragmentation des données
Envoyé par: mitch10593

Re-Bonjour,

En fait, si je pose la question, c'est parceque le noyau gère très mal la fragmentation des fichiers.
La légende urbaine qui veut que Linux ne fragmente pas les données des fichiers ou alors gère ça mieux que windows n'est qu'un Mythe.

Voici un exemple concret.
J'ai un fichier d'index d'une base de données MySQL (moteur MyISAM) qui fait 2.3 Go
Voici le résultat avec filefrag:
exptr.MYI: 123290 extents found, perfection would be 19 extents
Blocksize of file exptr.MYI is 4096
File size of exptr.MYI is 2360445952 (576281 blocks)

Un extent fait donc en moyenne 4.67 blocks, soit en moyenne 18.7 ko.
Celà signifie que le fichier de 2.3 Go a en moyenne des morceaux de 18.7 ko. Le taux de fragmentation frise les 100% (et de nombreux autres fichiers sont dans le même cas).

Donc non, le noyau ne gère pas ça, et c'est plus qu'utile pour moi de m'en occuper.
Merci quand même pour ta tentative de réponse.

Poste le Tuesday 19 January 2010 09:42:20
Répondre     Citer    
Re: Défragmentation d'un disque ou comment éviter la fragmentation des données
Envoyé par: vincentxavier

Je maintiens ce qui a été dit. En revanche, si tu n'utilises pas des tailles d'extends adaptées à ce que tu désires stocker, il est évident que le noyau d'aura d'autre solution que de fragmenter.

Si tu cherhces à tout prix à défragmenter et à optimiser l'utilisation de ton espace disque, je te suggère de créer une nouvelle partition, que tu dimensionneras correctement et à la monter. Tu pourras y copier les données de ton bidule SQL de 2,3 Go, ce qui défragmentera cet espace. Puis tu pourras utiliser ton serveur SQL avec ta copie sur ta partition dédiée.

Enfin, bref, je pense que j'ai tout dit, à toi d'être un peu imaginatif pour réaliser les étapes dans l'ordre.

C'est en forgeant qu'on devient forgeron, et c'est en sciant que Léonard De Vinci !

Mon site perso

Poste le Tuesday 19 January 2010 10:03:28
Répondre     Citer    
Re: Défragmentation d'un disque ou comment éviter la fragmentation des données
Envoyé par: mitch10593

Je ne cherche pas à défragmenter (ou à éviter une fragmentation trop importante) de mes fichiers pour le plaisir.
Sur des fichiers trop fragmentés, la vitesse de lecture (des fichiers) tombe en dessous de 1Mo/s (contre 60 - 80Mo/s sur des fichiers non fragmentés).

Les fichiers d'index des bases de données sont là pour accélérer la consultation des données des tables. Si ces fichiers d'index sont trop lent à lire (en raison de leur fragmentation) celà revient à perdre l'intérêt de ces index.
Celà vaut aussi pour des fichiers de données où de nombreuses opérations d'ajout/modification/suppression de données sont effectués. La fragmentation des fichiers sur le disque ralenti tous les jours de plus en plus mes serveurs.

J'avais déjà pensé à dédié une partition pour la base de données, une partition pour les scripts php, une partition pour les fichiers d'archive, etc...
Maintenant, vu les nombreux giga de données que je suis amené à transférer, je souhaitais avoir des avis (ou d'autres solutions) sur ces solutions un peu lourdes à mettre en oeuvre.

Poste le Tuesday 19 January 2010 10:49:14
Répondre     Citer    
Re: Défragmentation d'un disque ou comment éviter la fragmentation des données
Envoyé par: ALT

Bah ! si rien que l'index fait 2,3 Go, je n'ose imaginer la taille de la table correspondante !cool smiley

Alors là, je ne crois pas qu'un système de fichiers, aussi merveilleux soit-il, puisse éviter la fragmentation de tes fichiers. Surtout sur une table souvent modifiée ! eye rolling smiley
Ce n'est pas pour rien que sur les gros systèmes IBM on déclare la taille maximale d'un fichier à sa création ! Si le fichier grossit trop, on n'a plus qu'à le recréer ailleurs...smoking smiley

Donc, un disque dédié semble ici la meilleure solution. Et un gros !

Car je confirme que Linux fragmente peu les fichiers. Il ne le fait, contrairement à d'autres systèmes, que quand il ne peut pas faire autrement. C'est visiblement le cas ici. cool smiley
J'ajouterai que, par défaut (c'est à dire si l'administrateur ne l'a pas paramétré autrement), le système vérifie l'intégrité des fichiers tous les 20 ou 25 redémarrages. Évidemment, si on ne redémarre pas, il ne le fait pas, car il n'en a pas vraiment besoin (surtout avec EXT3 qui est journalisé). D'ailleurs, des serveurs fonctionnent pendant des années sans redémarrage & ne s'en portent pas plus mal.

Voilà.
Bonnes sauvegarde & restauration (sur le nouveau disque).

Poste le Wednesday 10 February 2010 23:40:31
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
Défragmentation d'un disque ou comment éviter la fragmentation des données
Un problème avec une commande du shell ? Comment utiliser la crontab ? Vous avez des soucis pour la gestion réseau sous Linux ? Pour vous la gestion des utilisateurs/groupes est du chinois ? Etc... Posez donc vos questions ici.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons