Назад | Перейти на главную страницу

LINUX / WINDOWS - странное поведение при передаче файлов.

Вопрос: Как передача файлов может быть медленной и нормальной одновременно?

Передача инициирована с: компьютера Windows 7 на компьютере VLAN

Источник: общий ресурс NSD (samba от IBM GPFS) на сервере VLAN

Назначение: компьютер с Windows 7 на компьютере VLAN (тот, который использовался для инициализации)


Исследование: предположим, что это может быть связано с уровнем хоста модели OSI.


Для многих клиентов я Linux Sys Admin. Я использую удаленный вход, и у меня нет возможности все протестировать.

Один клиент ведет себя странно: из Windows 7 при открытии explorer.exe и передаче один файл 1 ГБ (zip, iso, данные, созданные с помощью команды dd и т. д.) из общего ресурса LAN (см. конфигурацию ниже) с использованием пути UNC, вы можете иметь 2 разных поведения в зависимости от файла.

А) У вас может быть низкая скорость передачи, 7-10 Мбит / с

Б) У вас может быть нормальная скорость передачи, 50-70 Мбит / с

Эта скорость передачи постоянна для типа файла. Это означает, что если вы попробуете из другого времени в другие дни и часы, вы получите тот же результат. Каждый раз zip-файл или файл iso имеют нормальную скорость передачи. Когда файл данных, поддельный файл, созданный dd, имеет низкую скорость передачи.

С другого компьютера с такой же или другой версией Windows (например, сервер Windows 2012) тот же результат.

Если вы попробуете с другой учетной записью, результат будет тот же.

Если вы смонтируете путь UNC, результат будет тот же.

С активированным антивирусом или нет


Я сделал тесты и наблюдаю это:

Передача из другого Linux в другую VLAN: скорость передачи 42 Мб / с для обоих типов файлов

Передача с помощью winscp с компьютера Windows в другую VLAN: скорость передачи 26 Мбит / с для обоих типов файлов

Передача с помощью cygwin с компьютера Windows в другую VLAN с использованием SCP (ssh): скорость передачи 47-53 Мб / с для обоих типов файлов

Передача с помощью cygwin с компьютера Windows в другую VLAN с использованием точки монтирования: скорость передачи 7-10 Мбит / с для A и 55 Мбит / с для B

Поскольку клиент использует wirehark и говорит мне, что он наблюдает это: Wireshark показывает, что медленная передача A выполняется по протоколу SMB2, а нормальная передача B выполняется по протоколу NetBios / NBSS

И поскольку мои тесты показывают SCP (SSH), скорость передачи нормальная (одинаковая для всех типов файлов), я ориентировал свой поиск на основные протоколы модели OSI.

Но я ничего не знаю о сетях / протоколах.

Может кто-нибудь знающий помочь мне, пожалуйста?


Общий ресурс: это IBM Spectrum Scale (новое имя GPFS), совместно используемое сервером NSD с включенными NFS и SMB на определенном сервере VLAN.

[root@nsd ~]# mmces service list
 Enabled services: NFS SMB
 NFS is running, SMB is running


# smbstatus -V
Samba version 4.6.16-gpfs-56


# testparm

Load smb config files from /var/mmfs/ces/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Registered MSG_REQ_POOL_USAGE
Registered MSG_REQ_DMALLOC_MARK and LOG_CHANGED
Registered MSG_REQ_POOL_USAGE
Registered MSG_REQ_DMALLOC_MARK and LOG_CHANGED
Can't find include file /var/mmfs/ces/smb.conf.0.0.0.0
Can't find include file /var/mmfs/ces/smb.conf.internal.0.0.0.0
Processing section "[home]"
Loaded services file OK.
Server role: ROLE_DOMAIN_MEMBER

Press enter to see a dump of your service definitions

