Ubuntu 12.04 LTS - монтирование CIFS через fstab очень медленно. В 10 раз быстрее подключение в графическом интерфейсе

Я использую машину Ubuntu 12.04 LTS в качестве виртуальной машины на сервере ESXi 5.5. У меня есть два разных монтирования CIFS, одно на сервере Windows 2008 R2 и одно на сервере Windows 2012 R2. Я установил монтирование в /etc/fstab с переключателем noauto, а команда монтирования вызывается через /etc/rc.local (fstab не обрабатывал достаточно быстро, чтобы мой MythTV DVR использовал каталоги, поэтому я перешел на rc.local маршрут). В моей сети работает домен Active Directory, и я аутентифицируюсь как пользователь домена.

Я вижу ужасную производительность по сравнению с CIFS для обоих серверов Windows. Ничего о 5 МБ / с в любом направлении и обычно это больше похоже на 1 МБ / с или даже медленнее. Запуск iperf на любом из моих компьютеров с Windows возвращает скорость 98 МБ / с, поэтому я знаю, что это не проблема сети.

Вот интересная часть: если я размонтирую монтирование cifs, а затем смонтирую их через графический интерфейс (просмотр сети и т. Д., Аутентификация), скорость сети возрастает в геометрической прогрессии - 50 МБ / с и выше. Если я размонтирую, а затем выполню команды mount, которые находятся в rc.local, трафик снова будет невероятно медленным.

Может кто-нибудь объяснить, почему эти два метода дали бы такие разные результаты? Я вставлю код из соответствующих файлов ниже. Заранее спасибо.

smb.conf точки монтирования:

//192.168.2.93/mythtv /var/lib/mythtv/recordings3    cifs  rw,user=xxxx,password=xxxx,noauto,uid=104,gid=106,file_mode=0755,dir_mode=0775 0 0
//192.168.2.91/mythtv /var/lib/mythtv/recordings4    cifs  rw,user=xxxx,password=xxxx,noauto,uid=104,gid=106,file_mode=0755,dir_mode=0775 0 0

Глобальные настройки моего smb.conf, включая параметры сокета, которые я сделал при устранении неполадок:

[global]
workgroup = MYAWESOMEWORKGROUP
server string = %h server (Samba, Mythbuntu)
log file = /var/log/samba/log.%m
max log size = 1000
syslog = 1
panic action = /usr/share/samba/panic-action %d
dns proxy = no
security = share
max protocol = NT1
socket options = TCP_NODELAY SO_RCVBUF=65536 SO_SNDBUF=65536 SO_KEEPALIVE
follow symlinks = yes
wide links = yes
unix extensions = no

И, наконец, строки в /etc/rc.local:

 mount /var/lib/mythtv/recordings3
 mount /var/lib/mythtv/recordings4

ОБНОВЛЕНИЕ: Таким образом, я сделал больше копания и нашел больше деталей, но все еще ничего, что могло бы это исправить.

Похоже, крепление GUI под капотом использует GVFS. Я нашел несколько других сообщений от людей, имеющих подобные проблемы. Некоторые из них имеют прямо противоположную проблему, когда передача файлов происходит медленно в GVFS, но быстро в CIFS.

Передача файлов на мою машину с сервером Server 2008 R2 с использованием GVFS происходит немного быстрее, чем я думал, но ничего особенного - около 25 МБ / с. Таким образом, кажется, что самая большая проблема связана с моим Windows 2012 R2 (все еще менее 1 МБ / с). Я смотрел на вещи с точки зрения Windows и отключил подпись SMB без каких-либо изменений в поведении. Я также заметил, что сервер 2012 года работает под управлением SMB 3.02, и версия Samba на моем компьютере с Linux не поддерживает более высокую версию, чем SMB 2. Я пытался перевести Windows на SMB 2 безрезультатно.

Я также заметил интересную несоответствие между настройками etc / fstab и результатами в /proc/mounts - я возился с параметром rsize в fstab и заметил, что / proc / mounts не всегда правильно отражает изменения, Если ничего не установлено, мои монтирования CIFS отображаются в маунтах с rsize=16384. Если я изменю rsize на 4096, это будет отображаться правильно. Но если я попробую что-нибудь выше 16384, размер rsize в mounts изменится на 2048. Почему это так? Какой размер rsize мне следует использовать и какой размер использует gvfs?

Стоит отметить, что все файлы, скопированные по cif-файлам, представляют собой очень большие записи 1080p (от 1 до 30 ГБ), а диск конечного компьютера отформатирован с наибольшим размером кластера, который позволял бы Server 2012 R2.

ОБНОВЛЕНИЕ 2: Хорошо, я разобрался, как сделать это / почти / пригодным для использования. Благодаря многим исследованиям я обнаружил, что могу добавить файл cifs.conf в /etc/modprobe.d, содержащий следующее:

options cifs CIFSMaxBufSize=130048

После добавления этого файла мой файл / proc / mounts показал увеличенный размер буфера в файлах cifs, и моя система почти работает. Я говорю почти потому, что теперь я могу фактически транслировать записи DVR, если система больше ничего не делает, а скорость копирования файлов составляет несколько МБ / с.

0 ответов

Другие вопросы по тегам