Mémoire virtuelle, persistance : faut-il des fichiers ?
Je déterre un peu ce sujet pour quelques remarques sur les systèmes de fichiers journalisés, que je voulais faire tout de suite, mais d’autres occupations ...
I l y a une chose que je n’ai jamais comprise dans ces systèmes journalisés : comment peut-on assurer de revenir à l’état avant ou après transaction sans sauver dans le journal l’un de ces deux états, ce qui fait doubler les opérations d’écriture, donc divise par 2 (ou plus par mise en défaut des optimisations positionnelles) le débit en écriture ?
Une alternative qui me semble préférable et dont on entend peu parler est celle développée par McKusick et son équipe pour le système de fichiers FFS de BSD baptisée "soft update", encore appelée "ordered write", qui consiste à ordonner les écritures de façon à ce que le système de fichiers reste à tout moment dans un éat cohérent, si ce n’est peut être une incohérence entre la description de l’espace libre et ce qui l’est réellement, toujours dans le sens sans danger (ce qui est occupé n’est jamais décrit comme libre, le contraire peut arriver). On perd là aussi un peu en débit puisque l’ordre imposé empêche parfois de réordonner pour faire de l’optimisation positionnelle, et aussi de retarder une écriture en espérant que la copie mémoire du bloc modifié le sera à nouveau prochainement, ce qui regroupe pluieurs écriture en une seule (ce n’est pas interdit, mais les dépendances d’ordre peuvent forcer une écriture parce qu’on a par ailleurs décidé d’en effectuer une autre, qu’on n’aurait pas faite sans cette dépendance), mais on ne rajoute pas d’écriture, et il n’y a pas de journal à rejouer après un crash, il faut seulement faire tourner une version simplifiée de fsck en arrière-plan pour éventuellement récupérer l’espace perdu.