¿Por qué Linux es 30 veces más rápido que Windows 10 en la copia de archivos?

20

Obtuve 20.3 Gig de archivos y carpetas con un total de más de 100k elementos. Dupliqué todos esos archivos en un directorio de Windows 10, y me tomó 3 horas de copia insoportable. Hecho.

El otro día, inicié en Linux Fedora 24, volví a copiar la misma carpeta y ¡bam! Me tomó solo 5 minutos duplicarlo en el mismo lugar pero en un directorio diferente.

¿Por qué Linux es tan rápido? ¿Y Windows es minuciosamente lento?

Hay una pregunta similar aquí

¿Es el algoritmo de copia de archivos (Ubuntu) Linux mejor que Windows 7?

Pero la respuesta aceptada es bastante deficiente.

Jones G
fuente
No utiliza "Windows" o "Linux" para copiar archivos, utiliza algún programa específico que se ejecuta en cada uno de esos sistemas operativos. Los programas varían ampliamente en los métodos que usan y las compensaciones que hacen. ¿Cuáles estabas usando? ¿Y cómo?
kreemoweet
55
@kreemoweet: También lo hacen los sistemas operativos: se sabe que NTFS de Windows maneja muy mal muchos archivos pequeños, en comparación con la mayoría de los otros sistemas de archivos.
user1686
2
Y un buen voto negativo de un fanático de Windows eh. Verá, copiar archivos, aunque simple, tiene muchas aplicaciones que van desde la copia de seguridad de datos en el negocio hasta los estudios científicos. Por ejemplo, en el CERN, hay Petabytes de datos con los que lidiar, la copia lenta sería inaceptable.
Jones G
Desde ese mismo enlace, marque la segunda respuesta desde abajo. Linux almacena en caché todos los archivos en la RAM disponible y escribe en el disco cuando puede, de ahí que se vea más rápido (ya que solo necesita leer por ahora y escribir cuando puede).
Darius
Los sistemas de archivos @DominicGuana hacen su parte (ext3 / ext4 pueden asignar trozos de 100Mb a la vez). ¿Consideró que el antivirus en Windows también puede desempeñar un papel (más lento)? Por cierto, para problemas similares con el flujo de adquisición de datos SLAC (después del disparador de primer nivel había demasiados datos), hemos aprendido a escribir en HDD en paralelo ...
Hastur

Respuestas:

25

Los conceptos básicos se desglosan en algunos componentes clave del sistema total: el elemento de la interfaz de usuario (la parte gráfica), el núcleo en sí (lo que habla con el hardware) y el formato en el que se almacenan los datos (es decir, el sistema de archivos )

Retroceder, NTFSha sido de facto para Windows durante algún tiempo, mientras que el de facto para las principales variantes de Linux es el extsistema de archivos. El sistema de archivos NTFS en sí mismo no ha cambiado desde Windows XP (2001), muchas características que existen (como la reducción / curación de particiones, NTFS transaccional, etc.) son características del sistema operativo (Windows Vista / 7/8/10) y no NTFS en sí. El extsistema de archivos tuvo su última versión estable importante ( ext4) en 2008. Dado que el sistema de archivos en sí mismo es lo que gobierna cómo y dónde se accede a los archivos, si está utilizandoext4 , es probable que note una mejora en la velocidad sobre NTFS; Sin embargo, tenga en cuenta que si lo usa ext2, puede notar que es comparable en velocidad.

También podría ser que una partición esté formateada en fragmentos más pequeños que la otra. El valor predeterminado para la mayoría de los sistemas es un tamaño de clúster 4096 byte 1 , 2 , pero si formateó su ext4partición en algo así como 16k 3 , cada lectura en el ext4sistema obtendría 4 veces más datos que el sistema NTFS (lo que podría significar 4 veces los archivos dependiendo de lo que esté almacenado dónde / cómo y qué tan grande, etc.). La fragmentación de los archivos también puede desempeñar un papel en las velocidades. NTFS maneja la fragmentación de archivos de manera muy diferente al extsistema de archivos, y con más de 100k archivos, hay una buena posibilidad de que haya algo de fragmentación.

El siguiente componente es el núcleo en sí (no la interfaz de usuario, sino el código que realmente habla con el hardware, el verdadero sistema operativo). Aquí, sinceramente, no hay mucha diferencia. Ambos núcleos se pueden configurar para hacer ciertas cosas, como el almacenamiento en caché / almacenamiento en disco, para acelerar las lecturas y las escrituras percibidas, pero estas configuraciones generalmente tienen las mismas compensaciones independientemente del sistema operativo; por ejemplo, el almacenamiento en caché puede parecer que aumenta enormemente la velocidad de copia / guardado, pero si pierde energía durante la escritura en caché (o extrae la unidad USB), perderá todos los datos que no se escriben realmente en el disco y posiblemente incluso corrompe los datos ya escritos al disco

