Red Hat ya trabaja en un nuevo sistema de archivos NVFS, eficiente para NVM
Mikuláš Patočka, uno de los desarrolladores de LVM e inventor de varios inventos de optimización de almacenamiento en Red Hat, ha introducido el nuevo sistema de archivos NVFS en la lista de correo del kernel de Linux.
Este nuevo sistema tiene como objetivo de crear un sistema de archivos rápido y compacto para chips de memoria no volátil (NVM, por ejemplo NVDIMM), que combina el rendimiento de la RAM con la capacidad de almacenar contenido de forma permanente.
Al desarrollar NVFS se tuvo en cuenta la experiencia de FS NOVA, en 2017 creado específicamente para memoria NVM, pero no incluido en el kernel de Linux y con soporte limitado para kernels de Linux desde 4.13 a 5.1.
El FS NVFS propuesto es mucho más simple que NOVA (4972 líneas de código frente a 21459), proporciona una utilidad fsck, tiene un mejor rendimiento, admite atributos extendidos (xattrs), etiquetas de seguridad, ACL y cuotas, pero no admite instantáneas.
La arquitectura de NVFS es cercana a FS Ext4 y encaja bien en el modelo de sistemas de archivos basados en el subsistema VFS, lo que hace posible minimizar el número de capas intermedias y arreglárselas con un módulo que no requiere parches en el kernel.
NVFS utiliza la interfaz del kernel de DAX para acceder directamente a los dispositivos de almacenamiento persistentes, sin pasar por la caché de la página. Para optimizar el trabajo con la memoria NVM, que utiliza direccionamiento de bytes, el contenido de la unidad se asigna al espacio de direcciones lineal del kernel sin utilizar la capa de dispositivo de bloque tradicional y la caché intermedia. Se utiliza para almacenar el contenido de los directorios del árbol de la raíz ( árbol de la raíz), en el que cada nombre de archivo proheshirovano y valor hash se utiliza para buscar en el árbol.
La integridad de los datos está asegurada a través del mecanismo de «actualizaciones» (como en UFS de FreeBSD y FFS de OpenBSD) sin usar el diario.
Para evitar la corrupción de archivos en NVFS, las operaciones de cambio de datos se agrupan de tal manera que un bloqueo no puede conducir a la pérdida de bloques o inodos, y la integridad de las estructuras se restaura mediante la utilidad fsck.
La utilidad fsck es multiproceso y proporciona un rendimiento de fuerza bruta de 1,6 millones de inodos por segundo.
- En los puntos de referencia, NVFS realizó una operación de copia de árbol con fuentes del kernel de Linux en la memoria NVM aproximadamente un 10% más rápido que NOVA, un 30% más rápido que ext4 y un 37% más rápido que XFS.
- En la prueba de búsqueda de datos, NVFS fue más rápido que NOVA en un 3% y ext4 y XFS en un 15% (pero con un caché de disco activo, NOVA resultó ser un 15% más lento).
- En la prueba Million Directory Operations, NVFS superó a NOVA en un 40%, ext4 en un 22% y XFS en un 46%. Al simular la actividad de DBMS, el sistema de archivos NVFS superó a NOVA en un 20%, ext4 en 18 veces y XFS en 5 veces. En la prueba fs_mark, NVFS y NOVA eran aproximadamente iguales, mientras que ext4 y XFS estaban aproximadamente 3 veces por detrás.
El retraso de los FS tradicionales en la memoria NVM se debe al hecho de que no están diseñados para el direccionamiento de bytes utilizado en la memoria no volátil, que se parece a la RAM normal.
La lectura de unidades ordinarias proporciona atomicidad de la operación en el nivel de lectura / escritura del sector, mientras que la memoria NVM proporciona acceso a nivel de palabras de máquina individuales.
Además, los sistemas de archivos tradicionales intentan reducir la intensidad del acceso a los medios, que obviamente se considera más lento que la RAM, y también intentan agrupar las operaciones para asegurar lecturas secuenciales al usar discos duros, procesar colas de solicitudes, combatir la fragmentación y separar las prioridades para realizar diferentes operaciones.
Para la memoria NVM, tales complicaciones son innecesarias, ya que la velocidad de acceso a los datos es comparable a la RAM.