GNU/Linux >> Znalost Linux >  >> Linux

Proč byla v ext4 potřeba volba nerozlišující malá a velká písmena?

souborový systém nerozlišující malá a velká písmena nám umožňuje vyřešit důležitá úzká hrdla pro aplikace přenášené z jiných operačních systémů

nezasahuje do mého srdce a nechápu, jak nám proces normalizace a skládání případů umožňuje optimalizovat naše diskové úložiště.

Wine, Samba a Android mají poskytovat sémantiku souborového systému bez ohledu na velikost písmen. Pokud základní souborový systém rozlišuje malá a velká písmena, pokaždé, když vyhledávání s rozlišením velkých a malých písmen selže, Wine a spol. musí prohledat každý adresář, aby se prokázalo, že neexistují žádné shody bez rozlišení velkých a malých písmen (např. při hledání /foo/bar/readme.txt selže, musíte provést úplný výpis adresáře a srovnání všech souborů v foo/bar/* a všechny adresáře v foo/* a /* ).

S tím je několik problémů:

  • Může být velmi pomalé s hluboce vnořenými cestami (které mohou generovat stovky volání FS) nebo adresáři s desítkami tisíc souborů (tj. ukládání přírůstkových záloh přes SMB).
  • Tyto kontroly zavádějí podmínky závodu.
  • Je to v zásadě špatné:pokud obě readme.txt a README.txt existují, ale aplikace požaduje README.TXT , který soubor je vrácen, není definován.

Android šel tak daleko, že emuloval nerozlišování velkých a malých písmen pomocí FUSE/wrapfs a poté SDCardFS v jádře. SDCardFS však vše urychlil přesunem procesu do prostoru kennel†. Stále musel chodit se souborovým systémem (a byl tedy IO vázán), zaváděl závodní podmínky a byl zásadně nezdravý. Proto Google financoval† vývoj nativního rozlišení velkých a malých písmen v jednotlivých adresářích ve F2FS a od té doby SDCardFS přestal podporovat.

V minulosti bylo několik pokusů povolit vyhledávání bez rozlišení velkých a malých písmen prostřednictvím VFS. Nejnovější pokus v roce 2018 umožnil připojení pohledu na souborový systém bez ohledu na velikost písmen. Ted Tso konkrétně uvedl problémy s wrapf pro přidání této funkce, protože by to bylo přinejmenším rychlejší a (věřím) bez závodních podmínek. Stále to však nebylo v pořádku (požadavek README.TXT mohl vrátit readme.txt nebo README.txt ). Toto bylo odmítnuto ve prospěch pouhého přidání podpory pro jednotlivé adresáře pro rozlišení malých a velkých písmen a je nepravděpodobné, že by se to někdy dostalo do VFS††.

Uživatelé navíc očekávají, že nebudou rozlišovat malá a velká písmena, takže ji musí poskytnout jakýkoli operační systém orientovaný na uživatele. Unix to nemohl nativně podporovat, protože Unicode neexistoval a řetězce byly jen pytle bajtů. Existuje spousta oprávněných kritik, jak se v minulosti zacházelo se skládáním velkých písmen, ale Unicode poskytuje neměnnou funkci skládání velkých písmen, která funguje pro všechny kromě jediného národního prostředí (Turkic, a i když jsou to jen dva kódové body). A B-strom souborového systému je jediným rozumným místem pro implementaci tohoto chování.

AFAICT
††Poslal jsem e-mail Krismanovi, autorovi vyhledávání bez rozlišení velkých a malých písmen na základě VFS a podpory bez ohledu na velikost písmen v adresáři na EXT4 a F2FS.


Jiné operační systémy mají souborový systém nerozlišující malá a velká písmena.

Například:MacOS povoluje nerozlišovat malá a velká písmena (jako výchozí) nebo rozlišovat malá a velká písmena. Adobe Photoshop a Adobe Lightroom nefungují dobře se systémem souborů rozlišujícím velká a malá písmena. To znamená, že v programech Adobe pravděpodobně existují pevně zakódované cesty, zapsané různými způsoby (možná „Dokumenty“ a „dokumenty“ v různých knihovnách, nebo se jen někdy použijí nějaké filtry (např. malá písmena a odstranění mezer, které se mohou lišit od cesta dat). Nikoho to nezajímalo, protože to prostě funguje.

Pokud tedy nyní chcete portovat programy vytvořené pro nějaký běžný proprietární operační systém naší epochy, měli byste buď opravit všechny cesty, abyste měli vždy konzistentní použití případů názvů souborů, nebo raději mít souborový systém, který to zvládne. pro vás.

Adobe to nemohlo udělat pro MacOS, takže počítejte s tím, že pro jiné dodavatele je to mnohem obtížnější (a nákladnější). Viz https://helpx.adobe.com/creative-suite/kb/error-case-sensitive-drives-supported.html


Linux
  1. Proč jsem si zamiloval Antergos Linux

  2. Vyhrazený prostor pro root na souborovém systému – proč?

  3. Jak zvýšit počet inodů v souborovém systému Ext4?

  1. Proč bylo „~“ vybráno k reprezentaci domovského adresáře?

  2. Proč bylo -f odstraněno z /sbin/shutdown?

  3. mkfs.ext4 Příklady příkazů v Linuxu

  1. Proč je při bootování potřeba MLO?

  2. Proč je můj rsync tak pomalý?

  3. Nelze připojit disk (VFS:Nelze najít souborový systém ext4)