17 de enero de 2012

Windows y su nuevo sistema de archivos, ReFS

Microsoft ha publicado algunos detalles sobre un nuevo sistema de archivos, ReFS, "Resilient filesystem". Resumiendo mucho, se trata de un "ZFS para Windows" (pero hay matices que comentaré en este post que, para cambiar un poco, es sobre una noticia de hoy). Es más, mirando fechas no hay que ser un genio para darse cuenta de que fue desarrollado tras la aparición de ZFS y con el propósito de imitarle.

Lo cual no viene más que a confirmar una vez más el enorme impacto que ha tenido y sigue teniendo ZFS. Si tenemos en cuenta que para desarrollar y estabilizar un sistema de archivos son necesarios unos cuantos años, lo que se ha vivido en los últimos 7 años que han pasado desde que apareció ZFS es en realidad una revolución repentina y violenta en el mundillo: ha obligado a todo el mundo a desechar miles de líneas de código de una de las partes más críticas que hay en un sistema operativo, y reimplementarlo de cero.

ReFS merece, sin embargo, algunos comentarios. Teniendo en cuenta lo poquísimo que se puede comentar sobre un sistema de archivos de Microsoft, de los que nunca se sabe casi nada. Ni tan siquiera existe buena documentación pública sobre NTFS.

· Si leen el blog de Microsoft, verán que se afirma que no es una reescritura completa de NTFS, sino una reescritura de su "motor de almacenamiento". Esta afirmación puede llevar a pensar que se ha reescrito sólo "la parte de NTFS que escribe cosas al disco". Mi opinión es que esta idea se trata de una confusión: La diferenciación conceptual clara entre "VFS" y "sistema de archivo" es una noción muy linuxera. En Linux el VFS implementa, por ejemplo, la gestión del caché, y todos los sistemas de archivos lo reutilizan. En NTFS (o en ZFS) el "sistema de archivos" suele implementar casi todo por su cuenta (nadie soporta tantos sistemas de archivos como Linux, así que no tienen tantos incentivos para generalizar y reusar esas partes). Por eso, lo que Microsoft llama "cambio del motor de almacenamiento", en Linux se llamaría "nuevo sistema de archivos".

 · Al igual que Btrfs, parece que han escogido un espacio de direccionamiento de 64 bits, y no de 128 bits, como hizo ZFS. Que, en realidad es lo más lógico. Los 128 bits de ZFS son una exageración que quizás ZFS nunca llegue a necesitar. La verdad es que tampoco es tan importante, tanto 64 como 128 bits son una barbaridad.

· ReFS utiliza, como es de esperar en cualquier derivado de ZFS, técnicas de "copy-on-write" ("allocate-on-write", lo llaman ellos): Cuando se cambia algo, en lugar de escribir sobre los bloques que contienen los datos viejos, lo que se hace es escribir en bloques vacíos. Una vez escritos, las estructuras de datos que apuntaban a los datos viejos se modifican -también, a su vez, usando "copy-on-write"- para que apunten a los nuevos.

· Es curioso, sin embargo, que por defecto, cuando se utilice un sólo disco, ReFS no utilizará copy-on-write en los datos y, aparentemente, tampoco checksums, sólo en los metadatos. Se activarán por defecto sólamente con múltiples discos, en discos únicos habrá que hacerlo manualmente, en el formateo. Es decir, en configuraciones unidisco ReFS será, por defecto, equivalente a Btrfs montado con las opciones "nodatacow" y "nodatasum". Sin embargo, será posible activar ambas características manualmente para archivos y directorios determinados (Btrfs también permite desactivar esas características a nivel de archivo). Para ello, las aplicaciones, o los usuarios, tendrán que marcar un archivo como "integrity stream".

· Como ZFS, ReFS soporta "scrubbing", es decir, un proceso de validación de todos los checksums del sistema de archivos. Sin embargo, las aplicaciones podrán deshabilitar el scrubbing para un archivo determinado, del mismo modo que se desactiva el "integrity stream".

· ReFS utiliza una estructura de árbol, para representar en el disco todos los metadatos. Se utiliza la implementación del árbol lo mismo que un roto que para un descosido: un árbol puede almacenar un listado de directorios, otro puede almacenar la lista de extents de un archivo, y los nodos en los árboles que pueden apuntar a otros árboles.

· Sin embargo, no conocemos detalles de la implementación del B+Tree de ReFS. Btrfs utiliza una estructura de datos creada de un trabajador de IBM, que lo diseñó explícitamente para crear un sistema de archivos tipo ZFS (a quien le gusten las discusiones de estructuras de datos y algoritmos puede echarle un ojo). La verdad, no tengo ni idea de si la implementación de ReFS será mejor, peor, o incluso una copia disimulada. Y nunca lo sabremos, porque Microsoft nunca llegará a este nivel de detalle.

· Aunque parezca sorprendente, ReFS no parece implementar por si mismo ningún tipo de capacidad de replicación de datos o metadatos, ni de gestión de múltiples discos en forma de "pool". Quien lo implementará será "Storage Spaces", un gestor de volúmenes que verá la luz en Windows 8 y que implementará esas funciones tanto para NTFS tradicional como para ReFS.

