Почему установленный CIFS общий ресурс быстрее, чем SMB?
Начнем с того, что этот вопрос на самом деле не проблема, а "почему это так". Я пытаюсь вернуться в Linux после нескольких лет в мире Windows, но я потерял так много... Так что здесь для изучения заново.:)
У меня есть компьютер с Windows 10 x64, выполняющий роль файлового сервера в моей сети. Я получаю доступ к акциям от Ubuntu Mate 16.04. Основной файловый браузер - Caja.
Вот хорошая часть: когда я просматриваю сетевые ресурсы в моей сети и начинаю копировать файл, максимальная скорость составляет около 600 Мбит. Но когда я монтирую ресурс постоянно в Fstab с CIFS (согласно https://help.ubuntu.com/community/MountWindowsSharesPermanently), я могу использовать свою полную скорость соединения (1 Гбит). Я также могу использовать полную скорость соединения при использовании smbclient через терминал.
Может кто-нибудь объяснить мне, почему это происходит с Кахей (и Наутилусом из того, что я могу рассказать), и, возможно, дать мне несколько ссылок, где я могу прочитать больше об этом? Разве CIFS и SMB не одно и то же?
Спасибо!
Обновление: я использую сетевую карту Intel I217-V (версия 04).
1 ответ
SMB - это блок сообщений сервера, который был изобретен IBM для записи файлов по сети LAN. CIFS - это общая файловая система Интернета. CIFS - это особая реализация SMB, разработанная Microsoft.
1.) CIFS-реализация SMB редко используется в наши дни. Большинство современных систем хранения больше не используют CIFS, они используют SMB 2 или SMB 3. В мире Windows SMB 2 является стандартом для Windows Vista (2006), а SMB 3 является частью Windows 8 и Windows Server 2012.
2.) SMB 2 и SMB 3 - это масштабные обновления по сравнению с реализацией CIFS.
Теперь следует иметь в виду (размер окна TCP * 8 бит / RTT в миллисекундах) = максимальная пропускная способность TCP в бит / с. Хотя у вас может быть гигабитная сеть, один поток TCP вряд ли сможет достичь такого высокого уровня.
Теперь для оптимизации конфигурации SMB:
[global]
СМ. https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=798532
strict allocate = Yes
СМ. https://lists.samba.org/archive/samba-technical/2014-July/101304.html
allocation roundup size = 4096
Разрешить чтение 65535 байт в одном пакете
читать сырой = да
Подписание сервера замедляет работу.
server signing = No
Поддержка RAW пишите.
write raw = Yes
"строгая блокировка = авто" ИЛИ "строгая блокировка = нет" является допустимым.
strict locking = No
параметры сокета = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF = 131072 SO_SNDBUF = 131072
"минимальный размер получаемого файла" будет передан непосредственно в ядро, recvfile/splice SYSTEM CALL.
min receivefile size = 16384
Используйте более эффективный системный вызов sendfile()
use sendfile = Yes
Самба должна быть построена с поддержкой асинхронных файлов Поддержка ввода-вывода
aio read size = 16384
aio write size = 16384
Также в моем случае мне нужно было изменить порядок поиска имен в nsswitch.conf. Оказывается, эта конфигурация содержала такую строку.
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
Простое добавление "wins" в строку hosts решило проблему.
hosts: files wins mdns4_minimal [NOTFOUND=return] dns mdns4