2 votes

Comment défragmenter un système de fichiers JFFS2 ?

J'ai cherché partout sur Internet, y compris sur un certain nombre de forums StackExchange, une méthode efficace pour défragmenter un système de fichiers JFFS2 et je n'ai pas trouvé de réponse.

Le système en question est doté d'une partie flash NAND de 256 Mo. On y accède en tant que dispositif MTD divisé en trois partitions. La troisième partition est celle où le système de fichiers racine est stocké sous la forme d'un système de fichiers JFFS2. Le problème est que les écritures dans le système de fichiers racine ont des performances non déterministes en raison des problèmes habituels du ramasse-miettes JFFS2 qui décide de s'exécuter aux pires moments possibles. Lorsque cela se produit, le produit est bloqué pour une durée inconnue pendant que le ramasse-miettes (et pdflush) s'exécutent.

Il n'est pas possible de modifier le système de fichiers. La solution doit être quelque chose qui peut être exécuté pendant les heures creuses et qui, après avoir été exécuté, donne des performances d'écriture plus prévisibles. Je travaille actuellement sur un programme qui tentera de forcer le garbage collector à s'exécuter, puis de supprimer le fichier en espérant que tous les nœuds libérés seront soudainement plus facilement disponibles et que les écritures seront plus performantes.

Réflexions ?

1voto

Soundar Points 11

Essayez d'implémenter votre propre algorithme de collecte de déchets et essayez de l'exécuter en temps de montage, et lorsque vous manquez d'espace pour écrire, redémarrez un thread de collecte de déchets séparément.

Il sera beaucoup plus facile d'écrire vos fichiers sous forme de fragments, de sorte que lorsque vous effacez un bloc ou une page contenant la moitié d'un fichier, vous pouvez encore l'écrire quelque part et récupérer la page pour un usage ultérieur.

La partie la plus délicate est de savoir comment ouvrir un fichier contenant plusieurs fragments répartis sur le système de fichiers.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X