Pero, ¿tan importante es el sistema de ficheros?
Viendo en Meneame (lo reconozco, ¡lo leo todos los días!) otro flameante debate sobre si es mejor ext3 o reiserfs, a raíz de la noticia —algo antigua— del desarrollo de btrfs, se me ha ocurrido explicar algunos puntos que considero cruciales para que un sistema de ficheros sea bueno de verdad.
Aunque soy informático, no voy a hablaros de árboles B+ ni cosas de por el estilo, porque los sistemas de ficheros no es un tema que haya tocado demasiado. Lo que realmente quería comentaros son las cosas que se ven desde el punto de vista del usuario y que marcan la diferencia entre un sistema rápido y uno lento. Para los que estéis algo perdidos, tan sólo tenéis que saber que el “sistema de ficheros” es la forma en que se guardan los datos físicamente en el disco. Seguro que os suenan las palabras “FAT32″ o “NTFS”; pues se trata de eso mismo.
¿Qué diferencias hay entre usar un sistema u otro? En la teoría pocas; y en la práctica muchas. Ahora veremos por qué.
Las particiones
Yo considero inconcebible que, a fecha de hoy, sigamos usando particiones. Éstas deberían ser dinámicas y adaptarse al espacio libre; la fusión y escisión de espacio vacío debería ser transparente al usuario y liberarle del dolor de cabeza que es particionar. Algunos sistemas de ficheros para servidores lo permiten, pero a día de hoy ninguno de los SF “domésticos” implementan esta característica. Muy lamentable.
Velocidad y consumo de recursos
Seguro que alguna vez habréis visto comparativas del estilo “Creación de 10.000 ficheros en reiserfs, ext2, ext3, xfs…”. Aunque son datos teóricos que dan para unas discusiones muy divertidas, como dicen los estadounidenses, eso es “bullshit”. La velocidad es lo que hace que un disco de 7200 rpm se arrastre o uno de 5400 vuele. ¿Queréis ejemplos del uso diario? Muy sencillo: Bajáos la discografía de algún artista por el emule, y que ocupe más o menos 1 giga. Será un .zip o un .rar.
Ahora intentad descomprimirlo y medid dos factores: cuánto tarda y lo mucho que ralentiza el sistema. De nada sirve que un sistema de ficheros sea rapidísimo en lectura y escritura simultánea o en creación de ficheros pequeños si no te permite trabajar mientras se descomprime ese .rar de la mucha CPU o E/S que chupa. ESO es velocidad real
Fiabilidad
Como soy la persona que ha petado más discos duros de entre las que conozco, podría decirse que tengo algo de experiencia. Hay dos tipos de “fiabilidad”: la preventiva y la curativa, como en la medicina. La primera implica que cuando se te cuelga el PC y tienes que resetear no pierdas datos o los puedas recuperar con soltura, léase scandisk o fsck al inicio. A todos nos ha pasado alguna vez que el ordenador se bloquea y al reiniciar nos sale un mensajito asqueroso del tipo “Ejecuta scandisk manualmente” o “Ejecuta fsck manualmente”. Si esto sucede, es porque el sistema de ficheros tiene muy mala fiabilidad preventiva, porque no puede recuperarse automáticamente de un fallo y debe pedir ayuda al usuario que, seguramente, tiene aún menos idea de lo que está pasando. Por ejemplo, reiserfs nunca suelta frases de ese estilo y siempre se recupera de forma automática, mientras que FAT32 o ext3 sí que lo hacen.
Sin embargo, cuando todo peta y no queda más que pasar herramientas forenses al disco, nos enfrentamos a otro problema. ¿Cómo recuperar datos sin montar el sistema?. Aquí casi todos los sistemas fallan estrepitosamente, aunque con reiserfs pude recuperar más datos que con ext3.
Obviamente, la velocidad y la fiabilidad están enfrentadas. Cuanto más búfer de disco para ir más rápido, también será más difícil recuperar datos en caso de petada.
Compatibilidad
Tan sólo una frase breve para recordar que no nos sirve de nada tener un sistema de ficheros ESLAPUTAHOSTIAFS si luego no podemos leerlo más que en nuestro ordenador. “Gracias” a Windows tenemos que formatear los discos USB portátiles con FAT32.
Esto se aplica tanto a los sistemas cerrados como a los patentados.
Conclusión
Este artículo no ha sido muy exhaustivo, ni tan siquiera he intentado comparar diferentes sistemas de ficheros. Menciono algunos como ejemplo, pero no le deis más importancia. Sin embargo, dicen en la Fórmula 1 que, pese a toda la maquinaria que llevan los coches, la parte más importante siguen siendo los neumáticos, que es la única pieza que está en contacto con el suelo y que hace que el coche corra. En la informática, lo más importante son los datos, y muy poca gente tiene en cuenta el sistema de ficheros.
Un SF es a la vez la plataforma que protege y la que nos obtiene los datos, así que debería ser muy fiable y muy rápida. Si además pudiéramos olvidarnos de las particiones, quizá consigamos de una vez desterrar las metáforas de la informática de los 60
Hola! Me ha parecido interesante el post, pero me quedan algunas dudas. Espero no estar molestando al preguntar.
¿Por qué es malo tener particiones? ¿Por qué se siguen usando si es algo malo? ¿Qué ventajas tienen -tendrían- las particiones dinámicas? (Nota: Yo no soy informático, así que te pido un poco de paciencia para un lego en la materia como yo).
A parte quisiera comentar que yo tengo mis discos duros con ext3 porque es el que venía con debian la primera vez que instalé una de esas. El externo también (hay drivers de windows para leer ext3). La pregunta es: ¿cuál recomiendas tú (leo entre líneas que ext3 te parece malo) y por qué razones es mejor? Lo digo para cambiarme, pero con conocimiento de causa.
Gracias.
Contestando a Barruelix y también a Topopardo. Respecto de las particiones, lo malo que traen es que una vez creadas, ya está. Quizás te quedes sin hueco en una partición y en otra te sobre, y la solución de redimensionar es un hack peligroso que puede hacerte perder datos. Otro problema es cuando tienes varios discos. Con particiones no hay una forma de tratar los dos discos como una misma unidad lógica. Está lvm, pero es una capa más aparte del sistema de ficheros.
Sobre la compatibilidad. Windows sólo implementará FAT, NTFS y quizá su super WinFS si les salen las cosas bien, que por seguro que a parte de ser malo, será muy cerrado y habrá que hacer ingeniería inversa. ¿Cuantos años se ha tardado en escribir NTFS de forma decente? En nuestro disco duro, a no ser que hagamos multiboot, podemos usar el sistema que nos de la gana. La pena son las memorias y discos externas. Me da pena formatearlas en FAT, que es una birria, pero es lo único portable. Siempre nos quedarán las utilidades para leer ext3 y demás en windows.
Quería comentar también las bondades de ZFS, del cual recientemente leí un poco a raíz del ZFSonFUSE. ZFS da una forma completamente moderna de manejar los datos, incorporando en el sistema de ficheros las funciones de lvm y raid. La cosa va así. Primero designas varios discos para que formen parte de un pool zfs. Entonces el sistema de archivos se distribuye por todos los discos y hace el trabajo de lvm. Después, creas particiones, que son simplemente divisiones lógicas del sistema de archivos. No tienes por qué especificar un tamaño, puedes especificar un tamaño reservado para esa partición, un tamaño máximo, etc. Pero las particiones sólo consumen lo que consumen los archivos y se pueden cambiar fácilmente, al igual que agregar discos al pool. Esas particiones son las que montas.
A parte de eso, ZFS implementa raid con chechsums en todo. Según la gente que lo ha hecho, el problema de raid mirrored es que si un disco tiene datos malos y el otro tiene datos válidos, si te toca leer del malo, tu aplicación recibe datos malos, porque raid sólo lee del otro disco si el que se está intentando leer no es capaz de obtener ningún dato. Con ZFS no pasa porque hay checksums de los datos. ZFS implementa los distintos tipos de raid de forma transparente. También utiliza copy on write, lo que quiere decir es que los datos no se sobreescriben. Primero se escriben en un lugar vacío y luego se cambia el árbol para apuntar a esos datos nuevos. Así te evitas los problemas de crash. Además, los datos viejos se pueden guardar y puedes tener un sistema versionado con copias baratas, como svn. Los datos que no han cambiado sólo están almacenados una vez. También puedes clonar particiones y en los clones puedes escribir, y los datos que son iguales sólo están en un sitio.
Había por ahí un pdf que explicaba todo esto muy bien, con gráficos y todo eso, pero desgraciadamente no lo encuentro.
Barruelix: A lo primero te ha contestado Daniel. Respecto a lo segundo, depende para qué lo quieras. Para mí, reiserfs es mejor y no te molesta al reiniciar (fsck), es más rápido y falla menos. Sin embargo, no hay drivers para Windows.
Si vas a usar únicamente linux, es mejor reiser. Si quieres compartir datos y no quieres usar una partición de intercambio, quizá sea mejor ext3. En todo caso, no hay una solución mágica
Lo peor de la unión discos duros USB FAT32 es que no puedes copiar una simple iso de un DVD (de más de 4 GiB, claro).
Para mi uno de los aspectos mas importantes de un SF es la interoperabilidad. Tal como comenta Javier, uno de los mayores problemas de FAT es que no puede almacenar ficheros de mas de 4Gb, y gracias al monopolio windosero, y un sistema tan obsoleto como es FAT aun se utiliza. Pero, claro, la otra opcion es usar NTFS, que si solo usas win pues es mejor opcion disponible (mucho mejor que FAT).
El handicap viene cuando necesitas compartir datos en sistemas multiplataforma. Por ejemplo, con discos externos USB. ¿Que opciones hay?:
FAT32: un sistema antiguo, con enormes problemas de fragmentacion, con limitaciones en el tamaño del fichero y de las particiones… pero el mas extendido y que en linux esta perfectamente soportado
o
NTFS: Sistema moderno, PROPIETARIO, que soluciona todos los problemas de FAT32, pero cuya compatibilidad aun no esta al 100%
En lo personal, los pendrives (menos de 8Gb) los fornateo con FAT32, por comodidad, y porque se que no voy a almacenar ficheros grandes. En los discos duros USB (tengo varios) mi estrategia es sencilla y bastante eficaz. Hago una particion con la mayoria del espacio del disco formateada con ext2 y otra pequeña particion (64Mb) al principio del disco que formateo con FAT32. Cuando uso windows, uso el driver IFS (Installable File System) de ext2 (http://www.fs-driver.org/), con lo que puedo usar cualquier particion ext2 de forma nativa en plataformas windows. El instalador del driver lo guardo en la particion FAT32 junto con alguna otra herramienta de gestion de ficheros y alguna cosilla mas.
Cuando enchufo mi disco en cualquier ordenador windows, automaticamente reconoce la particion FAT, instalo el driver, y sin necesidad de reiniciar, ya puedo leer y escribir en la particion ext2 sin problemas.
Llevo ya tiempo usando esta solucion y funciona bastante bien.
Un saludo
Yo creo que lo mejor es elegir el sistema de archivos en función de lo que vayas a meter en él (archivos grandes, pequeños, importantes y que necesites recuperar fácilmente en caso de petada, muchos subdirectorios, etc.).
Así, yo tengo Ext3 para /, Ext2 para /boot y RaiserFS para /home.
PD: En la Wikipedia hay mucha información sobre los distintos sistemas de ficheros.
Reflexiones sobre sistemas de ficheros…
Interesante reflexión podemos leer en Punto y Aparte sobre los sistemas de ficheros, saliéndose de las típicas comparativas de rendimientos o comportamientos que podemos leer en tantos y tantos sitios. El autor no se inclina por ningún sistema, y r…
¿Alguien dijo flame?
Lo que hay que hacer es deshacerse de los discos duros. Tener elementos con partes móviles es tan… siglo XX… xD
En serio, un ordenador sin motorcillos giratorios tendría bastantes ventajas respecto a los actuales. Por suerte parece que es cuestión de tiempo :)
Ey! gracias por toda la info, a todos.
Nunca te acostarás sin saber una cosa más, y hoy he aprendido algo nuevo. :)
Muchas gracias por toda la info. La verdad que me aclaró bastantes cosas.
Pero la verdad no dan ganas de hacerse tanto lio… yo la verdad prefiero lo fácil y la compatibilidad.
Ahora pregunto.
Yo tengo la partición principal de datos con todo en FAT32, me conviene pasarla a ext2 entera?
El rendimiento de ext2 en windows es el mismo que en linux?
El resto tengo NTFS para XP y una partición ext3 para Ubuntu.
Respondiendo a Miguel.
Al final lo que hace que uno se decante por uno u otro sistema de ficheros es la comodidad y la facilidad. En tu caso concreto, teniendo la particion de datos con FAT, depende de si necesitas alguna de esas caracteristicas que tiene Ext2 o NTFS, es decir, si vas a guardar frecuentemente archivos de mas de 4Gb, entonces cambia, si te resulta muy molesto tener que pasar el desfragmentador de disco periodicamente, entonces cambia… ahora bien, si estas contento con lo que tienes y no tienes alguna necesidad que requiera el cambio, no cambies, porque meterte en lios cuando lo que ya tienes te satisface no hace sino crear una sensacion de frustracion e inutilidad. Aplica el viejo dicho de “Si funciona no lo toques”.
Lo que si te recomendaria es que cuando vayas cambiar de ordenador o ampliar el disco duro o que se yo… cualquier cosa que te OBLIGUE a reparticionar/reformatear, entonces te plantees esos cambios.
Bien, en cuanto a tu siguiente pregunta, si, el rendimiento de ext2 bajo windows es practicamente identico al de linux.
Por ulitmo, la ultima respuesta, me parece lo mas adecuado dejar la particion de windows con NTFS, pq al fin y al cabo, no vas a necesitar escribir desde linux a esa particion casi nunca, dado que a priori, solo tendra los archivos de los programas instalados, los datos estaran en la particion de datos; y windows siempre funciona mejor con NTFS.
Un saludo
Es lo que tenía pensado, si el rendimiento es similar prefiero ext2, pq he tenido problemas con FAT32 ( nunca le pasé el defragmentador desde q existe hace más de un año!! ) y no podido bajar imágenes de DVD…
Asi que probablemente haga el cambio…
Muchas gracias Magus
¿Tan importante es el Sistema de Ficheros?…
Para los que estéis algo perdidos, tan sólo tenéis que saber que el “sistema de ficheros” es la forma en que se guardan los datos físicamente en el disco. Seguro que os suenan las palabras “FAT32″ o &…
ReiserFS tiene furturo? Pregunto porque lo ultimo que supe de Hans Reiser es que cayo en la carcel. ReiserFS4 parecia muy bueno.
Ahora creo que ZFS sera el SF, por suerte estara en la version 7 de FreeBSD.