martes, 28 de diciembre de 2010

El sistema de archivos Ext4 llega a Android, sin temor a la pérdida de datos.

El nuevo teléfono inteligente de Google Nexus S es el primer dispositivo Android en utilizar el sistema de archivos Ext4. La compañía publicó un comunicado en el blog oficial de los desarrolladores de Android a principios de este mes para discutir cómo la adopción de Ext4 en Android impactará a los desarrolladores de aplicaciones de terceros.

En un post de seguimiento la semana pasada, el desarrollador de Ext4 Ted T'so comentó sobre la transición y ofreció algunas aclaraciones respecto a las preocupaciones acerca de problemas de pérdida de datos con fsync, que dice representar un riesgo mínimo en Android debido al alto nivel de las pruebas de control de calidad.

Un experto en el desarrollo de sistema de archivos, T'so desempeñó un papel clave en el desarrollo de Ext4, la actual generación de sistema de archivos estándar del núcleo de Linux. T'so fue contratado a principios de este año por Google cuando el gigante de las búsquedas hizo la transición en su infraestructura de servidores de almacenamiento de Ext2 a Ext4. Según T'so, no influyó en la decisión de utilizar Ext4 en Android, pero proporcionó algunos consejos y orientación para el equipo de Android después de que se tomó la decisión.

La mayoría de los dispositivos Android utilizan actualmente yaffs, un sistema de archivos ligeros que se ha optimizado para el almacenamiento flash y es comúnmente usado en dispositivos móviles y empotrados. El problema con yaffs, T'so explica en su blog, es que no es multi-hilo y probablemente "haya significado un cuello de botella en los sistemas de doble núcleo." La concurrencia será importante en los dispositivos Android de próxima generación que utilizan procesadores ARM multi-core. Esperamos ver dispositivos Android de doble núcleo, incluyendo tabletas, anunció, en una fecha tan temprana como el CES.

Como Tim Bray explica en el blog de desarrolladores de Android, las aplicaciones que utilizan abstracciones de almacenamiento de alto nivel por lo general no tiene que preocuparse acerca de la transición. Los desarrolladores que acceden al sistema de archivos directamente tendrán que tener en cuenta el comportamiento de buffers de Ext4 y asegurarse de que los datos alcanzan el almacenamiento persistente en el momento oportuno evitando pérdidas de datos en caso de un fallo del sistema.

T'so dice que no hay necesidad de preocuparse. Google y los fabricantes de teléfonos móviles resolverán los problemas de fiabilidad a nivel de la plataforma del sistema de archivos, asegurando que la API de almacenamiento de alto nivel sea segura. También cree que la gran cantidad de controles de calidad realizados por los vendedores reducirán el riesgo de fallos aleatorios. Exceptuando que los usuarios arranquen la batería de un tirón, dice, es poco probable que los dispositivos Android caigan a menudo en el tipo de fallo del sistema que causa la pérdida de datos para aplicaciones que no utiliza adecuadamente fsync.

T'so también abordó la cuestión de por qué Google desestimó el Btrfs de Oracle, que se espera desplace finalmente a Ext4 en el futuro. Btrfs simplemente no está lo suficientemente maduro para su uso en sistemas de producción. Canónical había considerado el uso de Btrfs como el sistema de archivos por defecto en Ubuntu 10.10, pero aplazó la adopción de manera similar después de decidir que necesitaba más tiempo para madurar. Nokia e Intel han adoptado Btrfs para Meego, aunque no está claro si van a seguir con esa decisión cuando Meego llegue a los dispositivos de consumo reales. Está claro que Ext4 sigue teniendo un papel importante que desempeñar en lo que los problemas en Btrfs están siendo subsanados.