Como ejemplo, copie muchos archivos en una unidad USB con formato FAT en Windows y Linux. En Windows puede tardar 10 minutos, mientras que en Linux tardará 10 segundos; Inmediatamente después de haber copiado los archivos, extraiga la unidad de manera segura expulsándola. En Windows, se expulsaría inmediatamente del sistema y, por lo tanto, podría quitar la unidad del puerto USB, mientras que en Linux podría tomar 10 minutos antes de que realmente pudiera quitar la unidad; Esto se debe al almacenamiento en caché (es decir, Linux escribió los archivos en la RAM y luego los escribió en el disco en segundo plano, mientras que Windows, sin caché, escribió los archivos inmediatamente en el disco).

La última es la interfaz de usuario (la parte gráfica con la que interactúa el usuario). La interfaz de usuario podría ser una ventana bonita con algunos gráficos geniales y barras agradables que me dan una idea general de cuántos archivos se están copiando y qué tan grande es todo y cuánto tiempo puede tomar; La interfaz de usuario también puede ser una consola que no imprime ninguna información, excepto cuando se hace. Si la interfaz de usuario tiene que pasar primero por cada carpeta y archivo para determinar cuántos archivos hay, más qué tan grandes son y dar una estimación aproximada antes de que realmente pueda comenzar a copiar, entonces el proceso de copia puede tomar más tiempo debido a que la interfaz de usuario necesita hacer esto. De nuevo, esto es cierto independientemente del sistema operativo.

Puede configurar algunas cosas para que sean iguales (como el almacenamiento en caché del disco o el tamaño del clúster), pero en términos realistas, todo se reduce a cómo todas las partes se unen para que el sistema funcione y, más específicamente, con qué frecuencia se actualizan esas piezas de código. El sistema operativo Windows ha recorrido un largo camino desde Windows XP, pero el subsistema de disco es un área que no ha visto mucho TLC en el sistema operativo en todas las versiones durante muchos años (en comparación con el ecosistema Linux que parece ver algunos nuevos FS o mejora con bastante frecuencia).

Espero que agregue algo de claridad.

txtechhelp
fuente
Respuesta horrible en mi opinión y rechazada votó. Estás introduciendo diferencias donde no las hay. Nadie preguntó qué tan diferente funcionan las unidades particionadas. Por supuesto, la pregunta se centra en el precepto de "todo lo demás es igual". Puedo elegir un fs para una incursión de 8 nvme de la forma que quiera con velocidades de lectura nativas de más de 16 gigabytes por segundo y, sin embargo, una copia de archivos de Windows alcanza un máximo de 1.4-1.5 gigabytes en cualquier momento, todo el tiempo. No tiene nada que ver con el almacenamiento en caché, fs, particiones, pero más con las limitaciones del sistema operativo Windows.
Matthias Wolf
@Matt ¿en qué sistema de archivos está formateando dicha matriz RAID? Si se trata de NTFS, eso podría explicar la desaceleración ... pero si tiene más información que proporcionar, puede agregar una respuesta relevante, especialmente si tiene algún código fuente (y no un volcado de ensamblado) al sistema operativo principal de Windows para explicar directamente por qué ocurre dicha desaceleración (¡por mi parte, me interesaría especialmente eso!).
txtechhelp
Uso ntfs, ¿qué mejor opción hay como fs en un servidor de Windows?
Matthias Wolf el
Me puse en contacto con MSFT y tuve muchas discusiones e intenté muchas cosas a lo largo de los años y nunca pude que superara los 1.5 GB / segundo, a pesar de tener 100 Gb nics en cada máquina y tener todo el resto del tráfico según las herramientas de perfiles Mellanox muestran que las conexiones funcionan perfectamente bien en Rendimiento de 94-95 Gb / seg. No hay ralentizaciones entre las máquinas Linux, pero tan pronto como una máquina con sistema operativo Windows está involucrada, veo esos cuellos de botella
Matthias Wolf,
Estoy hablando de transferencias de archivos individuales, todas de un solo subproceso. No hay ningún cuello de botella en el hardware, está basado únicamente en el sistema operativo.
Matthias Wolf el