¿Por qué una comprobación de disco Ext4 es mucho más rápida que NTFS?

12

Hoy tuve una situación en la que reinicié mi computadora y decía que necesitaba verificar la consistencia del disco. Aproximadamente 10 minutos después (al "1%" completado), me di por vencido y decidí dejarlo funcionar cuando me vaya a casa.

A modo de comparación, la computadora de mi casa usa Ext4 para todas las particiones, y las comprobaciones de disco (que se ejecutan una vez por semana) solo toman un par de segundos. Recuerdo haber leído que tener una verificación rápida del disco era una prioridad, pero no sé cómo podrían hacerlo.

Entonces, ¿cómo hace Ext4 las comprobaciones de disco tan rápido? ¿Hay algún gran avance en hacer esto después de que NTFS salió (hace ~ 10 años)?

Nota: El disco NTFS es ~ 300 GB y el disco Ext4 es ~ 500 GB. Ambos están medio llenos.

Brendan Long
fuente
No he tenido Windows chkdsk un volumen NTFS en el arranque desde que se lanzó 2008 R2. Incluso en un clúster CSV con múltiples nodos que acceden al mismo volumen NTFS bloqueando decenas de miles de archivos de índice Lucene. Es bastante impresionante
Brain2000

Respuestas:

11

Hay dos razones principales para la diferencia de rendimiento y dos posibles . Primero, las razones principales:


Mayor rendimiento de ext4 frente a NTFS

Varios puntos de referencia han concluido que el sistema de archivos ext4 real puede realizar una variedad de operaciones de lectura y escritura más rápido que una partición NTFS. Tenga en cuenta que si bien estas pruebas no son indicativas del rendimiento en el mundo real, podemos extrapolar estos resultados y usar esto como una razón.

En cuanto a por qué ext4 realmente funciona mejor, entonces NTFS puede atribuirse a una amplia variedad de razones. Por ejemplo, ext4 admite la asignación retrasada directamente. Sin embargo, una vez más, las ganancias de rendimiento dependen estrictamente del hardware que esté utilizando (y puede negarse totalmente en ciertos casos).

Requisitos de comprobación de sistema de archivos reducidos

El sistema de archivos ext4 también es capaz de realizar comprobaciones más rápidas del sistema de archivos que otros sistemas de archivos de registro en diario equivalentes (por ejemplo, NTFS). De acuerdo con la página de Wikipedia:

En ext4, los grupos de bloques no asignados y las secciones de la tabla de inodo se marcan como tales. Esto permite que e2fsck los omita por completo en una verificación y reduce en gran medida el tiempo que lleva verificar un sistema de archivos del tamaño que ext4 está diseñado para soportar. Esta característica se implementa en la versión 2.6.24 del kernel de Linux.


Y ahora, las dos posibles razones:


Sistema de archivos que verifican las utilidades mismas

Ciertas aplicaciones pueden ejecutar diferentes rutinas en los sistemas de archivos para realizar realmente la "verificación" de estado. Esto se puede ver fácilmente si usa la utilidad fsck establecida en Linux versus la utilidad chkdsk en Windows. Estas aplicaciones están escritas en diferentes sistemas operativos para diferentes sistemas de archivos. La razón por la que menciono esto como una posible razón es que las llamadas de sistema de bajo nivel en cada sistema operativo son diferentes, por lo que es posible que no pueda comparar directamente las utilidades utilizando dos sistemas operativos diferentes.

Fragmentación de disco

Este es fácil de entender y también nos ayuda a comprender las diferencias entre los sistemas de archivos. Si bien todos los datos digitales contenidos en un archivo son iguales, la forma en que se almacena en el disco duro es muy diferente de un sistema de archivos a otro. La fragmentación de archivos obviamente puede aumentar las velocidades de acceso, atribuyéndose a una mayor diferencia de velocidad.

