10 de junio de 2009

Las novedades de Linux 2.6.30

Este es un resumen de las novedades más importantes de Linux 2.6.30. Esta vez he querido publicarlo tras el anuncio oficial, y no algunos días antes. Lista completa de cambios en inglés aquí.

· NILFS2: Se trata de un nuevo sistema de archivos contribuido por la NTT (Nippon Telegraph and Telephone Corporation). Ha sido desarrollado de cero y está diseñado con "estructura de log" (log-structured). Lo que diferencia a los sistemas de archivos normales de los de diseño de log es que éstos tratan el disco como una lista linear de bloques (llamada log). Todas las operaciones añaden datos a los bloques situados al final del log, nunca se reescriben bloques ya escritos (excepto cuando no queda espacio libre, en ese caso se utilizan los bloques situados al principio). Las ventajas de este diseño es que todas las modificaciones al sistema de archivos se convierten en escrituras secuenciales, que en los discos duros tradicionales son muy eficientes comparadas con las aleatorias. Los cuelgues no pueden corromper el sistema de archivos. Al ser montado, el sistema de archivo encuentra el final real del log, y las modificaciones continuan a partir de ese punto.

Otra ventaja de este diseño es que el log ofrece una visión histórica coherente de todas las operaciones que se hayan hecho en el disco en el pasado, llamados "snapshots continuos", pues implica que se automáticamente, sin intervención de ningún administrador, se crean snapshots de todas las modificaciones del sistema de archivo en cualquier momento a medida que se van añadiendo datos al log, con el tamaño del disco como único límite. NILFS2 permite acceder a esos snapshots e incluso montarlos (de momento, solo en modo de solo-lectura).

· POHMELFS y DST: Ambos han sido contribuidos por por Evgeniy Polyakov.

POHMELFS ("Parallel Optimized Host Message Exchange Layered File System") es un sistema de archivos de red distribuido y de alto rendimiento. Tiene la habilidad de poder leer o escribir datos de/hacia múltiples nodos simultaneamente, manteniendo además un caché local de datos y metadatos, lo cual acelera bastante muchas operaciones de IO. Gana a NFS por un margen amplio en muchas operaciones, si no es en todas. Puedes encontrar más detalles y benchmarks sobre él en su página web. POHMELFS está ublicado en la sección "staging" del kernel, aunque es un proyecto bastante maduro.

DST (Distributed (network) STorage) permite crear redes de almacenamiento de datos de alto rendimiento de un modo fiable y sencillo. DST permite crear un dispositivo de almacenamiento utilizando para ello nodos remotos y locales y combinarlos en una configuración espejo, que posteriormente puede exportarse a otros nodos remotos. Se trata de un equivalente de gran parte de la funcionalidad ofrecida por el gestor de volúmenes, iSCSI y el dispositivo de bloque de red (NBD). Funciona por encima de cualquier red y protocolo. DST puede encriptar los datos en caso de tener un canal de datos no fiable, así como hacer checksums de los datos transferidos. DST se encuentra en la sección "staging" del kernel.

· Soporte del protocolo Reliable Datagram Sockets (RDS): Contribuido por www.openfabrics.org (particularmente, Oracle).

RDS es un protocolo de comunicación entre procesos de alto rendimiento, baja latencia, y fiable, diseñado para ser utilizado entre los servidores de un cluster. Ofrece una conexión fiable entre dos nodos cualesquiera del cluster. Esto permite a las aplicaciones utilizar un solo socket para hablar con cualquier otro proceso que se esté ejecutando en el cluster - asi que en un cluster con N procesos necesitas N sockets, en contraste con los N*N sockets si se utilizan protocolos de transmisión orientado a conexión como TCP. En beta testing, RDS funcionando enlaces Infiniband es un 60% más rápido que Gigabit Ethernet. RDS ya está en uso en algunos productos como Oracle y QuickSilver de SilverStorm.

· Inicio rápido: Contribuido por Intel. Algunas partes del inicio del kernel pueden retrasar el resto del inicio durante demasiado tiempo (demasiado según los estándares de un kernel): por ejemplo, escanear en búsqueda de discos conectados a un controlador, y buscar las particiones de esos disco, puede ser bastante lento. Y como el escaneo es síncrono, solamente se puede escanear un dispositivo a la vez, y el kernel tiene que esperar a que terminen de analizarse todos para continuar cargando. Con el inicio rápido, esos pasos se hacen asíncronamente, asi que el kernel puede continuar iniciando el resto del sistema mientras el kernel escanea los dispositivos de almacenamiento en paralelo. Esta característica reduce el tiempo que toma cargar el kernel significativamente.

· IEEE 802.11w (wireless management frame protection): Contribuido por Atheros. El estándar IEEE 802.11w es una propuesta, aun no aprobada, de mejora del estándar IEEE 802.11 y que supuestamente incrementa la seguridad de sus "management frames" (no me pregunten qué significa). En esta versión, Linux añade soporte preliminar de este futuro estandar, desarrollado de acuerdo con los borradores existentes.

· Llamadas al sistema preadv()/pwritev(): Contribuidas por Red Hat. Estas llamadas al sistema son una forma muy sencilla de combinar pread/pwrite y readv/pwrite. Los sistemas BSD tambien tienen estas llamadas al sistema desde hace tiempo, por ejemplo NetBSD

· EXOFS, un sistema de archivos para almacenamiento basado en objetos: Contribuido por Panasa. Los dispositivos de almacenamiento tradicionales ofrecen una interfaz basada en bloques. Sin embargo, hay una nueva generación de dispositivos de almacenamiento experimentales que están tratando de descargar parte del trabajo del hosty trasladarlo a las unidades de almacenamiento, ofreciendo una interfaz de más alto nivel: un array de objetos. El sistema operativo interactua con los objetos, y el disco hace el resto del trabajo, eliminando gran parte de los detalles de bajo nivel del sistema de archivos. Se puede implementar fácilmente un sistema de archivos encima de estos objetos. La interfaz OSD funciona encima de la pila SCSI.

