Vysvětlení velikostí adresářů ve službě Azure NetApp Files
Když se soubor vytvoří v adresáři, přidá se položka do skrytého indexového souboru ve svazku Azure NetApp Files. Tento indexový soubor pomáhá sledovat stávající inodes v adresáři a pomáhá urychlit vyhledávání požadavků na adresáře s velkým počtem souborů. Při přidání položek do tohoto souboru se velikost souboru zvýší (ale nikdy nezmenší) rychlostí přibližně 512 bajtů na položku v závislosti na délce názvu souboru. Delší názvy souborů přidávají do souboru větší velikost. Symbolické odkazy také přidávají položky do tohoto souboru. Tento koncept se označuje jako velikost adresáře, což je společný prvek ve všech systémech souborů založených na Linuxu. Velikost adresáře není maximálním celkovým počtem souborů na jednom svazku Azure NetApp Files. To je určeno maxfiles
hodnotou.
Ve výchozím nastavení při vytvoření nového adresáře spotřebuje 4 KiB (4 096 bajtů) nebo osm 512bajtových bloků. Velikost nově vytvořeného adresáře z linuxového klienta můžete zobrazit pomocí příkazu statistiky.
# mkdir dirsize
# stat dirsize
File: ‘dirsize’
Size: 4096 Blocks: 8 IO Block: 32768 directory
Velikosti adresářů jsou specifické pro jeden adresář a nekombinují se ve velikostech. Pokud má svazek například 10 adresářů, může každý přistupovat k limitu velikosti adresáře 320 MiB v jednom svazku.
Určení, jestli se adresář blíží velikosti limitu
Pro adresář 320-MiB je počet bloků 655360, přičemž každá velikost bloku je 512 bajtů. (To znamená 320x1024x1024/512.) Toto číslo se pro adresář 320-MiB překládá na přibližně 4 až 5 milionů souborů. Skutečný počet maximálních souborů však může být nižší v závislosti na faktorech, jako je počet souborů s jinými znaky než ASCII v adresáři.
Pomocí příkazu z klienta můžete stat
zjistit, jestli se adresář blíží maximálnímu limitu velikosti metadat adresáře (320 MB). Pokud dosáhnete maximálního limitu velikosti pro jeden adresář pro Azure NetApp Files, dojde k chybě No space left on device
.
Pro adresář 320 MB je počet bloků 655 360, přičemž každá velikost bloku je 512 bajtů. (To znamená 320x1024x1024/512.) Toto číslo se pro adresář 320 MB překládá na přibližně 4 miliony souborů. Skutečný počet maximálních souborů však může být nižší v závislosti na faktorech, jako je počet souborů s jinými znaky než ASCII v adresáři. Informace o monitorování maxdirsize naleznete v tématu Monitorování maxdirsize
.
Důležité informace o velikosti adresáře
Při práci s prostředím s vysokým počtem souborů zvažte následující doporučení:
- Svazky Azure NetApp Files podporují až 320 MiB pro velikosti adresářů. Tuto hodnotu nelze zvětšit.
- Po překročení velikosti adresáře svazku se klientům zobrazí chyba nedostatek místa, i když je na svazku dostupné volné místo.
- U běžných svazků představuje velikost adresáře MiB přibližně 4 až 5 milionů souborů v jednom adresáři. Tato hodnota závisí na délkách názvu souboru.
- Velké svazky mají jinou architekturu než běžné svazky.
- Vysoké počty souborů v jednom adresáři můžou při hledání představovat problémy s výkonem. Pokud je to možné, omezte celkovou velikost jednoho adresáře na 2 MiB (přibližně 27 000 souborů), pokud je potřeba časté hledání.
- Pokud v jednom adresáři potřebujete více souborů, odpovídajícím způsobem upravte očekávání výkonu vyhledávání. Zatímco Azure NetApp Files indexuje výpisy adresářových souborů pro zajištění výkonu, vyhledávání může nějakou dobu trvat s vysokým počtem souborů.
- Při návrhu systému souborů se vyhněte rozložení plochých adresářů. Informace o různých přístupech k rozložením adresářů najdete v tématu O rozloženích adresářů.
- Pokud chcete vyřešit problémy s překročením velikosti adresáře a nejde vytvořit nové soubory, odstraňte nebo přesuňte soubory z příslušného adresáře.
O rozloženích adresářů
Tato maxdirsize
hodnota může způsobit obavy, když používáte ploché adresářové struktury, kde jedna složka obsahuje miliony souborů na jedné úrovni. Struktury složek, ve kterých jsou soubory, složky a podsložky interspersed, mají malý dopad na maxdirsize
. Existuje několik metodologií adresářové struktury.
Plochá adresářová struktura je jeden adresář s mnoha soubory pod stejným adresářem.
Široká adresářová struktura obsahuje mnoho adresářů nejvyšší úrovně se soubory rozloženými napříč všemi adresáři.
Struktura hlubokého adresáře obsahuje méně adresářů nejvyšší úrovně s mnoha podadresáři. I když tato struktura poskytuje méně souborů na složku, délky cesty k souboru se můžou stát problémem, pokud jsou rozložení adresářů příliš hluboké a cesty k souborům se stanou příliš dlouhými. Podrobnosti o délkách cesty k souboru najdete v tématu Vysvětlení délky cest k souborům v Azure NetApp Files.
Dopad plochých adresářových struktur ve službě Azure NetApp Files
Ploché adresářové struktury (mnoho souborů v jednom nebo několika adresářích) mají negativní vliv na širokou škálu systémů souborů, svazků Azure NetApp File nebo jiných. Mezi potenciální problémy patří:
- Přetížení paměti
- Využití procesoru
- Výkon/latence sítě (zejména při hromadných dotazech na soubory,
GETATTR
operace,READDIR
operace)
Vzhledem k návrhu velkých svazků Azure NetApp Files je dopad maxdirsize
jedinečný. Velký objem maxdirsize
služby Azure NetApp Files má jedinečný vliv na jeho návrh. Na rozdíl od běžného svazku používá velký svazek vzdálené pevné odkazy v Azure NetApp Files k přesměrování provozu mezi různými úložnými zařízeními, aby se zajistilo větší škálování a výkon. Při použití plochých adresářů existuje vyšší poměr interních vzdálených pevných odkazů k místním souborům. Tyto vzdálené pevné odkazy se započítávají do celkové maxdirsize
hodnoty, takže velký svazek může přistupovat k limitu maxdirsize
rychleji než běžný svazek.
Pokud má například jeden adresář miliony souborů a generuje přibližně 85% vzdálených pevných odkazů pro systém souborů, můžete očekávat maxdirsize
, že bude vyčerpán téměř dvakrát, protože běžný svazek.
Nejlepších výsledků s velikostmi adresářů ve službě Azure NetApp Files:
- Vyhněte se plochým adresářovým strukturám ve službě Azure NetApp Files. Široké nebo hluboké adresářové struktury fungují nejlépe, pokud délka cesty souboru nebo složky nepřekračuje standardy protokolu NAS.
- Pokud jsou ploché adresářové struktury nepotřebné, monitorujte
maxdirsize
adresáře.
Monitor maxdirsize
Pro jeden adresář použijte stat
příkaz k vyhledání velikosti adresáře.
# stat /mnt/dir_11/c5
stat
I když se dá příkaz použít ke kontrole velikosti adresáře konkrétního adresáře, nemusí být tak efektivní ho spouštět jednotlivě pro jeden adresář. Pokud chcete zobrazit seznam největších velikostí adresářů seřazených od největších po nejmenší, následující příkaz poskytuje při vynechání adresářů snímků z dotazu.
# find /mnt -name .snapshot -prune -o -type d -ls -links 2 -prune | sort -rn -k 7 | head | awk '{print $2 " " $11}' | sort -rn
Poznámka:
Velikost adresáře hlášená příkazem stat je v bajtech. Velikost hlášená příkazem find je v KiB.
Příklad
# stat /mnt/dir_11/c5
File: ‘/mnt/dir_11/c5’
Size: 322396160 Blocks: 632168 IO Block: 32768 directory
# find /mnt -name .snapshot -prune -o -type d -ls -links 2 -prune | sort -rn -k 7 | head | awk '{print $2 " " $11}' | sort -rn
316084 /mnt/dir_11/c5
3792 /mnt/dir_19
3792 /mnt/dir_16
V předchozím případě je velikost /mnt/dir_11/c5
adresáře 316 084 KiB (308,6 MiB), která se blíží limitu 320 MiB. To odpovídá přibližně 4,1 milionu souborů.
# ls /mnt/dir_11/c5 | wc -l
4171624
V takovém případě zvažte opravné akce, jako je přesunutí nebo odstranění souborů.