martes, 18 de octubre de 2011

Radiografía de los sistemas de archivos NTFS y EXT4

El sistema de archivos muy posiblemente es uno de los aspectos al que más le restamos importancia a la hora de instalar un sistema operativo. Puede ser porque simplemente no podemos escoger otro diferente (En el caso de Windows) o porque simplemente asumimos que el "Default" es más que suficiente para nuestras necesidades.


El propósito de este post además de compartir un poco acerca de lo que es el sistema de archivos  es también comparar  las opciones disponibles por omisión en Windows y en Linux con el ánimo de rescatar sus fortalezas, debilidades y claro que el lector saque sus propias conclusiones.

Sin mucho preámbulo el sistema de archivos es la forma en que el sistema operativo guarda tus archivos… ¡Así es! Ese gran desconocido, no es nada menos que el responsable de mantener tu información a salvo y accesible todo el tiempo.

En Windows el sistema de archivos de disco es NTFS (New Technology FileSystem) cuyo debut se produjo por allá en Julio de 1993 con el lanzamiento de Windows NT 3.1. Por supuesto NTFS se ha venido actualizando de a poquitos sin romper la compatibilidad, siendo la versión más reciente la 3.1 que, a todas estas, no ha cambiado desde su introducción en Windows XP y es usado en  Windows Server 2003, Windows Server 2008, Windows Vista, and Windows 7.
 
En Linux el sistema de archivos por tradición ha sido EXT (Extended FileSystem) (En Linux a diferencia de Windows hay varios sistemas de archivos y pueden seleccionarse a la hora de la instalación) siendo el más reciente ext4 introducido el 10 de octubre de 2006 en el kernel Linux 2.6.19 y la opción por defecto para las distribuciones más populares como Ubuntu y Fedora.

Veamos en detalle lo que pueden hacer estos sistemas de archivos:

Limites

De entrada, diré que un usuario casero posiblemente nunca llegue a alcanzar estos límites, sin embargo, es bueno tenerlos en mente por propósitos científicos.
NTFS
Ext4
Tamaño máximo de volumen = 264TB
(262.144 GB)
Tamaño máximo de archivo = 16TiB
(16.384 GB)
Número máximo de archivos = 4.294.967.295
Tamaño máximo de volumen = 1024PiB
(1’073.741.824 GB)
Tamaño máximo de archivo = 16TiB
(16.384 GB)
Número máximo de archivos = 4.000.000.000


Confiabilidad
NTFS
Ext4
NTFS Log.
NTFS es un sistema basado en Journaling (Registro por diario) que usa el $LogFile para grabar todos cambios en el sistema de archivos. Básicamente mantiene coherente la estructura de archivos incluso si el sistema falla.

También NTFS utiliza el USN (Update Sequence Number Journal) que graba todos los cambios sobre los archivos. Sin embargo, el journal no preserva las versiones originales de los archivos modificados por lo que no es posible deshacer los cambios realizados.
Ext4 Journal
Ext4 también hace uso del registro por diario. Sin embargo también realiza comprobaciones sobre el diario (Checksums) para mejorar la fiabilidad ya que el archivo de log es uno de los más leidos del disco.

Este proceso hace que se evite la lectura/escritura del disco mientras se realiza el proceso de registro en el journal aumentando ligeramente el rendimiento.

Fragmentación

Con el uso, todos los sistemas de archivos son susceptibles a fragmentarse, lo cual, eventualmente disminuye el rendimiento y el tiempo de respuesta del disco.
NTFS
Ext4
Ordena y accede a los archivos secuencialmente. Esto lo hace particularmente susceptible a la fragmentación siendo recomendado ejecutar la utilidad de desfragmentación cuando el índice de archivos fragmentados supera el 10%.
Ordena y accede a los archivos desde la mitad de la unidad, reduciendo la fragmentación y el tiempo acceso a archivos en 1/2 de entrada.
Incorpora características para reducir la fragmentación siendo extraño en equipos caseros que supere el 10%.

Pensando en sistemas altamente transaccionales , existe una utilidad de desfragmentación en línea.

Rendimiento

Varios test sugieren que ext4 puede hacer ciertas operaciones de lectura/escritura mucho más rápido que NTFS[1]
NTFS
Ext4
Como ya lo habíamos mencionado anteriormente, NTFS es particularmente susceptible a la fragmentación por lo que su rendimiento disminuye con el paso del tiempo.


Si bien ext4 es de por sí rápido, pueden realizarse trucos (No siempre recomendados) como desactivar el journal para aumentar las velocidades de lectura/escritura en el disco.


La evolución de los sistema de archivos es particularmente lenta y debe ser especialmente cuidadosa. Quizás en este sentido los sistemas operativos abiertos han gozado de mayores libertades en implementación y adopción de éstos sistemas dando como resultado una pequeña ventaja sobre su homólogo de Windows.

¿Qué tal ha sido tu experiencia? ¿Es más rápido mover archivos en Windows o en Linux?