# Global parameters
[global]
        netbios name = SPECSCALE
        realm = xxxxxxxxxx.COM
        server string = IBM NAS
        workgroup = xxxxx
        preferred master = No
        ldap ssl = no
        logging = syslog@0 file
        max log size = 100000
        add share command = /usr/lpp/mmfs/bin/mmcesmmccrexport
        allow insecure wide links = Yes
        change share command = /usr/lpp/mmfs/bin/mmcesmmcchexport
        clustering = Yes
        ctdb locktime warn threshold = 5000
        delete share command = /usr/lpp/mmfs/bin/mmcesmmcdelexport
        lock directory = /run/gpfs-samba/lock
        log writeable files on exit = Yes
        registry shares = Yes
        smbd exit on ip drop = Yes
        smbd profiling level = on
        disable spoolss = Yes
        printcap cache time = 0
        disable netbios = Yes
        server max protocol = SMB3_02
        server min protocol = SMB2_02
        unix extensions = No
        auth methods = guest sam winbind
        restrict anonymous = 2
        security = ADS
        max open files = 20000
        socket options = TCP_NODELAY SO_KEEPALIVE TCP_KEEPCNT=4 TCP_KEEPIDLE=240 TCP_KEEPINTVL=15
        include system krb5 conf = No
        winbind max clients = 10000
        winbind max domain connections = 5
        winbind use default domain = Yes
        gencache:stabilize_interval = 3600
        winbind:request profile threshold = 10
        idmap config sbm : range = 1000-500000
        idmap config sbm : ldap_user_dn = cn=connect,ou=Special Users,dc=xxxxx,dc=local
        idmap config sbm : ldap_url = ldap://master.local
        idmap config sbm : ldap_server = stand-alone
        idmap config sbm : bind_path_user = ou=People,dc=xxxxx,dc=local
        idmap config sbm : bind_path_group = ou=Groups,dc=xxxxx,dc=local
        idmap config sbm : backend = rfc2307
        nfs4:acedup = merge
        nfs4:chown = yes
        nfs4:mode = simple
        idmap config * : rangesize = 1000000
        idmap config * : range = 10000000-299999999
        idmap config * : read only = no
        idmap:cache = no
        shadow:sort = desc
        shadow:snapdirseverywhere = yes
        shadow:fixinodes = yes
        shadow:snapdir = .snapshots
        readdir_attr:aapl_max_access = false
        fruit:veto_appledouble = no
        fruit:nfs_aces = no
        fruit:metadata = stream
        fruit:copyfile = yes
        gpfs:merge_writeappend = no
        gpfs:winattr = yes
        gpfs:hsm = yes
        gpfs:prealloc = yes
        gpfs:dfreequota = yes
        gpfs:leases = yes
        gpfs:sharemodes = yes
        smbd:async search ask sharemode = yes
        ctdb:smbxsrv_open_global.tdb = false
        gencache:stabilize_count = 100000
        time_audit:timeout = 5000
        aio_pthread:aio open = yes
        tdbsam:map builtin = no
        winbind:online check timeout = 30
        groupdb:backend = tdb
        smbd:backgroundqueue = False
        notify:inotify = yes
        syncops:onmeta = no
        fileid:fstype allow = gpfs
        fileid:algorithm = fsname
        dbwrap_tdb_mutexes:* = true
        ctdb:registry.tdb = yes
        idmap config * : backend = autorid
        mangled names = illegal
        map hidden = Yes
        map system = Yes
        store dos attributes = Yes
        posix locking = No
        dfree cache time = 100
        include = /var/mmfs/ces/smb.conf.internal.0.0.0.0
        durable handles = No
        ea support = Yes
        force unknown acl user = Yes
        read only = No
        aio read size = 1
        aio write size = 1
        strict allocate = Yes
        vfs objects = shadow_copy2 syncops gpfs fileid time_audit


[home]
        path = /gpfsxxxxx/home
        wide links = Yes
        smb encrypt = if_required

К сожалению, сейчас он работает нормально, и никто не говорит нам, что происходит между тем, когда это не так, и сейчас.

Я думаю, это было связано с сетью. QoS или IDS, что-то вроде этого.

Мы никогда не узнаем :(

Этот пост может быть закрыт

Судя по симптомам, это может быть вызвано TCP Windows. автотюнинг (Автоматическое согласование размера окна TCP) или разгрузка дымохода (разгрузка рабочей нагрузки на сетевой адаптер) технология не работает должным образом (возможно, потому, что один конец или какое-то старое сетевое оборудование между ними обычно не поддерживает автонастройку TCP)

Вы можете протестировать эти настройки на клиенте Windows 7:

Откройте командную строку от имени администратора и напишите следующие команды:

netsh int tcp set global autotuninglevel=disabled
netsh int tcp set global chimney=disabled

Затем перезагрузите компьютер и попробуйте еще раз. Скорость передачи должна быть значительно улучшена.

Если он не работает, вы можете вернуться к настройкам по умолчанию с помощью следующих команд:

netsh int tcp set global autotuninglevel=normal
netsh int tcp set global chimney=enabled