LINUX.ORG.RU

рестарт демона smbd без прерывания нагрузки на клиенте windows

 , , , ,


0

1

Всем привет! Такая проблема, есть сервер(кластер), на котором используется смб, сервер введен в домен AD, так как это кластер, иногда требуется выполнять рестарт службы smbd(reload не подойдет), но при этом если идет какое то копирование файла на клиенте(windows), то нагрузка прерывается(что логично), и после нажатия кнопки «Повторить», загрузка файла начинается с самого начала, можно ли сделать как то что бы нагрузка продолжала идти с того момента где прервалась, может нужно настроить клиента как то. клиент подключается как SMBv3 или SMBv2

сервер на ubuntu 18.04. папка смб создана на зфс

smb.conf:

[global]
	workgroup = TEST247
	realm = test247.ru
	security = ads
	auth methods = winbind
	interfaces = 172.16.11.170/24 
	bind interfaces only = yes
	netbios name = SERVER
	encrypt passwords = true
	map to guest = Bad User
	max log size = 300
	dns proxy = no
	socket options = TCP_NODELAY
	domain master = no
	local master = no
	preferred master = no
	os level = 0
	domain logons = no
	load printers = no
	show add printer wizard = no
	log level = 0 vfs:2
	max log size = 0
	syslog = 0
	printcap name = /dev/null
	disable spoolss = yes
	name resolve order = lmhosts wins host bcast
	machine password timeout = 604800
	name cache timeout = 660
	idmap config TEST247 : backend = rid
	idmap config TEST247 : base_rid = 0
	idmap config TEST247 : range = 100000 - 200000
	idmap config * : range = 200001-300000
	idmap config * : backend = tdb
	idmap cache time = 604800
	idmap negative cache time = 60
	winbind rpc only = yes
	winbind cache time = 120
	winbind enum groups = yes
	winbind enum users = yes
	winbind max domain connections = 10
	winbind use default domain = yes
	winbind refresh tickets = yes
	winbind reconnect delay = 15
	winbind request timeout = 25
	winbind separator = ^
	private dir = /var/lib/samba/private
	lock directory = /run/samba
	state directory = /var/lib/samba
	cache directory = /var/cache/samba
	pid directory = /run/samba
	log file = /var/log/samba/smb.%m
	include = /etc/samba/smb-res.conf

testparm:

testparm -s /etc/samba/smb.conf 

Load smb config files from /etc/samba/smb.conf
WARNING: The "auth methods" option is deprecated
WARNING: The "syslog" option is deprecated
Loaded services file OK.
Server role: ROLE_DOMAIN_MEMBER

конфиг шары: smb-res.conf:

[test109_smb]
	comment = test109_smb share
	path = /config/pool/test109/smb
	browseable = yes
	writable = yes
	inherit acls = yes
	inherit owner = no
	inherit permissions = yes
	map acl inherit = yes
	nt acl support = yes
	create mask = 0777
	force create mode = 0777
	force directory mode = 0777
	store dos attributes = yes
	public = no
	admin users = 
	valid users =  
	write list = 
	read list = 
	invalid users = 
	vfs objects = acl_xattr    
	full_audit:prefix = %S|%u|%I
	full_audit:facility = local5
	full_audit:priority = notice
	full_audit:success = none
	full_audit:failure = none
	shadow: snapdir = .zfs/snapshot
	shadow: sort = desc
	shadow: localtime = yes
	shadow: format = shadow_%d.%m.%Y-%H:%M:%S
	worm: grace_period = 30
	cryptfile: method = grasshopper

В деталях не знаю как это устроено, но будет логичным предположить, что загрузка обрывается по причине того, что при перезапуске smbd закрывается сокет. Чтобы это обойти, надо поставить какой-то прокси между smbd и клиентом, чтобы сокет оставался открытым, пока smbd рестартует.

EugeneBas ★★ ()

можно.
если переписать код библиотеки копирователя smb в винде и впихнуть костыль продолжения качания.
вариант бэ: напрячь микрософот, что бы они впихнули в протокол докачку файлов при обрыве.
как сам понимаш, вероятность обоих вариантов на уровне плинтуса.

pfg ★★★★★ ()