--
 [1] Real World Benchmarks Of The EXT4 File-System
 http://www.phoronix.com/scan.php?page=article&item=ext4_benchmarks&num=1

11 comentarios:

  1. Lastima que se dejo por fuera otros FS, como el FAT, ya descontinuado en PCs pero su uso continua en Xbox. y los menos conocidos de linux como el XFS o el Reise (que tiene una macabra historia su creador)

    En cuanto ala pregunta, trasnferir archivos desde Ext a NTFS siempre me ha resultado rapido, pero entre Ext, que ni sonic macho.

    ResponderEliminar
  2. Es una información que cualquier persona debería conocer, buen post, quizas alguna comparativa entre ext hubiera sido mas de mi gusto, bueno cosa de gustos simplemente.

    Aaaa y claro q ext4 me va mucho mas rápido q NTFS, en todo caso yo mantengo el boot con ext3 y una particion para mi Android con ext2

    ResponderEliminar
  3. Hola @Sanae Hanekoma:

    La idea es dedicar más adelante un buen post sobre esos sistemas de archivos. Por supuesto que vale la pena hablar de ellos.

    @Modem ¿Una comparativa entre ext? Es una buena idea sin duda aunque también por ser mejoras sucesivas podemos deducir fácilmente que ext4 es la mejor opción.

    Me suena la idea de contar un poco acerca de la evolución de ext.

    ¡Saludos!

    ResponderEliminar
  4. Hola PB que tal?

    Estuve haciendo pruebas de todo tipo y específicamente con el manejo de archivos, de GNU/Linux (Debian, Ubuntu, Fedora) comparándolas obviamente con Windows 7. Porque voy a comenzar un proyecto y pretendía realizarlo en GNU/Linux, (lamentablemente no paso la prueba) ahora te comento unas curiosidades a ver si sabes a que se deben...

    Copia de archivos (grandes cantidades) entre dos HD Sata 1.5Tb. Hay una diferencia descomunal de casi el doble en la velocidad al copiar archivos.

    Archivos pequeños
    Windows promedio 38MBps
    GNU/Linux 74MBps

    Archivos grandes
    Windows promedio 54MBps
    GNU/Linux 94MBps

    Otro dato curioso es que cualquier distro de las que probé tiene muchos problemas al leer directorios con gran cantidad de archivos. Por ejemplo tengo un directorio con 19.800 archivos, Linux tarda muchisimo tiempo en leerlos y en algunos casos ni los lee, en Windows es inmediato.

    ¿Sabes a que se deben estos fenomenos?

    ResponderEliminar
  5. Quizá tarde tanto en leer ese directorio porque tengas alguna opción habilitada para previsualizar los archivos. Prueba a ver cuanto tarda con la previsualización desabilitada.

    ResponderEliminar
  6. exacto es por eso de la previsualizacion de los archivos.

    ResponderEliminar
  7. Me podrías dar las diferencias entre ext3 y ext4 tengo instalado Feodra 17 pero la partición las hice con ext3, conversando con unos amigos me dijeron que hubiese elegido la ext4 pero no lo hice simplemente porque el ext3 me va bien, y no quería estar en apuros. :)
    Gracias
    :)

    Te recomiendo mi blog http://sirjuno.gioscix.com
    Hablo sobre temas de GNU/LINUX y algunos temas de programación
    Saludos

    ResponderEliminar
    Respuestas
    1. Claro, por definición ext4 es la evolución de ext3: Básicamente moviendo sus fronteras más allá, por ejemplo, permite tamaños de archivos mayores y rutas (Subdirectorios) mucho más grandes que ext3. También incluyó algunas mejoras en el rendimiento, por ejemplo, posibilitando la capacidad de "Desfragmentar" (Ese término es nuevo en Linux) el disco duro en caliente. Esto sucede porque en sistemas muy grandes con mucha información cualquier 4% de fragmentación (Que es despreciable en un PC) supone una pérdida de rendimiento.

      En conclusión, no dudes por ext4 para tu próxima instalación, ya lleva bastante tiempo estable en el kernel y no debería darte problemas.

      Eliminar
  8. Cada vez que copio un archivo en linux que en windows tardó 1 minuto me sorprendo (tengo ambos en la pc), porque lo hace instantáneamente y siempre me queda la duda de si lo copió o no jaja, uso ext3 en linux.

    ResponderEliminar
  9. Muy buen post, la verdad que cada vez estoy más convencido de usar Ubuntu SIEMPRE en mi equipo. Y aunque lo tengo instalado y lo uso esporádicamente (para programar en C) para todo lo demás utilizo Windows 7. Sabéis si se puede jugar a los ultimos video-juegos bajo Ubuntu? en plan windows 7, ya sabeis... :)

    ResponderEliminar
    Respuestas
    1. Muchas desarrolladoras de videojuegos todavía optan por desarrollar solo para Windows.

      No obstante la cantidad de videojuegos disponibles para Ubuntu ha aumentado un 900% en el último año, y todos los juegos que saquen para la videoconsola SteamBox serán binariamente compatibles también con el sistema operativo.

      Eliminar