· Por ello sospecho (aunque no puedo asegurar) que a diferencia de ZFS y Btrfs, que han reescrito de cero su propio gestor de volúmenes, Microsoft ha decidido extender su gestor de volúmenes para implementar nuevas características. No estoy seguro del alcance de esta decisión: en Linux también podrían haberse implementado algunas características de ZFS extendiendo Ext3 y LVM, y Btrfs podría haberse implementado sobre ese LVM mejorado. No se hizo así, pero Microsoft parece haber intentado esa vía.

· Probablemente como consecuencia de lo anterior, y a falta de más detalles, parece ser que ReFS es incapaz de duplicar metadatos dentro de una misma partición, como si hacen ZFS y Btrfs. Es más, no parece que a la hora de duplicar ReFS permitirá diferenciar entre replicación de datos y de metadatos. En una misma partición ReFS detectará corrupciones de metadatos gracias a los checksums, pero si los Storage Spaces no tienen configurados varios discos para mirroring no se podrá acceder a otra copia, y parte del sistema de archivos se volverá inservible (por esa razón ZFS y Btrfs duplican los metadatos incluso en una misma partición).

· Una característica curiosa de ReFS: Si gracias a los checksums se detecta corrupción en alguna parte del disco que no se puede corregir, bien por ausencia de copias, bien por corrupción que se ha expandido a todas las copias, se puede hacer un proceso llamado "salvage" ("salvamento"), que consiste en descartar las partes dañadas. Pongamos, por ejemplo, que el directorio C:/FOO está corrupto, pues el proceso de "salvage" se carga ese directorio dañado a lo bestia.

· Algunas características como enlaces duros no estarán disponibles. Pero no estarán disponibles no porque no les haya dado tiempo a implementarlas, sino por eleccion. La verdad, no entiendo el por qué.

· ReFS sólo estará disponible en Windows 8 Server, y no se podrá instalar Windows sobre él. Teniendo en cuenta que se sabe que Apple está diseñando un nuevo sistema de archivos que seguramente tendrá características de ZFS, añado a mis predicciones para 2012/13 que veremos un OS X con nuevo sistema de archivos y características de ZFS antes de que ReFS llegue a los Windows de escritorio.

9 comentarios:

  1. siddhartha6:12 p. m.

    Como siempre, excelente.

    Me hace gracia la imagen en la publicación de Microsoft donde intentan explicar la reconversión de NTFS.sys a ReFS.sys, por la linea torcida esa quan dibujado en NTFS.sys

    http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-29-43-metablogapi/8015.NTFS_2D00_and_2D00_ReFS_2D00_file_2D00_systems_5F00_64354781.jpg

    ResponderEliminar
  2. siddhartha: La verdad es que no sé qué han querido dar a entender con esa imagen, es pésima xD

    ResponderEliminar
  3. Anónimo10:13 p. m.

    Ya sabemos lo que va a pasar.
    Si se implementa, solamente la mitad de lo que se dice. Y si no muere en el camino como WinFS.

    Microsoft como siempre en ultimo lugar.

    ResponderEliminar
  4. Nick Corey5:43 p. m.

    No sé si alguien por aquí ha probado ZFS a fondo, pero ReFS parece ser el "ZFS de un hombre pobre". No tanto porque se queden en un FS de 64 bits, sino porque ZFS sigue teniendo montones de características que esta gente ni sueña. Eso sí, a Sun le llevó más de 10 años diseñar y poner en marcha un FS totalmente nuevo que después no ha sabido publicitar adecuadamente (IMHO).M$ no tiene todavía nada más allá del "Vapourware" pero ya está haciendo marketing viral entre sus incondicionales, preparándoles para que se puedan imaginar con una nueva versión de Flindons (y M$ imaginando como la compran y pagan religiosamente por ella).

    De todo lo que he probado, puedo decir que no hay ningún FS en el mercado que se asemeje, ni por asomo, a las capacidades de ZFS. No es perfecto, pero....

    ResponderEliminar
    Respuestas
    1. No es vaporware, en las betas que se han filtrado ya está disponible.

      Eliminar
  5. A mi me sorprendió (bueno, no) que repitan insistentemente:

    "Today, NTFS is the most widely used, advanced, and feature rich file system in broad use."

    "As you read this, let’s not forget that NTFS is by far the industry’s leading technology for file systems on PCs"

    ResponderEliminar
    Respuestas
    1. Si, típico de las multinacionales, mitad documentación y mitad publicidad. No sería raro que fuera obra de alguien de marketing.

      Eliminar
  6. dejen de ser tan romanticos, si es posible vender sin producto, ENTONCES para que produCto?

    ResponderEliminar
  7. Anónimo6:22 p. m.

    Fuera errores Microsoft y no hagas un sistema beta vendiéndolo lo llames vista para luego cuando hayas corregidos los errores lo llames 7 cuando el 7 es el vista mejorado fuera errores y estabilidad del sistema ante todo y supera a lamanzanita appel

    ResponderEliminar