Síť zvládá skoro 120 MB/s, disky jsou ještě rychlejší, ale kopírování přes SMB se potácí někde kolem poloviny? Přesně tohle se může stát u QNAP NAS. Než začnete měnit kabely, kupovat rychlejší switch nebo hledat chybu v Macu, vyplatí se postupně změřit síť, úložiště a nakonec samotné SMB.
POZOR: Celý tento tip vznikl tak, že jsem s Claude řešil předmětný problém – ručně, ne v Claude Code (a věřte, zabralo to hodně času). A podařilo se zjistit co se dalo a dosáhnout zlepšení. Pak to dala jako podkaldy pro ChatGPT „skill“ 365tipů a ta sepsala tento tip. Protože fakt nedává smysl to abych to kousek po kousku sepisoval ručně. Navíc to rovnou i ověřila („skill“ to umí), doplnila zdroje a i kontrolovala, co to vlastně Claude vymyslela. Někomu to může třeba hodně pomoci, takže tady to je.
V konkrétním případě šlo o Mac mini M4 připojený gigabitovým Ethernetem k QNAP NAS s 2.5GbE rozhraním. Přenos přes SMB původně dosahoval přibližně 54 až 86 MB/s. Po změně jednoho důležitého nastavení QNAPu se rychlost dostala na 105 až 115 MB/s, tedy prakticky na maximum gigabitové sítě.
A hlavně se podařilo zjistit proč.
Nejdřív zjistěte, jak rychlá je samotná síť
První krok by neměl být test kopírováním souboru na NAS. Tím totiž současně testujete síť, SMB i úložiště a nevíte, co z toho je pomalé.
Ideální je iperf3, ale na QNAPu nemusí být nainstalovaný. Pokud nemáte ani Entware a opkg, dá se vystačit s nc z BusyBoxu.
Na QNAPu se přihlaste přes SSH a spusťte:
busybox nc -l -p 5201 > /dev/null
NAS teď čeká na data na portu 5201 a vše, co přijme, zahodí. Disk ani SMB do testu vůbec nevstupují.
Na Macu spusťte:
time dd if=/dev/zero bs=1m count=1024 | nc IP_ADRESA_QNAPU 5201
Přenese se 1 GB nulových dat. Podle času snadno zjistíte skutečnou propustnost sítě.
V testovaném případě vyšlo přibližně 117 MB/s, tedy asi 940 Mbit/s. To je na gigabitovém Ethernetu prakticky plná rychlost. Kabel, switch i síťová rozhraní tedy bylo možné z podezření vyškrtnout.
Zkontrolujte také, jakou rychlost Ethernet skutečně vyjednal
QNAP může mít 2.5GbE nebo rychlejší síťovou kartu, ale rychlost spojení určuje nejpomalejší článek.
V QTS najdete rychlost rozhraní v Ovládací panely -> Síť a virtuální switch v detailu konkrétního síťového rozhraní.
Na Macu můžete použít například:
ifconfig en0 | grep media
Pokud je Ethernet právě en0. Na konkrétním Macu se zobrazilo 1000baseT a QNAP současně ukazoval Network Speed: 1 Gbps.
To bylo správně. Mac mini s M4 má v základní konfiguraci gigabitový Ethernet. Apple nabízí 10Gb Ethernet jako volitelnou konfiguraci při nákupu, která podporuje také 2.5 a 5 Gb/s.
Pokud tedy máte základní Mac mini M4 s 1GbE, rychlejší 2.5GbE port na NASu vám sám o sobě nepomůže. Vyšší rychlost je možné dodatečně řešit externím 2.5/5/10GbE adaptérem přes USB-C nebo Thunderbolt, ale rychlejší musí být samozřejmě i zbytek síťové cesty.
Pak ověřte, zda není pomalé samotné úložiště NASu
Další proměnnou jsou disky.
Přes SSH můžete přímo na QNAPu udělat alespoň orientační test zápisu:
dd if=/dev/zero of=/share/CACHEDEV1_DATA/testfile bs=1M count=1024
Cestu upravte podle skutečného svazku na vašem NASu. Příkaz vytvoří testovací soubor o velikosti 1 GB, který po testu můžete smazat.
V konkrétním případě zápis dosahoval zhruba 150 až 190 MB/s, tedy více, než dokáže přenést gigabitová síť.
Berete to ale jen jako orientační test. Operační systém používá diskovou cache a zejména opakované čtení stejného souboru může být výsledkem cache ovlivněné. Pro zdejší diagnostiku stačí vědět, že úložiště zjevně nebylo schopné pouze 50 nebo 60 MB/s.
Teprve teď měřte SMB
Síť zvládala 117 MB/s a úložiště bylo rychlejší než síť. Pokud je přenos přes SMB podstatně pomalejší, začíná být podezřelá právě SMB vrstva.
Pozor ale na způsob měření.
Jednoduché:
time cp soubor.bin /Volumes/share/
může při zápisu na SMB dávat na macOS velmi zavádějící výsledky kvůli cache a write-behind. V tomto případě dokonce vycházely rychlosti přes 1 GB/s, což je na gigabitové síti fyzicky nemožné.
Mnohem použitelnější je vzít soubor, který už leží na NASu, a číst ho zpátky na Mac:
time cp /Volumes/share/testfile.bin ~/testfile_back.bin
nebo:
time dd if=/Volumes/share/testfile.bin of=~/testfile2.bin bs=1m
Před změnou nastavení vycházelo přibližně 54 až 66 MB/s přes cp a kolem 86 MB/s přes dd.
Pořád výrazně méně než 117 MB/s, které stejná síť zvládla bez SMB.
Zkontrolujte, jaké SMB Mac skutečně používá
macOS má velmi užitečný příkaz:
smbutil statshares -a
U připojeného QNAPu se ukázalo mimo jiné:
SMB_VERSION SMB_3.1.1
SMB_CURR_ENCRYPT_ALGORITHM OFF
SMB_CURR_SIGN_ALGORITHM AES_128_GMAC
SMB tedy běželo ve verzi 3.1.1. Šifrování přenosu nebylo aktivní, ale SMB signing ano.
Tohle je dobrý způsob, jak se vyhnout dohadům. Neřešte pouze, co máte nastavené na NASu. smbutil statshares -a ukáže, co Mac u konkrétního právě připojeného sdílení skutečně používá.
Zásadní nastavení na QNAPu: kernel SMB daemon
Řešení se nakonec ukázalo přímo v QTS.
V Ovládací panely -> Síťové a systémové služby -> Win/Mac/NFS -> Microsoft Networking -> Pokročilé možnosti (Advanced Options) je na podporovaných QNAPech volba:
Accelerate file transfer using kernel SMB daemon
Ve starší dokumentaci QTS ji můžete najít i pod názvem Enable kernel-mode SMB daemon. QNAP přímo uvádí, že má zvýšit výkon čtení a zápisu SMB.
Po jejím zapnutí vyskočila rychlost SMB přenosu z původních 54 až 86 MB/s na přibližně 105 až 115 MB/s.
To už prakticky odpovídá stropu gigabitového Ethernetu, který samostatný síťový test naměřil na 117 MB/s.
Změna se po Apply projevila bez nutnosti ručně restartovat SMB službu.
Pozor, kernel SMB daemon vypne SMB encryption
Tahle optimalizace má cenu.
QNAP výslovně upozorňuje, že zapnutí kernel-mode SMB daemonu vypne SMB encryption pro sdílené složky. QTS na to upozorní i dialogem při aktivaci.
V tomto konkrétním případě to nic nezměnilo, protože:
SMB_CURR_ENCRYPT_ALGORITHM OFF
ukazovalo, že šifrování nebylo používáno ani před změnou.
Pokud ale SMB encryption používáte a potřebujete, není kernel SMB daemon bezpodmínečně vhodná optimalizace. Rychlost není důvod bezmyšlenkovitě zahodit bezpečnostní vlastnost, kterou skutečně potřebujete.
Volba pro velké množství malých souborů
Pod kernel SMB daemonem se na novějších QTS objevuje ještě:
Accelerate copying large number of small files
Pokud běžně přesouváte adresáře obsahující tisíce malých souborů, dává smysl ji zapnout také.
Nejde o prastarou volbu přítomnou na všech QNAPech. QNAP ji přidal v QTS 5.2.6 v červenci 2025 a uvádí, že má zlepšit výkon právě při práci s velkým množstvím malých souborů. Dostupná je pouze při zapnutém kernel-mode SMB daemonu.
Pokud tuto volbu vůbec nevidíte, může to být procesorem
Kernel-mode SMB daemon není dostupný na všech QNAP NAS.
Podle QNAPu je podporovaný pouze na modelech s x86 procesory Intel nebo AMD. ARM modely používají klasickou Sambu a příslušný přepínač v nastavení nenajdete.
Takže pokud ho na jednom QNAPu vidíte a na jiném ne, nemusí jít o jinou verzi QTS nebo špatně hledané nastavení.
A co SMB signing? Ten problém nebyl
Během hledání příčiny bylo na QNAPu změněno také Server signing z výchozího Sign according to selected SMB na Sign if client agrees.
Mohlo by tedy vypadat, že právě to způsobilo zrychlení.
Jenže po dosažení 105 až 115 MB/s ukazoval smbutil statshares -a stále:
SMB_CURR_SIGN_ALGORITHM AES_128_GMAC
Mac tedy SMB signing dál aktivně používal.
Výrazné zrychlení proto nelze vysvětlit jeho vypnutím. Jako hlavní příčina zůstává zapnutí kernel SMB daemonu. Změnu Server signing proto není potřeba považovat za součást řešení.
Stejně tak nepomohl ani předchozí pokus na Macu s /etc/nsmb.conf:
[default]
signing_required=no
Po odpojení a novém připojení SMB share zůstal signing aktivní a rychlost se nezměnila.
CPU také nemusí být příčina
Pokud máte podezření, že SMB jednoduše nestíhá procesor NASu, můžete během přenosu sledovat například:
top
nebo si krátké měření uložit do souboru:
top -b -d 1 -n 20 > /tmp/top_output.txt
V tomto případě se smbd dostal maximálně někam k 9 procentům CPU. Nebyl tedy vidět jednoduchý scénář, kdy by SMB proces vytížil procesor na maximum a dál už nemohl.
Stav procesu D, který se při měření objevoval, znamená čekání na I/O. Sám o sobě ale neurčuje, zda je problém v disku, filesystemu, SMB nebo jiné vrstvě, takže z něj není dobré vyvozovat příliš konkrétní závěry.
Co z toho plyne pro diagnostiku pomalého NASu
Nezačínejte náhodným přepínáním nastavení SMB.
Postupujte po jednotlivých vrstvách:
- Změřte čistou síť bez disků a SMB.
- Ověřte skutečně vyjednanou rychlost Ethernetu.
- Orientačně zkontrolujte výkon úložiště přímo na NASu.
- Teprve potom měřte skutečný SMB přenos.
- Na macOS zkontrolujte
smbutil statshares -a. - Pokud používáte podporovaný x86 QNAP, vyzkoušejte kernel SMB daemon a přenos znovu přeměřte.
Právě první bod je nejdůležitější. Pokud čistá síť dává 60 MB/s, nemá smysl ladit Sambu. Pokud ale síť zvládá 117 MB/s a SMB pouze polovinu, víte alespoň přesně, kde pokračovat.
A na gigabitové síti už není příliš co honit ve chvíli, kdy se dostanete někam k 105 až 115 MB/s.
TIP: Pokud se z Macu připojujete k QNAPu, používejte SMB, ne staré AFP. Viz Mám na QNAP NAS zapínat podporu AFP pokud se připojuji z Mac počítačů? A proč mi nejde vypnout?. AFP navíc míří v macOS definitivně ke konci, podrobněji viz Apple plánuje odstranit podporu pro AFP v macOS 27. Co to znamená?.