Penetración
fuente
1
Lo que me confunde es que su segundo punto inicialmente parece que tendría el mayor efecto, pero mi partición Ext4 tiene casi tanto espacio usado como mi partición NTFS tiene total; en lugar de ser mucho más rápido, deberían tener la misma velocidad. Creo que es probable que las mejoras de rendimiento de Ext4 hacen que sea más rápido para comprobar también, pero Ext4 no es que mucho más rápido que NTFS (ciertamente no los varios órdenes de magnitud de diferencia que veo en los controles del sistema de archivos).
Brendan Long
No estoy seguro de lo que quiere decir ... En general, el contenido del archivo ocupa mucho más espacio que los índices en la mayoría de los sistemas de archivos modernos (ext4 y NTFS incluidos). Los sistemas de archivos simplemente almacenan el contenido de manera diferente, lo que (como mencioné, en algunos casos) permite un mayor rendimiento.
Avance
Lo que me confunde es que la parte realmente verificada debe tener aproximadamente el mismo tamaño en ambos (ya que mi partición Ext4 tiene casi tanto espacio usado como la partición NTFS tiene total), pero la partición Ext4 hace su verificación en segundos, mientras que la NTFS Uno lleva horas.
Brendan Long
1
@Brendan Long si miras el primer enlace en mi respuesta, algunas personas han encontrado que las lecturas de archivos son realmente más rápidas con una unidad que usa ext4 versus NTFS. Aunque los datos digitales contenidos en el archivo son los mismos , no se almacenan de la misma manera en el disco. Sin embargo, si dice que el NTFS lleva horas , posiblemente esté verificando cada sector en la unidad, por lo que podría estar omitiendo algunas verificaciones alternativas en la verificación del sistema de archivos ext4 (explicando la gran diferencia de velocidad). Es mucho más rápido verificar cada archivo en lugar de toda la superficie del disco.
Avance
Esta respuesta es solo una lista de puntos de discusión ext4 vs NTFS sin relevancia para la pregunta. Los sistemas de archivos registrados nunca necesitan ser verificados en la operación ordinaria. Una verificación automática significa que algo está muy mal. Sin saber lo que está mal, es imposible saber por qué la verificación es tan lenta. Compararlo con los controles semanales de ext4 es comparar manzanas y naranjas.
benrg
3

Según tengo entendido, ext4 intenta escribir datos en la mayor brecha continua de inodos abiertos donde actualmente no hay datos. Esto reduce severamente la latencia cuando esos archivos tienen que leerse, ya que, en su mayor parte, todo el contenido de un archivo individual se ubicaría principalmente en una sola pista continua, por lo que el cabezal de las unidades tendría menos búsqueda al encontrar cada bloque que contiene los datos eso constituye ese archivo.

(Ext4) todavía puede fragmentarse, pero mucho menos y no necesariamente de una manera que afecte gravemente el rendimiento de lectura / escritura como con NTFS. En NTFS, los datos se escriben en los primeros bloques abiertos en la ruta de la cabeza.

Entonces, donde sea que se encuentre la cabeza y haya bloques abiertos, escribe la mayor cantidad de datos que pueda caber y luego escribe donde sea que aterrice en otra parte del disco cuando la cabeza tiene que moverse, por ejemplo, a otra parte del disco para acceder a un archivo diferente que tiene que abrirse en un programa que acaba de cargar mientras ese otro archivo aún se estaba escribiendo.
Esto significa que si el archivo es grande, es probable que se extienda en bloques separados entre sí en pistas separadas y es por eso que a menudo se necesita desfragmentar para NTFS.

Además, por qué los servidores generalmente no lo usan, ya que hay una E / S más pesada con un servidor donde los datos se escriben y leen constantemente desde el disco 24/7.

Además, no estoy seguro, pero si chkdskverifica la integridad de cada archivo (lo cual creo tanto como lo fsckhago), entonces también sería más lento en comparación debido a lo que acabo de describir sobre la fragmentación en NTFS.

jesse james
fuente
Ni NTFS chkdsk ni ext4 fsck leen los datos del archivo. No tendría sentido, porque no hay suma de verificación ni ninguna otra forma de verificar su integridad.
benrg
0

Windows nunca debería necesitar verificar un volumen NTFS al inicio. Si es así, algo ha salido muy mal, algo mucho peor que un simple BSOD o un corte de energía. Existe una gran posibilidad de que algunos de sus datos también hayan sido dañados por lo que haya dañado los metadatos del sistema de archivos. La comprobación del disco no puede detectar eso; Su único propósito es evitar una mayor corrupción.

KB2854570 enumera algunas razones por las que esto puede suceder. Uno está hibernando un sistema operativo con un volumen montado, modificando el contenido del volumen y luego reanudando la hibernación con el volumen (re) adjunto. Si hace eso, hay una alta probabilidad de corrupción de datos silenciosa.

No sé por qué su sistema de archivos ext4 se estaba revisando una vez por semana, pero probablemente (con suerte) no se debió a una crisis comparable que se repitió semanalmente. Probablemente solo estaba haciendo una verificación de cordura de rutina, y no una verificación de consistencia completa.

benrg
fuente