Estructura del sistema de archivos que escribe toda la información en un búfer circular.
Un sistema de archivos estructurado en registros es un sistema de archivos en el que los datos y metadatos se escriben secuencialmente en un búfer circular , llamado registro . El diseño fue propuesto por primera vez en 1988 por John K. Ousterhout y Fred Douglis e implementado por primera vez en 1992 por Ousterhout y Mendel Rosenblum para el sistema operativo distribuido Sprite similar a Unix . [1]
Razón fundamental
Los sistemas de archivos convencionales tienden a diseñar los archivos con gran cuidado en cuanto a la localidad espacial y a realizar cambios en el lugar en sus estructuras de datos para funcionar bien en discos ópticos y magnéticos, que tienden a buscar con relativa lentitud.
El diseño de sistemas de archivos estructurados en registros se basa en la hipótesis de que esto ya no será efectivo porque los tamaños de memoria cada vez mayores en las computadoras modernas llevarían a que las E/S se volvieran pesadas en escritura porque las lecturas casi siempre se realizarían desde la memoria caché. Por lo tanto, un sistema de archivos estructurado en registros trata su almacenamiento como un registro circular y escribe secuencialmente en el encabezado del registro.
Esto tiene varios efectos secundarios importantes:
- El rendimiento de escritura en discos ópticos y magnéticos mejora porque se pueden agrupar en grandes ejecuciones secuenciales y las búsquedas costosas se mantienen al mínimo.
- Las escrituras crean múltiples versiones que avanzan cronológicamente tanto de datos de archivos como de metadatos. Algunas implementaciones hacen que estas versiones de archivos antiguos sean nombrables y accesibles, una característica a veces llamada viaje en el tiempo o toma de instantáneas . Esto es muy similar a un sistema de archivos de control de versiones .
- La recuperación de fallos es más sencilla. En su próximo montaje, el sistema de archivos no necesita recorrer todas sus estructuras de datos para corregir cualquier inconsistencia, pero puede reconstruir su estado desde el último punto consistente en el registro.
Sin embargo, los sistemas de archivos estructurados en registros deben recuperar espacio libre de la cola del registro para evitar que el sistema de archivos se llene cuando la cabecera del registro gira para encontrarse con él. La cola puede liberar espacio y avanzar omitiendo datos para los cuales existen versiones más nuevas más adelante en el registro. Si no hay versiones más nuevas, los datos se mueven y se agregan al encabezado.
Para reducir la sobrecarga incurrida por esta recolección de basura , la mayoría de las implementaciones evitan registros puramente circulares y dividen su almacenamiento en segmentos. La cabeza del tronco simplemente avanza hacia segmentos no adyacentes que ya están libres. Si se necesita espacio, primero se recuperan los segmentos menos llenos. Esto disminuye la carga de E/S (y disminuye la amplificación de escritura ) del recolector de basura, pero se vuelve cada vez más ineficaz a medida que el sistema de archivos se llena y se acerca a su capacidad.
Desventajas
La lógica del diseño de los sistemas de archivos estructurados en registros supone que la mayoría de las lecturas se optimizarán mediante memorias caché cada vez mayores. Esta suposición no siempre se cumple:
- En medios magnéticos (donde las búsquedas son relativamente caras), la estructura de registro puede hacer que las lecturas sean mucho más lentas, ya que fragmenta archivos que los sistemas de archivos convencionales normalmente mantienen contiguos con las escrituras in situ.
- En la memoria flash, donde los tiempos de búsqueda suelen ser insignificantes, es posible que la estructura de registro no proporcione una ganancia de rendimiento que valga la pena porque la fragmentación de escritura tiene un impacto mucho menor en el rendimiento de escritura. Otro problema es apilar un registro encima de otro, lo cual no es una muy buena idea ya que fuerza múltiples borrados con acceso no alineado. [4] Sin embargo, muchos dispositivos basados en flash no pueden reescribir parte de un bloque, y primero deben realizar un ciclo de borrado (lento) de cada bloque antes de poder reescribir, por lo que poner todas las escrituras en un bloque, esto puede ayudar. rendimiento en lugar de escrituras dispersas en varios bloques, cada uno de los cuales debe copiarse en un búfer, borrarse y volver a escribirse, lo cual es una clara ventaja para la llamada memoria flash "sin procesar", donde se omite la capa de traducción flash. [ cita necesaria ]
Ver también
Referencias
- ^ John K. Ousterhout, Mendel Rosenblum. (1991), Diseño e implementación de un sistema de archivos estructurado con registros (PDF) , Universidad de California, Berkeley
- ^ Equipos de ingeniería de hardware de Magic Pocket. "Ampliando la innovación de Magic Pocket con la primera implementación de unidad SMR a escala de petabytes". dropbox.tech .
- ^ Reid, Colin; Bernstein, Phil (1 de enero de 2010). "Implementación de una interfaz de solo anexo para almacenamiento de semiconductores" (PDF) . Ingeniero de datos IEEE. Toro . 33 : 14-20.
- ^ Swaminathan Sundararaman, Jingpei Yang (2014), No apile su registro en mi registro (PDF) , SanDisk Corporation
Otras lecturas
- Sistemas de archivos estructurados en registros (2014), Arpaci-Dusseau, Remzi H.; Arpaci-Dusseau, Andrea C.; Libros de Arpaci-Dusseau