Článek
Dvě složky mají shodně 10 GB. V jedné je jediné velké video, ve druhé desetitisíce fotek, ikon, textových souborů nebo drobných dat programu. Přesto se ta druhá může kopírovat citelně déle. Ne proto, že by měla „skrytě“ víc gigabajtů, ale protože počítač při kopírování nepřenáší jen samotná data.
Každý soubor musí najít, otevřít, vytvořit na cíli, zapsat jeho obsah, zpracovat metadata a zase uzavřít. U jednoho velkého souboru se tato režie zaplatí jednou. U desítek tisíc malých souborů pořád dokola.
Nejdřív soubor vytvořit, teprve potom do něj sypat data
Microsoft u pomalých přenosů přes SMB popisuje vytvoření souboru jako relativně drahou operaci. Než se začne přenášet samotný obsah, musí klient požádat o vytvoření souboru, server požadavek zpracuje ve filesystému a až potom se může posílat datová část. Po zápisu se soubor opět uzavírá.
U velkého souboru zabere tahle „administrativa“ malou část celkového času. Jakmile však soubor měří třeba jen několik kilobajtů, může být režie s jeho vytvořením srovnatelná s dobou, po kterou se zapisuje vlastní obsah.
Metadata nejsou vidět, ale práce s nimi ano
Soubor není jen hromada bajtů. Filesystém potřebuje evidovat jeho jméno, umístění v adresáři, velikost, časy, atributy a podle systému také oprávnění či další informace. V cílovém úložišti se proto při každém novém souboru mění nejen jeho data, ale také struktury, které o souboru vedou záznam.
K tomu se přidává procházení adresářů. Program musí zjistit, co všechno ve zdrojové složce je, rozhodnout, kam položka patří, a vytvořit odpovídající adresářovou strukturu. U obrovského množství malých souborů se tak může limitujícím faktorem stát počet operací, ne rychlost v megabajtech za sekundu.
Antivirus si může sáhnout na každý soubor zvlášť
Do cesty se často přidává bezpečnostní software. Microsoft výslovně uvádí, že endpointová ochrana a antivirus mohou kontrolovat síťové pakety i souborové operace. Jeden velký soubor znamená méně samostatných objektů k otevření a vyhodnocení než desetitisíce drobných.
Neznamená to, že řešením je antivirus vypnout. Spíš to vysvětluje, proč může kopírování projektové složky s tisíci položkami působit překvapivě pomalu i na počítači, který u velkého videa běžně ukazuje stovky megabajtů za sekundu.
SSD pomáhá, ale princip nemaže
Na klasickém pevném disku se k režii přidává ještě fyzický pohyb hlaviček a čekání na správné místo plotny. SSD tyto prodlevy dramaticky snižuje, ale ani ono nemá nekonečný počet vstupně-výstupních operací za sekundu. Řadič, flash překladová vrstva, filesystém i operační systém pořád zpracovávají velké množství samostatných požadavků.
Proto může nový NVMe disk rozdíl výrazně zmenšit, ale neudělá z desetitisíců souborů totéž co z jednoho souvislého proudu dat.
Po síti je rozdíl ještě viditelnější
Při kopírování na NAS nebo firemní server se každá operace navíc potkává také se síťovou latencí a protokolem SMB. Microsoft přímo upozorňuje, že stovky, tisíce či miliony souborů menších než 1 MB se přes běžné jednovláknové kopírování mohou přenášet pomalu, protože se opakují příkazy vytvoření souboru a není dost dat „v letu“, aby se naplno využila rychlost linky.
Podobnou zkušenost popisuje i dokumentace k migracím přes Robocopy: u velkých jmenných prostorů s množstvím malých souborů může rychlost jejich procházení a zpracování ovlivnit celkový čas víc než samotná propustnost sítě.
Proč někdy pomůže ZIP
Když tisíce malých souborů nejdřív zabalíte do jednoho archivu, pro samotný přesun vznikne jeden velký soubor. Filesystém i síť tak řeší vytvoření jednoho objektu místo tisíců. To může kopírování výrazně zrychlit.
Není to ale bezplatný trik. Archiv se musí vytvořit a na cíli případně znovu rozbalit. U už komprimovaných dat může být lepší použít režim bez komprese a archiv využít jen jako kontejner. Smysl to má hlavně tehdy, když je úzkým hrdlem právě množství souborů a ne výkon procesoru nebo cílového disku.
Stejných 10 GB tedy neznamená stejnou práci
Ukazatel velikosti souborů říká, kolik dat nesou. Neříká, kolik jednotlivých operací musí systém provést, aby je bezpečně přesunul z bodu A do bodu B. Proto není rozpor, když se jedno 10GB video překopíruje rychleji než 10GB adresář plný drobností.
Univerzální poměr typu „malé soubory jsou pětkrát pomalejší“ ale neexistuje. Výsledek mění typ disku, filesystém, síť, antivirus, velikost souborů, počet vláken i konkrétní kopírovací nástroj. Jistý je jen mechanismus: čím více samostatných souborů, tím více samostatné práce okolo nich.
ZDROJE
Microsoft Learn — Slow SMB files transfer speed — proč jsou malé soubory přes SMB očekávaně pomalejší; create/close, latence, antivirus
Microsoft Learn — Troubleshooting slow file copying in Windows — potvrzení, že složka s mnoha soubory trvá déle než jeden soubor stejné velikosti
Microsoft Learn — Migrate to Azure Files Using RoboCopy — u množství malých souborů může být limitem zpracování namespace; více vláken může pomoci





