GNU/Linux >> Linux Esercitazione >  >> Linux

Perché era necessaria l'opzione senza distinzione tra maiuscole e minuscole in ext4?

il file system senza distinzione tra maiuscole e minuscole ci consente di risolvere importanti colli di bottiglia per le applicazioni trasferite da altri sistemi operativi

non mi raggiunge il cuore e non riesco a capire come il processo di normalizzazione e casefolding ci permetta di ottimizzare la nostra memoria su disco.

Wine, Samba e Android ce l'hanno per fornire una semantica del file system senza distinzione tra maiuscole e minuscole. Se il filesystem sottostante fa distinzione tra maiuscole e minuscole, ogni volta che una ricerca con distinzione tra maiuscole e minuscole fallisce, Wine et al. deve eseguire la scansione di ogni directory per dimostrare che non ci sono corrispondenze senza distinzione tra maiuscole e minuscole (ad es. se si cerca /foo/bar/readme.txt fallisce, devi eseguire un elenco completo delle directory e un confronto con maiuscole e minuscole di tutti i file in foo/bar/* e tutte le directory in foo/* e /* ).

Ci sono alcuni problemi con questo:

  • Può diventare molto lento con percorsi profondamente nidificati (che possono generare centinaia di chiamate FS) o directory con decine di migliaia di file (ad es. memorizzazione di backup incrementali su SMB).
  • Questi controlli introducono race condition.
  • È fondamentalmente scorretto:se entrambi readme.txt e README.txt esistono ma un'applicazione richiede README.TXT , quale file viene restituito non è definito.

Android è arrivato al punto di emulare la distinzione tra maiuscole e minuscole utilizzando FUSE/wrapfs e quindi SDCardFS nel kernel. Tuttavia, SDCardFS ha appena reso tutto più veloce spostando il processo nello spazio kenel†. Doveva ancora percorrere il filesystem (ed era quindi vincolato all'IO), introdurre condizioni di competizione ed era fondamentalmente malsano. Ecco perché Google ha finanziato† lo sviluppo della distinzione tra maiuscole e minuscole nativa per directory in F2FS e da allora ha deprecato SDCardFS.

Ci sono stati diversi tentativi in ​​passato per abilitare le ricerche senza distinzione tra maiuscole e minuscole tramite VFS. Il tentativo più recente nel 2018 ha consentito di montare una vista senza distinzione tra maiuscole e minuscole del filesystem. Ted Tso ha specificamente citato i problemi con wrapfs per l'aggiunta di questa funzionalità, poiché sarebbe almeno più veloce e (credo) priva di race condition. Tuttavia, non era ancora valido (richiesta README.TXT potrebbe restituire readme.txt o README.txt ). Questo è stato respinto in favore dell'aggiunta del supporto per directory per l'insensibilità alle maiuscole e minuscole ed è improbabile che venga mai inserito in VFS††.

Inoltre, gli utenti si aspettano la distinzione tra maiuscole e minuscole, quindi qualsiasi sistema operativo orientato al consumatore deve fornirla. Unix non poteva supportarlo in modo nativo perché Unicode non esisteva e le stringhe erano solo sacchi di byte. Ci sono molte critiche valide su come è stata gestita la piegatura delle maiuscole in passato, ma Unicode fornisce una funzione di piegatura delle maiuscole immutabile che funziona per tutte le impostazioni locali tranne una singola (turco, e anche in questo caso sono solo due punti di codice). E il filesystem b-tree è l'unico posto ragionevole per implementare questo comportamento.

AFAICT
††Ho inviato un'e-mail a Krisman, l'autore sia delle ricerche senza distinzione tra maiuscole e minuscole basate su VFS sia del supporto senza distinzione tra maiuscole e minuscole per directory su EXT4 e F2FS.


Altri sistemi operativi hanno un filesystem senza distinzione tra maiuscole e minuscole.

Ad esempio:MacOS consente la distinzione tra maiuscole e minuscole (come impostazione predefinita) o la distinzione tra maiuscole e minuscole. Adobe Photoshop e Adobe Lightroom non funzionano bene con il file system con distinzione tra maiuscole e minuscole. Ciò significa che all'interno dei programmi Adobe ci sono probabilmente percorsi codificati, scritti in modi diversi (magari "Documents" e "documents" nelle diverse librerie, o solo qualche volta vengono applicati dei filtri (es. percorso dei dati). A nessuno importava, perché funzionava e basta.

Quindi, se adesso vuoi portare un programma realizzato per qualche comune sistema operativo proprietario della nostra epoca, o dovresti sistemare tutti i percorsi, in modo da avere sempre un uso consistente dei casi di nome file, oppure preferisci avere un filesystem che gestisca questi per te.

Adobe non potrebbe farlo per MacOS, quindi aspettati che le cose siano molto più difficili (e costose) per altri fornitori. Consulta https://helpx.adobe.com/creative-suite/kb/error-case-sensitive-drives-supported.html


Linux
  1. Perché mi sono innamorato di Antergos Linux

  2. Spazio riservato per il root su un filesystem:perché?

  3. Come aumentare il numero di inode in un filesystem Ext4?

  4. Perché è stato scelto "~" per rappresentare la home directory?

  5. Perché l'opzione Ssh -t aggiunge Cr e Lf nell'output reindirizzato?

Perché sono passato da Mac a Linux

Comprensione dei filesystem Linux:ext4 e oltre

Convertire il filesystem di avvio da Xfs a Ext4?

Perché il mio rsync è così lento?

Impossibile montare il disco (VFS:impossibile trovare il filesystem ext4)

Filesystem di compressione trasparente in combinazione con ext4