jidckii
@jidckii
system administrator

Samba ограничивает скорость?

Добрый день.
Есть файловый сервер на FreeNAS.
До него агрегированно 3 гигабита.
И поднята шара CIFS для windows пользователей.
Проблема в том, что упираюсь в скорость 50-60 МиБ/с (500 мегабит/cек) в 1 потоке.
При этом если в 1 поток лью по ftp , то вижу свой клиентский 1 гигабит без напрягов.
Логично предположил, что проблема в ограничениях протокола и возможно нужен какой то тюнинг.
В основном везде разговор о вот таки параметрах в smb.conf

​socket options=SO_RCVBUF=131072 SO_SNDBUF=131072 TCP_NODELAY
min receivefile size = 16384
use sendfile = true
aio read size = 16384
aio write size = 16384
aio write behind = true

Ну и все в таком духе.
но эти параметры ничего не меняют.
Сразу скажу, что я 100% не упираюсь ни в диски ни в процессор ни в сеть !
Проблема именно при работе с шарой cifs.
на всякий случай конфиги:
~# /usr/local/sbin/samba --version
Version 4.1.18
 ~# testparm
Load smb config files from /usr/local/etc/smb4.conf
Unknown parameter encountered: "​socket options"
Ignoring unknown parameter "​socket options"
Processing section "[obmen]"
Loaded services file OK.
Server role: ROLE_DOMAIN_MEMBER
Press enter to see a dump of your service definitions

[global]
	dos charset = CP437
	workgroup = ***
	realm = ***.LOC
	server string = Frank file Server
	interfaces = 127.0.0.1, 172.20.0.***
	bind interfaces only = Yes
	server role = member server
	security = ADS
	allow trusted domains = No
	map to guest = Bad User
	obey pam restrictions = Yes
\	username map = /usr/local/etc/smbusers
	max log size = 51200
	min receivefile size = 16384
	deadtime = 15
	max open files = 2830079
	hostname lookups = Yes
	load printers = No
	printcap name = /dev/null
	disable spoolss = Yes
	lm announce = Yes
	local master = No
	domain master = No
	dns proxy = No
	cache directory = /var/tmp/.cache/.samba
	pid directory = /var/run/samba
	panic action = /usr/local/libexec/samba/samba-backtrace
	template shell = /bin/sh
	winbind cache time = 7200
	winbind enum users = Yes
	winbind enum groups = Yes
	winbind refresh tickets = Yes
	winbind offline logon = Yes
	nsupdate command = /usr/local/bin/samba-nsupdate -g
	idmap config ***: range = 20000-90000000
	idmap config ***: backend = rid
	idmap config *: range = 90000001-100000000
	idmap config * : backend = tdb
	acl allow execute always = Yes
	create mask = 0664
	directory mask = 0775
	aio read size = 16384
	aio write size = 16384
	aio write behind = true
	ea support = Yes
	directory name cache size = 0
	kernel change notify = No
	use sendfile = Yes
	store dos attributes = Yes
	strict locking = No
	dos filemode = Yes
  • Вопрос задан
  • 5534 просмотра
Пригласить эксперта
Ответы на вопрос 5
Jump
@Jump
Системный администратор со стажем.
SMB это закрытый пропиетарный протокол.
Реализация его на системах отличных от windows это кривой костыль.
Хотите использовать SMB на всю катушку - ставьте windows.
Хотите использовать nix системы - забудьте про быструю работу SMB.
Ответ написан
Olej
@Olej
инженер, программист, преподаватель

Проблема в том, что упираюсь в скорость 50-60 МиБ/с (500 мегабит/cек) в 1 потоке.
При этом если в 1 поток лью по ftp , то вижу свой клиентский 1 гигабит без напрягов.

Т.е., если я правильно понял, вас расстраивает 2-х кратное относительно скорости физческого канала снижение скорости обмена с совершенно чуждой для Linux и настолько же второстепенной для него файловой системой? ... дожать последние 60-70-80% ?
Как мне кажется, это не настолько сильная потеря скорости, чтобы над ней очень заморачиваться. Конечно, обмен по SMB будет медленнее чем по FTP, в конечном итоге.
Ответ написан
athacker
@athacker
Самба на фре всегда страдала проблемами с производительностью. Насколько мне известно, это не лечится никак. Были у сообщества одно время попытки аппелировать к команде Самбы на эту тему, но они закончились после ответа от Samba team в духе: "Идите лесом, у нас на линухе всё работает ровно". Так что если от Самбы реально нужен гигабит -- ставьте её на линух.
Ответ написан
Комментировать
@maxxx_kovalenko
admin
Этот трюк нужно дабавить в smb.conf клиентской машины.
# Samba mounted with cifs or smbfs slow, but gvfs is fast. Use this
socket options = TCP_NODELAY SO_SNDBUF=4096 SO_RCVBUF=4096

С этим смотлкнулся еще на клиентской машине в ubuntu 12.04
Samba сервер был на CentOS 5
Ответ написан
@aleks-th
Да это нормально, под линуксом будет низкая производительность, ибо это костыль для любителей скрестить ужика с ежиком.
Или используй Windows или смирись.
--
Вообще не вижу не одного смысла использовать самбу тем более под линуксом.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы