GNU/Linux >> Tutoriales Linux >  >> Linux

¿Por qué se necesitaba la opción que no distingue entre mayúsculas y minúsculas en ext4?

El sistema de archivos que no distingue entre mayúsculas y minúsculas nos permite resolver cuellos de botella importantes para las aplicaciones que se transfieren desde otros sistemas operativos

no me llega al corazón y no puedo entender cómo el proceso de normalización y plegamiento nos permite optimizar nuestro almacenamiento en disco.

Wine, Samba y Android tienen para proporcionar una semántica del sistema de archivos que no distinga entre mayúsculas y minúsculas. Si el sistema de archivos subyacente distingue entre mayúsculas y minúsculas, cada vez que falla una búsqueda que distingue entre mayúsculas y minúsculas, Wine et al. tiene que escanear cada directorio para demostrar que no hay coincidencias que no distingan entre mayúsculas y minúsculas (por ejemplo, si busca /foo/bar/readme.txt falla, debe realizar una lista completa del directorio y una comparación de mayúsculas y minúsculas de todos los archivos en foo/bar/* y todos los directorios en foo/* y /* ).

Hay algunos problemas con esto:

  • Puede volverse muy lento con rutas profundamente anidadas (que pueden generar cientos de llamadas FS) o directorios con decenas de miles de archivos (es decir, almacenar copias de seguridad incrementales en SMB).
  • Estas comprobaciones introducen condiciones de carrera.
  • Es fundamentalmente incorrecto:si ambos readme.txt y README.txt existe pero una aplicación pide README.TXT , el archivo que se devuelve no está definido.

Android fue tan lejos como para emular la distinción entre mayúsculas y minúsculas usando FUSE/wrapfs y luego SDCardFS en el kernel. Sin embargo, SDCardFS simplemente hizo que todo fuera más rápido al mover el proceso al espacio de la perrera†. Todavía tenía que caminar por el sistema de archivos (y, por lo tanto, estaba vinculado a IO), introdujo condiciones de carrera y era fundamentalmente defectuoso. Por eso Google financió† el desarrollo de la insensibilidad a mayúsculas y minúsculas nativa por directorio en F2FS y desde entonces ha dejado de usar SDCardFS.

Ha habido múltiples intentos en el pasado para habilitar las búsquedas que no distinguen entre mayúsculas y minúsculas a través de VFS. El intento más reciente en 2018 permitió montar una vista del sistema de archivos que no distingue entre mayúsculas y minúsculas. Ted Tso mencionó específicamente los problemas con los wrapfs para agregar esta funcionalidad, ya que al menos sería más rápido y (creo) libre de condiciones de carrera. Sin embargo, todavía no estaba bien (solicitando README.TXT podría devolver readme.txt o README.txt ). Esto fue rechazado a favor de simplemente agregar soporte por directorio para la insensibilidad a mayúsculas y minúsculas y es poco probable que alguna vez llegue a VFS††.

Además, los usuarios esperan que no se distingan entre mayúsculas y minúsculas, por lo que cualquier sistema operativo orientado al consumidor tiene que proporcionarlo. Unix no podía admitirlo de forma nativa porque Unicode no existía y las cadenas eran solo bolsas de bytes. Hay muchas críticas válidas sobre cómo se manejaba el plegado de casos en el pasado, pero Unicode proporciona una función de plegado de casos inmutable que funciona para todos excepto para un solo lugar (Turkic, e incluso entonces son solo dos puntos de código). Y el árbol b del sistema de archivos es el único lugar razonable para implementar este comportamiento.

AFICTO
††Le envié un correo electrónico a Krisman, el autor de las búsquedas que no distinguen entre mayúsculas y minúsculas basadas en VFS y el soporte por directorio que no distingue entre mayúsculas y minúsculas en EXT4 y F2FS.


Otros sistemas operativos tienen un sistema de archivos que no distingue entre mayúsculas y minúsculas.

Como ejemplo:MacOS permite distinguir entre mayúsculas y minúsculas (por defecto) o distinguir entre mayúsculas y minúsculas. Adobe Photoshop y Adobe Lightroom no funcionan bien con el sistema de archivos que distingue entre mayúsculas y minúsculas. Esto significa que dentro de los programas de Adobe, probablemente haya rutas codificadas, escritas de diferentes maneras (tal vez "Documentos" y "documentos" en las diferentes bibliotecas, o simplemente en algún momento se aplican algunos filtros (por ejemplo, minúsculas y eliminación de espacios, que pueden diferir del ruta de los datos). A nadie le importó, porque simplemente funciona.

Por lo tanto, si ahora desea portar programas creados para algún sistema operativo propietario común de nuestra época, debe corregir todas las rutas, de modo que siempre tenga un uso consistente de los casos de nombre de archivo, o prefiere tener un sistema de archivos que maneje estos para ti.

Adobe no pudo hacerlo para MacOS, así que espere que las cosas sean mucho más difíciles (y costosas) para otros proveedores. Consulte https://helpx.adobe.com/creative-suite/kb/error-case-Sensible-drives-supported.html


Linux
  1. Por qué uso Linux para administrar mi estudio de yoga

  2. Por qué cambié de Mac a Linux

  3. Ejemplos de comandos mkfs.ext4 en Linux

  4. Ansible:¿es posible cambiar el tamaño del sistema de archivos ext4?

  5. Linux:sistema de archivos que no distingue entre mayúsculas y minúsculas

Comprender los sistemas de archivos de Linux:ext4 y más allá

Por qué me enamoré de Antergos Linux

¿Cómo aumentar el número de inodos en un sistema de archivos Ext4?

¿Por qué la opción Ssh -t agrega Cr y Lf en la salida redirigida?

¿Qué sistema de archivos para respaldar es el mejor?

¿Convertir el sistema de archivos de arranque de Xfs a Ext4?