Search code examples
sambasmb

restart of the smbd daemon without interrupting the load on the windows client


Such a problem, there is a server (cluster) on which smb is used, the server is entered into the AD domain, sometimes it is necessary to restart the smbd service (reload won't fit), but at the same time there is some copying of the file on the client (windows), then the load is interrupted, and after the klick "Retry" button, the download starts from the very beginning. Is it possible to do something like that so that the load continues to go from the moment where it was interrupted, maybe you need to configure the client like that. client connects as SMBv3 or SMBv2

server on ubuntu 18.04. smb created at zfs

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

Solution

  • Resuming a copy operation doesn't depend on the smb client or server, but on the application which is doing the copying.

    The standard Windows copy doesn't know to resume.

    Other (third party) apps (maybe Total Commander?) can be more intelligent about it. You could even write your own app to do a smart copy.