Почему Samba (SMB) зависает на стадии «Оценивается»?

Установил на OpenWrt Samba — в целом всё работает: права выставлены 777, используется SMB3. <br/> <br/> Но при попытке <b>записи</b> на сетевой "диск" операция зависает на этапе «<i>Время выполнения: Оценивается</i>». При этом система загружена: CPU занят на 70–80%, наблюдается интенсивная IO-активность. Чем больше файл, тем дольше длится зависание (например, гигабайтный файл — примерно минуту), при этом чтение работает мгновенно и без проблем. Используется флешка с ФС exFAT. <br/> <br/> В чём может быть причина? Возможно ли, что это связано с кэшированием SMB или с характеристиками exFAT/флешки?
  • 28 марта 2026 г. 12:01
Ответы на вопрос 3
Коротко — проблема почти наверняка на стороне носителя / способа монтирования и/или на стороне настройки Samba, а не «баг» Windows Explorer. При копировании Explorer показывает «Время выполнения: Оценивается», пока не получает стабильную скорость записи. У вас ключевые факторы, которые этому способствуют:

- exFAT на флешке (особенно через FUSE) плохо и медленно обрабатывает запись, особенно много мелких/синхронных операций; драйвер в userspace (exfat‑fuse) сильно загружает CPU.
- возможны синхронные записи / частые fsync: и сам exFAT/монтирование, и настройки Samba (strict sync / sync always) могут заставлять каждую пачку данных физически сбрасываться на диск → очень много IO и задержки.
- USB‑флешки часто имеют ужасную производительность на последовательных/случайных записях (контроллер, маленькие буфера), чем больше файл — тем дольше длится «оценивается».
- если Samba/клиент использует шифрование/подпись SMB, это тоже даёт нагрузку CPU (менее вероятно, т.к. чтение у вас быстро).

Что проверить первым делом
1) Кто грузит CPU/IO:
   - top / htop — какой процесс на 70–80% (smbd / fuse / kworker / и т.д.).
   - iotop или iostat — какая активность диска.
   - dmesg / log — ошибки USB или FUSE.

2) Тип и опции монтирования:
   - mount | grep <точка_монтирования> — смотрите, через fuse или kernel driver, какие опции (sync, noatime, big_writes и т.д.).

3) Прямой тест скорости на устройстве (исключая Samba):
   - на роутере: dd if=/dev/zero of=/mnt/usb/test.bin bs=1M count=1024 conv=fdatasync
   - если это тоже медленно — проблема в флешке/файловой системе/монтировании, а не в Samba.

4) Лог Samba и конфиг:
   - проверьте smb.conf на опции strict sync, sync always, oplocks и т.п.

Возможные решения (по приоритету)
1) Если raw copy на роутере медленный — смените носитель или ФС:
   - форматнуть флешку в ext4 / f2fs (лучше для Linux) — это даёт существенный прирост производительности и адекватную работу с Linux.
   - либо установить/включить kernel exFAT (если в OpenWrt доступен) вместо exfat‑fuse.

2) Если не можете форматировать:
   - монтируйте с опциями, ускоряющими запись: noatime, allow_other, big_writes (для FUSE), и уберите опцию sync, если она есть.
   - пример для FUSE exfat: mount -o rw,allow_other,noatime,big_writes /dev/sda1 /mnt/usb

3) Настройки Samba (в smb.conf, global или конкретном шаре):
   - отключить жёсткую синхронизацию: strict sync = no и sync always = no
   - разрешить клиентское кэширование: oplocks = yes, level2 oplocks = yes
   - включить асинхронный I/O для больших операций (если ваша сборка Samba поддерживает): aio read size / aio write size (например поставить маленькое значение, чтобы разрешить AIO для больших копирований).
   - после изменений перезапустите smbd и проверьте.

4) Тесты для изоляции:
   - Скопируйте файл на флешку, сидя на самом OpenWrt — это покажет «чистую» скорость носителя.
   - Скопируйте файл через smb с другого Linux (smbclient или mount.cifs) — сравните поведение.
   - Временно отключите SMB3 шифрование/подпись на сервере/клиенте, если подозреваете CPU‑нагрузку шифрованием.

Почему именно «Оценивается» зависает
Explorer ждёт, пока ему придут данные о скорости/остатке копирования. Если сервер/носитель отвечает очень медленно (из‑за частых fsync, FUSE‑перевода операций или медленного USB контроллера), Explorer не может корректно оценить скорость, потому показывает «Оценивается» длительное время.

Резюме
Самая частая причина в вашей ситуации — exFAT через FUSE + синхронные записи → высокая нагрузка CPU и IO, медленные подтверждения записи. Самое простое и надёжное решение — перейти на файловую систему, дружелюбную к Linux (ext4/f2fs) или использовать kernel‑драйвер exFAT; а при невозможности форматирования — попробовать правки в монтировании и в smb.conf (убрать sync/включить AIO/оплокс), и измерять производительность локально dd, затем по SMB.

Если хотите, помогу пошагово:
- скажите выводы команд: top, iotop (или iostat), mount | grep <точка>, и содержимое relevant части smb.conf — подскажу конкретные строки для правки.
это не samba, это флешка тормозит. iowait 80% = проц ждёт IO, т.е. флешка не успевает писать. Попробуй ext4 вместо exfat — на линуксе он значительно быстрее, особенно на запись.
Сталкивался с таким поведением при использовании 3 версии протокола, прогресс не отображается, а файл пишется. Снизил до 2 версии и всё заработало норм. Для эксперимента попробуйте понизить версию протокола (кажется max protocol = SMB2), если заработает - значит что-то с настройками для 3 версии.
Похожие вопросы