Une façon intelligente de défragmenter un système de fichiers FAT?

10

Quelle est la meilleure façon de défragmenter un système de fichiers FAT lors de l'exécution de Linux / Unix (sur une clé USB par exemple)?

Marc MAURICE
la source
4
J'irais pour votre première option si l'espace n'est pas un problème. Je créerais un système de fichiers propre dans un gros fichier monté en boucle. De cette façon, vous avez la possibilité de vérifier le résultat avant d'écraser le stick.
jippie
La suggestion de @ jippie propose également une sauvegarde. Sinon, j'opterais pour un utilitaire de défragmentation, mais vérifiez d'abord qu'il est fiable et sauvegardez au préalable si j'ai des pièces jointes aux données.
vonbrand
@jippie: vous voulez dire créer un fichier de boucle de la même taille que la partition fat initiale, copier tout dessus, vérifier, puis dd sur le périphérique d'origine? Vous aurez besoin d'espace supplémentaire, et je ne vois pas en quoi il est préférable de simplement copier le fichier sur le système de fichiers ext local temporairement. Ou je manque quelque chose.
Marc MAURICE
1
Vous pouvez vérifier le résultat avant de modifier le contenu du lecteur flash.
jippie

Réponses:

7

Vous pouvez vérifier si un fichier est fragmenté ou non à l'aide de l' filefragutilitaire.

De cette façon, vous pouvez filtrer les fichiers qui ne sont pas fragmentés et effectuer la copie / copie uniquement pour les fichiers déjà fragmentés. Cela devrait vous faire gagner du temps. Cependant, sachez qu'il n'y a aucune garantie que la nouvelle disposition des fichiers sera meilleure que l'ancienne.

La meilleure façon est d'ignorer complètement la fragmentation des fichiers. Surtout sur une clé USB, cela n'a guère d'importance, ne gaspille que les cycles d'écriture et contrairement aux disques durs, il n'y a pas de pièces mobiles et donc pas beaucoup de pénalité en raison de la fragmentation.

La défragmentation ne devrait être nécessaire que si quelque chose de drôle s'est produit et a provoqué une fragmentation extrême des fichiers. Par exemple, les clients torrent qui téléchargent le contenu des fichiers dans un ordre aléatoire sans préallouer. Mais à moins que FAT n'ait commencé à prendre en charge des fichiers clairsemés à un moment donné, ce n'est même pas un problème, car la préallocation est obligatoire sur un tel FS.

frostschutz
la source
1
Merci pour votre réponse. En fait, j'ai besoin d'un moyen de défragmenter complètement le système de fichiers FAT parce que j'utilise Easy2boot , et chaque fichier iso ne doit pas être fragmenté.
Marc MAURICE
Cela me semble une méthode dépassée. GRUB2 isoloop est très populaire, donc beaucoup de distributions prennent en charge le montage en boucle d'une iso de n'importe où déjà. Ceux qui ne le font pas, il se peut que cela fonctionne directement à partir d'une partition, mais cela pourrait tout aussi bien échouer. Dépend entièrement de l'ISO lui-même.
frostschutz
2
L'inconvénient de GRUB2 isoloop est qu'il chargera directement un noyau Linux dans l'ISO. Vous devez connaître le chemin du noyau / initrd à charger, et vous perdrez le menu ISOLINUX offrant des options de démarrage personnalisées.
Marc MAURICE
Trouver le chemin n'est pas difficile, et le reste dépend de l'effort que vous voulez faire pour convertir les éléments du menu isolinux en un sous-menu grub2 ... mais oui, toutes les solutions ont leurs inconvénients. Je viens de tester ma partition ISO - AUCUN des fichiers n'est défragmenté. Et ils ont été copiés un par un. La résolution de ce problème serait une douleur majeure pour moi, donc je vais plutôt renoncer aux ISO qui ne prennent pas en charge le montage isoloop.
frostschutz
Je n'ai jamais utilisé easy2boot moi-même, mais comme cette solution implique la création d'une partition, ne pourriez-vous pas le faire en premier lieu - une partition par ISO et dd. Aucune fragmentation n'est possible de cette façon. Ou bien si c'est possible, un système de fichiers sans fragmentation (ISO dans ISO?)
frostschutz
0

Regardons cela sous un angle différent, car vous avez donné un exemple "sur une clé USB par exemple"

MAUVAIS EXEMPLE

Une clé USB est une mémoire FLASH, et il y a deux choses à considérer: 1) Étant donné que la mémoire FLASH n'a pas de pièces mobiles, il n'y a aucun gain de performance notable à voir en faisant une défragmentation. Les défragments servent soit à nettoyer le système de fichiers, soit à réorganiser les blocs de fichiers pour les rapprocher les uns des autres - pour réduire les mouvements physiques du bras (recherche) et le temps d'attente de rotation du disque (latence). Flash ne l'a pas. 2) L'écriture et l'écriture et l'écriture sur la mémoire flash la fatiguent. Maintenant, pour une endurance d'écriture de 100K, votre clé USB durerait peut-être plusieurs à 10 ans, mais le nombre de fois que vous pouvez écrire est un nombre "fini". Les défragmentation constantes de la clé USB rongent cette vie en raison de la limitation de l'endurance.

Et ce n'est pas seulement votre clé USB, vos cartes SD, Compact FLASH et même vos disques SSD.

Mon point, ne défragmentez pas juste pour l'enfer, sachez quelle est la technologie sous-jacente sous le système de fichiers et ses implications, et même si elle est magnétique et non électronique, trop de défragmentation peut éventuellement corrompre votre système de fichiers et vous perdez vos fichiers.

Robert Shullich
la source