Recientemente ha corrido por internet este post de un tipo que ha perdido 28 archivos de un total de 15264 debido a corrupción en el disco duro en el que guarda una de las copias de seguridad. El post, sin embargo, está dedicado casi íntegramente a quejarse de lo malo y viejo que es HFS+. Y no deja de ser curioso, porque en este caso HFS+ no tiene la culpa de nada.
En realidad, el autor lo ha reconocido a posteriori en una edición al final del artículo, reconociendo lo obvio: que la corrupción es debida a fallos en el disco duro, no a una corrupción causada por HFS+. Pero eso no es suficiente para esconder la tendencia del artículo, que queda bien patente en la frase "HFS+ lost a total of 28 files over the course of 6 years", resaltada en negrita. Es errónea, HFS+ no ha "perdido" nada, ha sido la corrupción del disco duro. Si hubiese utilizado ZFS hubiera recibido advertencias de la corrupción, pero sin tener configurada algún modo de duplicación de datos, las corrupciones hubiesen sido igualmente irrecuperables.
Aun así, el autor podría tener algo de razón destacando que la culpa es de HFS+, ya que al carecer HFS+ de checksum de datos, si se corrompe un archivo esa corrupción se puede extender a las copias de seguridad sin que nadie lo note. Es cierto, pero resulta un tanto dramático. Windows, que está infinitamente más extendido que OS X, tampoco tiene ningún tipo de checksums ni para datos ni para metadatos (sólo el raid integrado de storage spaces), y hay millones de personas que hacen copias de seguridad en sistemas Windows (bueno, quizás no tantas...), y sin duda debe haber personas a las que los discos duros les corrompen algún archivo. Si la gente en Windows está acostumbrada a esta realidad, debe ser a que han logrado acostumbrarse a ello, o que los programas de copia de seguridad utilizan checksums por su cuenta.
Pero dejando este dilema de lado, lo que destacaría es el efecto que ha tenido ZFS: la gente acepta como algo natural exigir que su sistema de archivos sea capaz de detectar y gestionar correctamente la corrupción. Hace unos años esto no pasaba.
21 de junio de 2014
14 de junio de 2014
Las novedades de Linux 3.15
Ya se ha anunciado la
versión 3.15 de Linux. Entre las novedades de esta versión destacan que los sistemas con discos duros reanudan el sistema más rápido tras la suspensión, destaca también la capacidad para el renombrado cruzado y atómico de archivos, añade dos nuevos modos en fallocate(2) que permiten eliminar porciones de archivo o reescribirlas con ceros, el sistema de gestión de memoria se adapta mejor al tamaño de la carga de memoria del sistema, mejora el rendimiento de escritura de FUSE, se añade soporte para el algoritmo LZ4 en el sistema de compresión de memoria zram, kernels de 64 bits pueden cargarse desde firmwares EFI de 32 bits y se añade soporte para las instrucciones vectoriales AVX-512 que serán incluidas en futuras CPUs Intel. También se han
incluido drivers nuevos y muchas otras mejoras y pequeños cambios.
La lista completa de cambios, en inglés, puede encontrarse aquí, como siempre.
· Reanudación de la suspensión más rápida en sistemas con discos duros
La reanudación de la suspensión tardaba más de lo necesario en sistemas con discos duros tradicionales, porque el sistema se pausaba hasta que el disco duro terminara de encenderse. En esta versión, los comandos enviados al disco se envían asincrónicamente, de modo que el sistema no necesita pausarse para esperar al disco duro. El resultado es que los sistemas con discos duros reanudarán el proceso de suspensión varios segundos más rápido. Para más detalles, lea este blog.
· Mejora de la detección del tamaño de la memoria de trabajo
Cuando no hay suficiente espacio para toda la memoria en RAM, el kernel tiene la responsabilidad de decidir qué partes de la memoria deben permanecer en RAM y cuáles deben enviarse a swap o ser descartadas. Para poder tomar buenas decisiones en esa tarea, es necesario tomar nota de qué memoria es la más usada y merece permanecer en RAM y cuál puede ser evacuada. El modo en que el kernel Linux hace esto es manteniendo una lista de memoria "activa" e "inactiva", de modo que cuando unos datos son movidos a la memoria RAM su memoria es marcada como activa. A medida que se va usando más y más memoria, la lista activa se llena y la memoria menos usada se mueve a la lista inactiva.
El problema central de este algoritmo está en determinar cuál debe ser el tamaño de cada lista. Linux tiene una política de no permitir que la lista activa pueda crecer más que la inactiva, pero esta aproximación causa problemas. En esta versión, Linux toma nota con más detalle del uso de memoria y puede determinar con más fiabilidad el tamaño adecuado de las listas, lo cual hace que Linux funcione mejor en determinadas cargas, y que se adapte mejor a los cambios de carga, además de crear una fundación sólida que permitirá implementar políticas más eficaces en el futuro. Para más detalles, lea el artículo: Better active/inactive list balancing
· Los kernels EFI 64 bit pueden arrancar desde firmware de 32 bits
La mayoría de las CPUs x86 a día de hoy son de 64 bits, pero muchos sistemas modernos utilizan firmware EFI de 32 bits. Esto impedía cargar un kernel para sistemas de EFI de 64 bits desde ese firmware de 32 bits, pero esa limitación ha sido eliminada en esav versión (nótese que no es posible arrancar un kernel desde un stub EFI, es necesario un cargador que siga un protocolo determinado)
· Nuevo sistema de bloqueo de archivos: bloqueos privados de archivos
Debido a una historia desafortunada, los bloqueos de archivos POSIX tienen semánticas muy extrañas y poco útiles: los bloqueos son abandonados si el proceso cierra algún descriptor de archivo asociado con el inodo, y los bloqueos tomados por diferentes hilos del mismo proceso no se afectan entre si, lo cuál hace a este sistema inútil para el bloqueo de archivos entre hilos.
Esta versión añade un nuevo tipo de bloqueo que pretende solventar esos problemas. Estos nuevos bloqueos se afectan entre si con los bloqueos clásicos POSIX, pero tienen semánticas más similares a los bloqueos BSD respecto a la herencia y el comportamiento en el cierre del archivo. Para más documentación sobre la nueva API, lea el artículo: File-private POSIX locks
· Borrado y puesta a cero de partes de archivo más veloz
Esta versión de Linux incorpora dos nuevas flags de modo a fallocate(2):
· FALLOC_FL_COLLAPSE_RANGE: Permite eliminar una porción de un archivo sin dejar agujeros, mejorando el rendimiento de operaciones que antes tenían que hacerse con atajos más costosos.
· FALLOC_FL_ZERO_RANGE: Permite reescribir con ceros una porción de un archivo con más velocidad de lo que tomaría hacerlo manualmente (esta característica estaba disponible previamente en XFS con la ioctl XFS_IOC_ZERO_RANGE)
En esta versión, sólo XFS y ext4 tienen soporte para esas flags. Para más detalles, lea el artículo: Finding the proper scope of a file collapse operation
· Soporte para el renombrado cruzado de archivos
Esta versión añade soporte para el renombre cruzado, una variedad del renombrado de archivos en el cual dos archivos intercambian su nombre. Esta característica permite casos de usos interesantes que no eran posible antes, como por ejemplo reemplazar atómicamente un directorio con un enlace simbólico. También permite que sistemas de archivo como overlayfs operen en medio de whiteouts atómicamente. Para más detalles, lea el artículo Exchanging two files
· zram: soporte de compresión LZ4, rendimiento mejorado
Zram es un sistema de compresión de memoria utilizado por Android, Cyanogenmod, Chrome OS, Lubuntu y otros proyectos, y que fue añadido en Linux 3.14. En esta versión zram incorpora soporte para el algoritmo de compresión LZ4, que es mejor que el algoritmo actual LZO en algunos casos.
Esta versión también incorpora mejoras de rendimiento para la compresión concurrente de varios streams de compresión, y la habilidad para cambiar el algoritmo de compresión en vivo en /sys/block/zram0/comp_algorithm
· Soporte de las instrucciones vectoriales de Intel AVX-512
Las instrucciones AVX-512 son extensiones de 512 bits a las instrucciones SIMD de 256 bits "Advanced Vector Extensions" para x86. Han sido propuestas por Intel, y se espera que sean soportadas en 2015 en los procesadores Intel Knights Landing. Para más información sobre estas extensiones, lea la documentación.
· Mejora del rendimiento de la escritura de FUSE
En esta versión FUSE ha añadido la capacidad de usar el cache de escritura, lo cual mejora el rendimiento de las operaciones de escritura.
Y eso es todo. La lista completa de cambios en inglés, aquí.
· Reanudación de la suspensión más rápida en sistemas con discos duros
La reanudación de la suspensión tardaba más de lo necesario en sistemas con discos duros tradicionales, porque el sistema se pausaba hasta que el disco duro terminara de encenderse. En esta versión, los comandos enviados al disco se envían asincrónicamente, de modo que el sistema no necesita pausarse para esperar al disco duro. El resultado es que los sistemas con discos duros reanudarán el proceso de suspensión varios segundos más rápido. Para más detalles, lea este blog.
· Mejora de la detección del tamaño de la memoria de trabajo
Cuando no hay suficiente espacio para toda la memoria en RAM, el kernel tiene la responsabilidad de decidir qué partes de la memoria deben permanecer en RAM y cuáles deben enviarse a swap o ser descartadas. Para poder tomar buenas decisiones en esa tarea, es necesario tomar nota de qué memoria es la más usada y merece permanecer en RAM y cuál puede ser evacuada. El modo en que el kernel Linux hace esto es manteniendo una lista de memoria "activa" e "inactiva", de modo que cuando unos datos son movidos a la memoria RAM su memoria es marcada como activa. A medida que se va usando más y más memoria, la lista activa se llena y la memoria menos usada se mueve a la lista inactiva.
El problema central de este algoritmo está en determinar cuál debe ser el tamaño de cada lista. Linux tiene una política de no permitir que la lista activa pueda crecer más que la inactiva, pero esta aproximación causa problemas. En esta versión, Linux toma nota con más detalle del uso de memoria y puede determinar con más fiabilidad el tamaño adecuado de las listas, lo cual hace que Linux funcione mejor en determinadas cargas, y que se adapte mejor a los cambios de carga, además de crear una fundación sólida que permitirá implementar políticas más eficaces en el futuro. Para más detalles, lea el artículo: Better active/inactive list balancing
· Los kernels EFI 64 bit pueden arrancar desde firmware de 32 bits
La mayoría de las CPUs x86 a día de hoy son de 64 bits, pero muchos sistemas modernos utilizan firmware EFI de 32 bits. Esto impedía cargar un kernel para sistemas de EFI de 64 bits desde ese firmware de 32 bits, pero esa limitación ha sido eliminada en esav versión (nótese que no es posible arrancar un kernel desde un stub EFI, es necesario un cargador que siga un protocolo determinado)
· Nuevo sistema de bloqueo de archivos: bloqueos privados de archivos
Debido a una historia desafortunada, los bloqueos de archivos POSIX tienen semánticas muy extrañas y poco útiles: los bloqueos son abandonados si el proceso cierra algún descriptor de archivo asociado con el inodo, y los bloqueos tomados por diferentes hilos del mismo proceso no se afectan entre si, lo cuál hace a este sistema inútil para el bloqueo de archivos entre hilos.
Esta versión añade un nuevo tipo de bloqueo que pretende solventar esos problemas. Estos nuevos bloqueos se afectan entre si con los bloqueos clásicos POSIX, pero tienen semánticas más similares a los bloqueos BSD respecto a la herencia y el comportamiento en el cierre del archivo. Para más documentación sobre la nueva API, lea el artículo: File-private POSIX locks
· Borrado y puesta a cero de partes de archivo más veloz
Esta versión de Linux incorpora dos nuevas flags de modo a fallocate(2):
· FALLOC_FL_COLLAPSE_RANGE: Permite eliminar una porción de un archivo sin dejar agujeros, mejorando el rendimiento de operaciones que antes tenían que hacerse con atajos más costosos.
· FALLOC_FL_ZERO_RANGE: Permite reescribir con ceros una porción de un archivo con más velocidad de lo que tomaría hacerlo manualmente (esta característica estaba disponible previamente en XFS con la ioctl XFS_IOC_ZERO_RANGE)
En esta versión, sólo XFS y ext4 tienen soporte para esas flags. Para más detalles, lea el artículo: Finding the proper scope of a file collapse operation
· Soporte para el renombrado cruzado de archivos
Esta versión añade soporte para el renombre cruzado, una variedad del renombrado de archivos en el cual dos archivos intercambian su nombre. Esta característica permite casos de usos interesantes que no eran posible antes, como por ejemplo reemplazar atómicamente un directorio con un enlace simbólico. También permite que sistemas de archivo como overlayfs operen en medio de whiteouts atómicamente. Para más detalles, lea el artículo Exchanging two files
· zram: soporte de compresión LZ4, rendimiento mejorado
Zram es un sistema de compresión de memoria utilizado por Android, Cyanogenmod, Chrome OS, Lubuntu y otros proyectos, y que fue añadido en Linux 3.14. En esta versión zram incorpora soporte para el algoritmo de compresión LZ4, que es mejor que el algoritmo actual LZO en algunos casos.
Esta versión también incorpora mejoras de rendimiento para la compresión concurrente de varios streams de compresión, y la habilidad para cambiar el algoritmo de compresión en vivo en /sys/block/zram0/comp_algorithm
· Soporte de las instrucciones vectoriales de Intel AVX-512
Las instrucciones AVX-512 son extensiones de 512 bits a las instrucciones SIMD de 256 bits "Advanced Vector Extensions" para x86. Han sido propuestas por Intel, y se espera que sean soportadas en 2015 en los procesadores Intel Knights Landing. Para más información sobre estas extensiones, lea la documentación.
· Mejora del rendimiento de la escritura de FUSE
En esta versión FUSE ha añadido la capacidad de usar el cache de escritura, lo cual mejora el rendimiento de las operaciones de escritura.
Y eso es todo. La lista completa de cambios en inglés, aquí.
29 de abril de 2014
Firefox 29, una actualización diferente
Desde que Firefox adoptó el calendario de publicación de nuevas versión "Rapid Release", las nuevas versiones de Firefox se han sucedido una tras otra cada seis semanas. Desde que se adoptó el actualizador automático silencioso, la gente ni tan siquiera se entera de cuando se publican. Por eso me resulta curioso que haya una versión que haya dado tanto que hablar, incluso antes de ser publicada: Firefox 29, la versión que incorpora Australis, la nueva interfaz.
Los cambios de interfaz suelen despertar los instintos más conservadores de la gente. Es sabido que páginas como Facebook reciben un volumen enorme de críticas cada vez que hacen un cambio sustancial, críticas que a las dos semanas desaparecen. En otros casos, como el de Windows 8, no desaparecen y se acaban corrigiendo los fallos. ¿Qué clase de cambio será Firefox 29?
A favor del primer caso tiene el llevar en desarrollo cinco años y múltiples retrasos por razones de estabilidad, un tiempo en el que han tenido tiempo de dejar la interfaz como deseaban. Se oyen críticas, pero la de inestabilidad no es la más común. Por otra parte, se acusa al diseño de parecerse a Chrome, pero es que el diseño de Chrome no es precisamente un fracaso. Y hay que tener muy en cuenta que el Classic Theme Restorer va a ser una válvula de escape muy importante.
A favor del último caso tiene, sin embargo, los síntomas de Windows 8 y otros grandes rediseños de interfaz polémicos: gente quejándose durante meses y meses, desarrolladores que afirman escuchar a esa gente pero sin que eso se materialice en algo más que palabras, decisiones aparentemente absurdas para muchos, partes de la interfaz que dejan de ser configurables...y, sobre todo, hay una minoría que tenía configuraciones de la interfaz muy específicas y en varios casos Australis rompe completamente con sus hábitos. Romper con los hábitos de la gente siempre crea problemas, incluso con aquellos a quienes les gusta la nueva interfaz.
Creo que al final la interfaz Australis acabará siendo aceptada. Quizás haga falta esperar a mejoras próximas -sacar una versión cada 6 semanas tiene sus ventajas- para corregir algunos problemas y al desarrollo de extensiones que satisfagan todas las necesidades, pero dudo que veamos un apocalipsis de Firefox, especialmente cuando las alternativas viables son Chrome e IE, opciones aun peores para la clase de usuario que odia Australis.
Los cambios de interfaz suelen despertar los instintos más conservadores de la gente. Es sabido que páginas como Facebook reciben un volumen enorme de críticas cada vez que hacen un cambio sustancial, críticas que a las dos semanas desaparecen. En otros casos, como el de Windows 8, no desaparecen y se acaban corrigiendo los fallos. ¿Qué clase de cambio será Firefox 29?
A favor del primer caso tiene el llevar en desarrollo cinco años y múltiples retrasos por razones de estabilidad, un tiempo en el que han tenido tiempo de dejar la interfaz como deseaban. Se oyen críticas, pero la de inestabilidad no es la más común. Por otra parte, se acusa al diseño de parecerse a Chrome, pero es que el diseño de Chrome no es precisamente un fracaso. Y hay que tener muy en cuenta que el Classic Theme Restorer va a ser una válvula de escape muy importante.
A favor del último caso tiene, sin embargo, los síntomas de Windows 8 y otros grandes rediseños de interfaz polémicos: gente quejándose durante meses y meses, desarrolladores que afirman escuchar a esa gente pero sin que eso se materialice en algo más que palabras, decisiones aparentemente absurdas para muchos, partes de la interfaz que dejan de ser configurables...y, sobre todo, hay una minoría que tenía configuraciones de la interfaz muy específicas y en varios casos Australis rompe completamente con sus hábitos. Romper con los hábitos de la gente siempre crea problemas, incluso con aquellos a quienes les gusta la nueva interfaz.
Creo que al final la interfaz Australis acabará siendo aceptada. Quizás haga falta esperar a mejoras próximas -sacar una versión cada 6 semanas tiene sus ventajas- para corregir algunos problemas y al desarrollo de extensiones que satisfagan todas las necesidades, pero dudo que veamos un apocalipsis de Firefox, especialmente cuando las alternativas viables son Chrome e IE, opciones aun peores para la clase de usuario que odia Australis.
Suscribirse a:
Entradas (Atom)