GNU/Linux >> Znalost Linux >  >> Linux

Maximální počet souborů/adresářů na Linuxu?

60 000 je nic, 20 000 také. Ale měli byste seskupit těchto 20 000 jakýmkoli způsobem, abyste urychlili přístup k nim. Možná ve skupinách po 100 nebo 1000 tak, že vezmete číslo adresáře a vydělíte ho 100, 500, 1000, čímkoli.

Mám například projekt, kde soubory mají čísla. Seskupuji je do 1000, takže mám

id/1/1332
id/3/3256
id/12/12334
id/350/350934

Ve skutečnosti můžete mít pevný limit – některé systémy mají 32bitové inody, takže jste omezeni na počet 2^32 na souborový systém.


Pokud má souborový systém vašeho serveru dir_index funkce zapnuta (viz tune2fs(8) podrobnosti o kontrole a zapnutí funkce), pak můžete rozumně uložit až 100 000 souborů do adresáře, než dojde ke snížení výkonu. (dir_index je výchozí pro nové souborové systémy pro většinu distribucí již několik let, takže by byl pouze starý souborový systém, který tuto funkci ve výchozím nastavení nemá.)

To znamená, že přidání další úrovně adresáře ke snížení počtu souborů v adresáři faktorem 16 nebo 256 by výrazně zvýšilo šance na věci jako ls * funguje bez překročení maxima jádra argv velikost.

Typicky se to provádí něčím jako:

/a/a1111
/a/a1112
...
/b/b1111
...
/c/c6565
...

tj. přidáním písmene nebo číslice před cestu, na základě nějaké funkce, kterou můžete vypočítat z názvu. (První dva znaky z md5sum nebo sha1sum z názvu souboru je jeden běžný přístup, ale pokud máte jedinečné ID objektů, pak 'a'+ id % 16 je dostatečně snadný mechanismus pro určení, který adresář použít.)


souborové systémy ext[234] mají pevný maximální počet inodů; každý soubor nebo adresář vyžaduje jeden inode. Aktuální počet a limity můžete zobrazit pomocí df -i . Například na 15GB souborovém systému ext3, vytvořeném s výchozím nastavením:

Filesystem           Inodes  IUsed   IFree IUse% Mounted on
/dev/xvda           1933312 134815 1798497    7% /

Kromě toho neexistuje žádný limit na adresáře; mějte na paměti, že každý soubor nebo adresář vyžaduje alespoň jeden blok souborového systému (obvykle 4 kB), i když se jedná o adresář s pouze jednou položkou.

Jak však vidíte, 80 000 inodů pravděpodobně nebude problém. A s dir_index možnost (povolit pomocí tune2fs ), vyhledávání ve velkých adresářích není příliš velký problém. Mějte však na paměti, že mnoho nástrojů pro správu (například ls nebo rm ) může mít problém se vypořádat s adresáři, které obsahují příliš mnoho souborů. Proto se doporučuje rozdělit soubory tak, abyste v žádném adresáři neměli více než několik set až tisíc položek. Snadný způsob, jak toho dosáhnout, je hašovat jakékoli ID, které používáte, a použít prvních několik hexadecimálních číslic jako přechodné adresáře.

Řekněme například, že máte položku s ID 12345 a zahašuje se na 'DEADBEEF02842.......' . Soubory můžete ukládat pod /storage/root/d/e/12345 . Nyní jste snížili počet souborů v každém adresáři o 1/256.


Linux
  1. Kopírování souborů a adresářů v Linuxu

  2. Jak přejmenovat adresář v Linuxu

  3. Vytváření a odstraňování souborů a adresářů pod Linuxem

  1. Jak nahrávat nebo stahovat soubory/adresáře pomocí sFTP v Linuxu

  2. linux tree příkaz limit počtu souborů zobrazených v každém adresáři

  3. Největší povolený maximální počet otevřených souborů v Linuxu

  1. Jak najít soubor v Linuxu ve všech adresářích rekurzivně

  2. Linux Odstraňte soubory a adresáře

  3. Odstraňte pouze soubory v adresáři v adresářích linux NOT