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 МБ / с и выше. Если я размонтирую, а затем выполню команды монтирования из rc.local, трафик снова будет невероятно медленным

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

smb.conf mountpoints:

//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, если система больше ничего не делает, а скорость копирования файлов составляет несколько МБ / с.

2
задан 8 April 2015 в 01:20

0 ответов

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

Похожие вопросы: