¿Por qué hay tantos diseños de sistemas de archivos en competencia? [cerrado]

27

Solo una pregunta rápida, pero ¿por qué hay tantos sistemas de archivos que todavía compiten y están en uso hoy? (ntfs, fat32, ext3 (ffs), etc.)

Parece que los diseñadores de sistemas de archivos podrían ponerse de acuerdo sobre los mejores aspectos de cada tipo de sistema e implementar un "mejor" sistema de archivos, ¿no? Solo una idea, ya que estos sistemas de archivos han existido por un tiempo, y debería ser al menos algo evidente cuáles tienen buenas cualidades sobre los demás, y podríamos combinar lo bueno en cada uno y crear un sistema definitivo que sea mucho mejor

Templario oscuro
fuente
39
¿Deberíamos intentar combinar un Ferrari con una retroexcavadora también? El diseño se basa en una serie de compensaciones; Lo perfecto no existe.
Pubby
77
@ Pubby8 Yo conduciré uno.
The Muffin Man
8
La verdadera respuesta a esto no es solo una discusión técnica, sino también legal.
detly
38
Esta pregunta me recuerda a xkcd.com/927
dan04
77
Haremos eso casi al mismo tiempo que hacemos una cámara que tiene una lente grande, larga y de alta calidad, y es realmente liviana, cabe en un bolsillo o cartera, y es muy económica. La idea de que puedes tomar todas las partes buenas y combinarlas en una de las mejores no funciona en la práctica. Una lista de cosas buenas está incompleta o llena de elementos que se contradicen entre sí .
Eric Lippert

Respuestas:

32

Pensemos en los detalles aquí por un momento, usando ejemplos que ha citado:

  • ntfs: propiedad de Microsoft. Cualquiera que no sea Microsoft no puede usar esto, por lo tanto, tendría que usar / crear algo diferente. Ahora, si usted es Microsoft, desea usar esto sobre FAT debido a los problemas del próximo punto.

  • fat32 - No es lo suficientemente moderno. El tamaño máximo del archivo es de 4 GB. La búsqueda de entrada de directorio es O (n). La tabla de asignación es una lista vinculada, en lugar de algo más eficiente como un mapa de bits de asignación (donde es muy rápido encontrar espacio libre contiguo). No admite permisos. No admite enlaces duros o enlaces simbólicos. No es compatible con el diario.

  • ext3: esta fue una extensión de ext2 principalmente para soportar el registro en diario.

Entonces, parece que hay algunas razones:

  1. Un sistema de archivos anterior carece de algo. En el caso de FAT, le falta mucho: tanto en términos de (1) características como (2) rendimiento. En el caso de ext2, no tenía actualizaciones por diario, por lo que la recuperación de un bloqueo tomó más tiempo.

  2. Un sistema de archivos existente probablemente funcionaría, pero no es suyo. (por ejemplo, NTFS si no eres Microsoft). En este caso, realmente no tienes más remedio que inventar el tuyo.

asveikau
fuente
2
Nitpick: en realidad, el tamaño máximo de archivo (de acuerdo a las especificaciones oficiales publicadas por la propia Microsoft) para FAT32 es 2 GiByte, pero nadie, ni siquiera los implementos de Microsoft IT que estúpidamente :-)
Jörg W Mittag
16
Nitpick 2: el formato de archivo NTFS fue inventado por Microsoft, pero es un formato publicado y no hay gravámenes de patente conocidos. Varios sistemas operativos que no son de Microsoft implementan NTFS, incluido Linux.
Stephen C
66
Xfs: diseñado para permitir la recuperación rápida de archivos masivos (diseñado para estaciones de trabajo de video). ZFS: un sistema de archivos para el siglo XXI. ReiserFS: un intento de crear un sistema de archivos "asesino". Cada sistema de archivos tiene sus fortalezas y debilidades, cada uno fue creado para satisfacer una determinada necesidad.
Timothy Baldridge
3
@Stephen C: NTFS no fue exactamente "inventado" por Microsoft. en.wikipedia.org/wiki/NTFS#History
Seguro
1
@StephenC ¿Estás seguro de eso? Que yo sepa, NTFS no está documentado. La mayoría de las implementaciones de código abierto le advierten que habrá daños graves si intenta escribirles usando ese controlador cuando Windows ha dejado el disco en ciertos estados.
asveikau
24