En esta versión, Linux añade soporte para el protocolo OSD en la pila SCSI, y además añade exofs, una implementación de un sistema de archivos unix tradicional que funciona sobre dispositivos de almacenamiento OSD.

· Soporte preliminar de NFS 4.1: Contribuidores: Panasas, Netapp and IBM.NFS 4.1 está siendo desarrollado en el IETF. De las muchas nuevas características de NFSv4.1, esta versión de Linux añade soporte de las mandatorias "sesiones NFSv4.1". Otras características, en particular Parallel NFS, están usiendo desarrolladas y serán añadidas en posteriores versiones. Para activar este nuevo protocolo (que está desactivado por defecto) necesitas unas nfs-utils actualizadas.

· FS-Cache, un sistema de archivos de cacheado: Contribuido por Red Hat. FS-Cache es la implementación de Linux de una capa de cacheado para sistemas de archivos de red, similar al CacheFS de otros Unix. Con FS-Cache, los datos del sistema de archivos de red pueden ser cacheados localmente, acelerando las operaciones.

Esta versión de Linux añade soporte de FS-Cache para NFS y AFS, pero es una capa genérica que puede ser utilizara por cualquier otro sistema de archivos de red (o incluso no de red, como ISO9660)

· Tomoyo, un sistema de seguridad MAC alternativo: Contribuido por NTT. Hay en Linux dos subsistemas de seguridad: SELinux y Smack. Tomoyo es el tercer sistema, y es un sistema de control de acceso basado en nombres de archivo. Sitio web: http://tomoyo.sourceforge.jp/wiki-e/

· Mejoras de rendimiento de los sistema de archivos: Tras la publicación de Linux 2.6.29, hubo muchas discusiones en la LKML sobre la E/S de disco (resumen disponible en LWN), sobre como y por qué una llamada fsync() puede tomar minutos en completarse, y el efecto de quedarse con un archivo de tamaño cero cuando se reinicia justo despues de usar truncate/rename en ext4. Se han hecho varios cambios para solucionar esos problemas: fsync() implícito del archivo tras un truncate/rename en ext3, ext4 y btrfs, cambio al modo data=writeback por defecto en ext3, y mejoras a CFQ. El flame tambien ha resucitado el tema de las actualizaciones de atime, y ha desembocado en la inclusión de relatime y su activación por defecto

· Compresión de la imagen del kernel con LZMA/BZIP2: Contribuidor: Alain Knaff. El kernel comprime sus imágenes con GZIP, pero esta version añade soporte para comprimirla con LZMA o BZIP2. El tamaño de la imagen es aproximadamente un 10% más pequeñas con bzip2 en comparación con gzip, y un 33% en el caso de lzma.

· Arquitectura Microblaze: Contribuidor: Michal Simek, con donaciones de PetaLogix y Xilinx. Esta versión añade soporte para la CPU sin MMU Microblaze CPU architecture.

·Integrity Management Architecture: Contribuidor: IBM. La Integrity Measurement Architecture(IMA) mantiene una lista de hashes de ejecutables y otros archivos importantes. Si un atacante consigue cambiar los contenidos de uno de esos archivos, con la ayuda de un chip TPM, se puede detectar.

Y eso es todo por esta versión. Ya saben, lean la lista completa aquí.

13 comentarios:

  1. Anónimo11:25 a. m.

    Como siempre, unas explicaciones perfectas. Sólo un apunte, algunas partes del texto cuesta leerlas porque la traducción que haces no es muy buena (p. ej.: "Contribuido por").

    ResponderEliminar
  2. Mmmmmmmm.. Creía que se iba a dar soporte también a USB 3.0 en esta versión.

    ResponderEliminar
  3. Anónimo2:36 p. m.

    Coincido con el Anónimo de arriba. Solo una aclaración, si no me equivoco, "mandatory" en inglés significa "obligatorio".

    De todas formas un trabajo excelente: lo técnico asequible a los que no tenemos una formación tan avanzada en estos temas.

    ResponderEliminar
  4. y que hay del soporte para la virtualización? se mantiene KLVM? hay alguna mejora o modificación?

    exelente trabajo.

    ResponderEliminar
  5. Anónimo6:37 a. m.

    Da mucho gusto leer este blog, es excelente.

    Gracias por tratar las novedades del kernel.

    ResponderEliminar
  6. Anónimo1:05 p. m.

    Muy buen resumen, gracias!

    ResponderEliminar
  7. Con documentacion como esta en el idioma de Cervantes da gusto leer las mejoras y con todo lujo de detalle.

    ResponderEliminar
  8. Anónimo11:12 p. m.

    yo en este momento tengo unos minutos que instalé ese kernel y hasta ahora esta bien, por lo menos no le veo los cambios pero si debehaber algo.

    2.6.30-020630-generic #020630 SMP Wed Jun 10 09:45:40 UTC 2009 i686

    ResponderEliminar
  9. Yo no se porque pero no puedo isntalarlo

    Alguien le ha pasado tambien??

    ResponderEliminar
  10. Anónimo7:28 p. m.

    hola ... Despues de actualizar el kernel no ingresa al sistema operativo ... alguien sabe que debo hacer para esto?

    agradezco su ayuda

    ResponderEliminar
  11. Agradezco mucho la ayuda!
    Me ha servido!
    Saludoss

    ResponderEliminar
  12. Me has salvado con esta explicación!
    Gracias colega!

    ResponderEliminar