# Sistema de fitxers estructurat en registre

Un sistema de fitxers estructurat en registre és un sistema de fitxers en què les dades i les metadades s'escriuen seqüencialment en un buffer circular, anomenat registre. El disseny va ser proposat per primera vegada l'any 1988 per John K. Ousterhout i Fred Douglis i implementat per primera vegada el 1992 per Ousterhout i Mendel Rosenblum per al sistema operatiu distribuït Sprite semblant a Unix.

## Justificació

Els sistemes de fitxers convencionals tendeixen a disposar els fitxers amb molta cura per a la localitat espacial i a fer canvis in situ a les seves estructures de dades per tal de funcionar bé en discos òptics i magnètics, que tendeixen a buscar-se relativament lentament.
El disseny de sistemes de fitxers estructurats en registre es basa en la hipòtesi que això ja no serà efectiu perquè les mides de memòria cada cop més grans en els ordinadors moderns provocaran que l'E/S esdevingués pesada en escriptura perquè les lectures gairebé sempre es satisfarien des de la memòria cau. Per tant, un sistema de fitxers estructurat en registre tracta el seu emmagatzematge com un registre circular i escriu seqüencialment a la capçalera del registre.
Això té diversos efectes secundaris importants:
* Es millora el rendiment d'escriptura en discs òptics i magnètics perquè es poden agrupar en grans tirades seqüencials i les cerques costoses es mantenen al mínim.
** L'estructura s'adapta naturalment a suports amb zones o pàgines només per afegir, com ara emmagatzematges flaix i discs durs d'enregistrament magnètic amb teules.
* Les escriptures creen múltiples versions cronològicament avançades tant de dades de fitxers com de metadades. Algunes implementacions fan que aquestes versions de fitxers antigues siguin anomenades i accessibles, una característica que de vegades s'anomena viatge en el temps o instantània. Això és molt semblant a un sistema de fitxers de versions.
* La recuperació d'un accident és més senzilla. En el seu proper muntatge, el sistema de fitxers no necessita caminar totes les seves estructures de dades per solucionar qualsevol incoherència, però pot reconstruir el seu estat a partir de l'últim punt consistent del registre.
Els sistemes de fitxers estructurats en registre, però, han de recuperar l'espai lliure de la cua del registre per evitar que el sistema de fitxers s'ompli quan el cap del registre s'embolica per trobar-lo. La cua pot alliberar espai i avançar saltant les dades de les quals hi ha versions més noves més endavant al registre. Si no hi ha versions més noves, les dades es mouen i s'afegeixen al capçal.
Per reduir la sobrecàrrega que suposa aquesta recollida d'escombraries, la majoria de les implementacions eviten els registres purament circulars i divideixen el seu emmagatzematge en segments. El cap del registre simplement avança cap a segments no adjacents que ja són lliures. Si es necessita espai, primer es recuperen els segments menys plens. Això disminueix la càrrega d'E/S (i disminueix l'amplificació d'escriptura) del col·lector d'escombraries, però es torna cada cop més ineficaç a mesura que el sistema de fitxers s'omple i s'acosta a la capacitat.

## Referències

* ↑ «Log-Structured File System (LFS)» (en anglès americà), 18-07-2019. [Consulta: 26 novembre 2023].
* ↑ «CS 161: Lecture 15 4/6/17 Log-structured File Systems» (en anglès). [Consulta: 26 novembre 2023].
* ↑ «Log-structured filesystems (CS 4410, Summer 2015)» (en anglès). [Consulta: 26 novembre 2023].
* ↑ «The Design and Implementation of a Log-Structured File System» (en anglès). [Consulta: 26 novembre 2023].