Respuesta corta: una talla no sirve para todos.

Hay compensaciones. Por ejemplo, si desea un FS registrado, paga (eficiencia, complejidad, etc.), pero obtiene algo de él. Algunos no sienten la necesidad de un FS registrado y no quieren pagarlo, otros sí. Lo mismo con otras "características" de la FS.

Cazador de la selva
fuente
¿Cuándo fue la última vez que decidió qué FS se adapta a sus necesidades específicas? Estoy más en el lado de la codificación que en las operaciones, pero nunca vi tal decisión. Especialmente, ya que a menudo no hay una opción real: MS-> Ntfs. Linux: Ext (más reciente), tal vez Reiser.
keppla
@keppla: los diseñadores del sistema operativo suelen tomar decisiones. Los sistemas de archivos no son balcanizados por los usuarios finales.
Zano
2
@keppla: cada vez que decido formatear una unidad flash, apago el diario y decido si es solo para mi propio uso (luego ext2, porque tiene permisos de archivo POSIX) o para compartir con otros (luego fat32). Sin embargo, para los discos duros, tiendo a usar NTFS (cuando estoy en Windows) o ext4 (cuando
estoy
1
@keppla Casi todos los sistemas Linux vienen con la capacidad de usar varios sistemas de archivos diferentes, no solo ext [2..4]. Cuando configuro una caja de Linux, miro el propósito de la caja. Por ejemplo: mi máquina DVR de Linux ejecuta JFS en la unidad de almacenamiento de video porque maneja archivos grandes con mucha más gracia que ext3 y usa menos sobrecarga de CPU que XFS. Pero para las cuentas de usuario y los archivos del sistema en la misma máquina ejecuto EXT3 porque estoy tratando con archivos de menor tamaño.
jwernerny
@keppla: Además, en Mac OS X también puede elegir entre varias combinaciones de capacidades de su FS. Además, originalmente pretendía que el tono fuera el de alguien que diseña el FS. Porque, el OP preguntó por qué un diseñador no diseña un FS que tenga lo mejor de todo. Y lo que trato de señalar es que lo mejor es en relación con el lugar donde se va a utilizar. En algunos lugares, una característica es útil, en otros lugares, la misma característica es una sobrecarga innecesaria.
Jungle Hunter
14

Nunca puede haber un "mejor" de nada porque hay muchas opiniones sobre lo que es "mejor". La decisión es específica para las necesidades y limitaciones del usuario. Los diseños siempre se basan en su capacidad para ajustarse a las restricciones.

Un teléfono móvil básico necesita almacenar unos cientos de contactos, historial de mensajes de texto y algunas aplicaciones pequeñas. ¿Su sistema de archivos debe admitir una estructura de directorio jerárquico en unidades de varios terabytes en una configuración RAID? ¿Hay suficiente RAM en el dispositivo para ejecutar dicho sistema de archivos? ¿El sistema de archivos necesita ACL complejas? Probablemente no, para todas estas preguntas, por lo que bastaría con un sistema de archivos simple que consuma recursos.

Las empresas también desarrollarán diferentes productos para mantener una ventaja competitiva. Por ejemplo, Apple promociona la capacidad de su sistema de archivos HFS + para rastrear qué archivos han cambiado recientemente para que las copias de seguridad sean rápidas. Por otro lado, los controladores para un sistema de archivos de disquete (FAT) pueden caber en unos pocos KB de memoria.

Barry Brown
fuente
1
El problema NO es que nadie pueda ponerse de acuerdo sobre lo que significa "mejor". El problema es que no puede haber un "mejor" ...
Stephen C
1
@Stephen: Por supuesto, puede haber un "mejor". Solo necesitamos decidir la medida de la medición primero.
Donal Fellows
Solo si puedes lograr que todos estén de acuerdo .
Stephen C
11

Demasiado depende de lo que quieras optimizar.

Considere FAT por un momento: su soporte para nombres largos de archivo es muy complejo (por decirlo bien), y la búsqueda a través de archivos en un directorio es lineal, por lo que se ralentiza muy rápidamente si un directorio contiene muchos archivos. Al mismo tiempo, tiene un mínimo de metadatos para que la velocidad de escritura sin procesar sea muy buena, y dado que es tan simple sobre todo, el código para implementarlo puede ser bastante pequeño.

Algo como ext2 o ext3 agrega muchas características y capacidades que simplemente faltan en FAT. La búsqueda de archivos también es bastante más rápida. Al mismo tiempo, la velocidad de escritura sin procesar es probablemente un poco más lenta, y el código para implementar el sistema de archivos es, sin duda, mucho más grande.

Jerry Coffin
fuente
9

Solo una pregunta rápida, pero ¿por qué hay tantos sistemas de archivos que todavía compiten y están en uso hoy? (ntfs, fat32, ext3 (ffs), etc.)

Parece que los diseñadores de sistemas de archivos podrían ponerse de acuerdo sobre los mejores aspectos de cada tipo de sistema e implementar un "mejor" sistema de archivos, ¿no?

Supongamos que no hubo compensaciones, y los diseñadores de sistemas de archivos implementaron un "mejor" sistema de archivos, libre de preocupaciones de patentes, y lanzado como BSD / GPL de doble licencia para que MS y Debian lo aceptaran por igual. ¿Qué te hace pensar que los otros sistemas de archivos desaparecerían de la noche a la mañana?

No creo que nadie haya usado FAT32 en un nuevo disco duro durante 10 años, pero aún persiste como el estándar de facto para formatear unidades USB, tarjetas SD, etc. Los fabricantes de cámaras y teléfonos móviles han probado y probado el firmware para usarlo. Los aficionados a Arduino tienen bibliotecas estables para usarlo. Todos van a necesitar grandes incentivos para cambiar.

Y luego tiene los problemas de compatibilidad con sistemas operativos más antiguos (especialmente Windows, cuyos usuarios no querrán instalar nuevos controladores de sistema de archivos).

Peter Taylor
fuente
55
Es bueno tener algún tipo de dispositivo externo formateado en FAT32 para la capacidad multiplataforma. Es por eso que verá muchos dispositivos externos formateados en FAT32.
Matt
@ Matt, ¿no es un subconjunto de lo que dije?
Peter Taylor
3
Y para micros pequeños, el código para implementar el soporte básico de FAT se ajusta a solo unos pocos kbytes. Esto es importante cuando tiene sólo unos pocos Kbytes suman a jugar.
quickly_now
2
@Peter, lo afirmaba más por el hecho de que puedes usarlo en diferentes sistemas operativos sin ningún problema.
Matt
4

Como suele suceder en la informática, la respuesta es (a) debido a circunstancias históricas y la necesidad de mantener la compatibilidad con versiones anteriores y (b) porque algunos métodos son más adecuados para algunas tareas que otras.

En (a) debe recordar que la "unidad de Winchester" - tengo la edad suficiente para recordar que se llama así - (lo que el resto del mundo llama un "disco duro") solo ha existido durante aproximadamente la mitad del tiempo de la computación electrónica e incluso entonces no ha sido accesible para la mayoría de los usuarios ni siquiera por ese tiempo por razones de costo. El sistema de archivos FAT funcionó bien en disquetes y también en los discos duros pequeños originales, ya que era razonablemente eficiente y requería una baja sobrecarga. Una vez que comenzó a usarse, y su uso se extendió ampliamente porque es fácil de implementar, los fabricantes no pudieron decirles a sus usuarios que sus datos anteriores eran repentinamente inválidos.

Del mismo modo, para los usuarios de Linux, digamos, un controlador NTFS estable tardó mucho en llegar, por lo que mantener los dispositivos formateados como FAT significaba que podían leerse y escribirse en múltiples sistemas.

En (b): piense en las diferencias entre un sistema que, por ejemplo, almacena miles de millones de registros de bases de datos basados ​​en texto y uno que almacena archivos multimedia de DVD. Para la base de datos, cada registro podría ser muy pequeño, tal vez solo 30 o 40 bytes y, ciertamente, un sistema de archivos que asignó un 'segmento' completo (sin embargo, desea definir eso) del disco es probable que sea un desperdicio de espacio en disco. No es así con los DVD: es probable que los 'segmentos' más grandes (dentro de lo razonable, obviamente) sean altamente eficientes en términos de espacio.

Entonces, diferentes sistemas de archivos están diseñados para diferentes propósitos.

adrianmcmenamin
fuente
3

Otro ejemplo más de por qué nunca puede haber un sistema de archivos perfecto para todos: los HDD y SSD tienen características de acceso de lectura / escritura muy diferentes. Un sistema de archivos optimizado para SSD probablemente funcionaría mejor fragmentando archivos como locos pero con cada fragmento del tamaño de página del SSD en sí; esto funcionaría terriblemente en un disco duro. Un sistema de archivos optimizado para HDD intenta mantener los archivos lo más fragmentados posible e incluso coloca los archivos de uso frecuente en el área "activa" en la parte externa de la bandeja que gira más rápido; estas características no ayudarían en absoluto a las velocidades de lectura de SSD, y ponen una gran carga en cómo se escriben.

mullido
fuente
2

Creo que falta un hecho muy importante. La mayoría de las veces los programadores tienden a pensar que su forma de hacer algo es superior a todas las otras formas y, por lo tanto, miran un diseño de Sistema de archivos y presentan problemas y soluciones que parecen ser más generales, elegantes, rápidos, correctos ... Y si este sentimiento es lo suficientemente fuerte, son libres de construir su propio sistema de archivos.

Esto lleva a la competencia, la fragmentación, la confusión y espero que al final mejores soluciones y más opciones para elegir una solución adecuada para usted.

Janusz
fuente
1

Aquí hay otro ejemplo concreto de por qué necesitaría un sistema de archivos separado o ampliar la funcionalidad de un FS existente.

  1. Supongamos que usted es un proveedor de bases de datos y desea reducir la complejidad de administrar la creación de bandas / duplicación de datos para mejorar la E / S. Sentirá la necesidad de ampliar la funcionalidad de los sistemas de archivos básicos como lo hizo Oracle con ASM (Automated Storage Manager), que es como un Logical Volume Manager.
RHT
fuente
1

En su lista, menciona un antiguo sistema de archivos utilizado porque no hay uno mejor disponible, sin embargo, es rápido.

Hay otros sistemas de archivos. Escuché que el sistema de archivos de Google es principalmente para duplicación / redundancia rápida si un disco duro o servidor se cae. Recuerdo haber oído hablar de otro sistema de archivos hecho para muchos archivos pequeños y para ser utilizado en un sistema para muchas solicitudes de archivos pequeños (miniaturas).

Esencialmente tienen objetivos diferentes y pueden ser de propiedad frente al código abierto.


fuente
0

Creo que ZFS (uso de Solaris en el sistema Sun [ahora Oracle]) es LA solución para el sistema de archivos.

Desafortunadamente, Oracle cierra OpenSolaris para el descubridor y lo prueba.

ZFS es de código abierto, algunos Linux están tratando de integrarlo, busque en Wikipedia más información.

cl-r
fuente