У меня два VPS - один работает под управлением 2008 Server R2, а другой - установка Ubuntu 12.04. Я использую Windows VPS для сеансов RD для Quickbooks и пары других приложений и использую Ubuntu VPS в качестве хранилища файлов NFS, а также в качестве конечной точки OpenVPN. Проблема в том, что производительность NFS через VPN просто ужасна, и под этим я имею в виду, что часто она даже не подключается и часто отключается.
Если я настрою NFS за пределами туннеля, производительность будет хорошей ... не очень, но управляемой, поэтому я знаю, что это туннель VPN.
Есть ли какие-нибудь настройки для openvpn или NFS, с которыми я могу поиграть, чтобы повысить производительность?
Несколько вещей, которые стоит попробовать:
Посмотрите на следующие параметры в OpenVPN: фрагмент, mssfix, link-mtu. По сути, все, что связано с размером пакета и фрагментацией. Слишком маленькие пакеты VPN могут снизить производительность из-за фрагментации пакетов NFS. OTOH, слишком большие пакеты VPN могут ухудшить производительность, потому что некоторые маршрутизаторы плохо их обрабатывают. Здесь сложно нарисовать простое общее правило.
Попробуйте включить / отключить сжатие в OpenVPN и посмотрите, как это влияет на производительность.
Убедитесь, что ваш VPN-сервер использует для транспорта UDP, а не TCP.
На стороне клиента NFS посмотрите на параметры: retrans, rsize, wsize - или что-нибудь еще, связанное с размером пакета и обработкой ошибок. В зависимости от вашей ситуации меньшие размеры пакетов могут фактически улучшить производительность (в локальной сети обычно бывает наоборот).
Однозначного ответа на этот тип проблемы нет, но проблема, скорее всего, находится в областях, указанных выше.
Я сделал все настройки, чтобы получить оптимальную производительность NFS по каналу ipsec, а «ls / mnt / remote1 / etc» все еще занимал 12,5 с. (я нахожусь на расстоянии 280 мс, и 13 Мбит / с / 2 Мбит / с - мое самое медленное соединение)
После некоторых поисков я продолжал наталкиваться на WebDAV в качестве альтернативы. Я использую Apache с webdav и davfs2 на клиенте для монтирования общего ресурса. При такой настройке ls увеличилось с 12,5 до 1,5 секунд, а скорость загрузки составила 10 Мбит / с. Теперь очень удобно.
Если вам нужен root-доступ, вам нужно собрать apache с "CFLAGS = -DBIG_SECURITY_HOLE". Для меня это нормально, поскольку все пользователи имеют root-доступ, и я также обслуживаю webdav только через туннель ipsec.
Я играл с конфигурацией NFS с openvpn на ADSL-соединении, я пробовал разные варианты монтирования NFS, здесь вы можете найти полный пост: NFS через OpenVPN через ADSL (или медленное соединение)
Я цитирую здесь интересные части: я прочитал много сообщений и попробовал разумное подмножество предлагаемых решений, это краткое изложение лучших советов:
Для пользователей Linux, вот небольшой пример конфигурации fstab для мягких креплений:
servername:/shared/ /mnt/foldername/ nfs rw,suid,dev,soft,exec,nouser,async,noauto,timeo=100,user,rsize=1024,wsize=1024,tcp 0 0
а здесь для жестких креплений:
rw,suid,dev,intr,exec,nouser,async,noauto,timeo=100,user,rsize=1024,wsize=1024,tcp 0 0
NFS через vpn + adsl по-прежнему очень медленный (на данный момент я передаю файлы со скоростью около 150 КБ / сек, и это намного лучше, чем без предлагаемых изменений). Учтите, что мой 7-мегабитный ADSL имеет пропускную способность загрузки 800 КБ / сек.
PS: Я также проверю фрагментацию openvpn позже, спасибо, что поделились. Надеюсь, что мои выводы тоже пригодятся.
PS2: Эти советы отлично сработали в моей среде, и я получил два положительных отзыва от разных ребят.
Эти советы от Фабиано Тарлао очень полезны: https://thegoodcodeinn.blogspot.be/2015/06/nfs-over-openvpn-over-adslor-slow.html?showComment=1488621905080#c2984550821264645538
Я использую этот параметр ядра в моем Casper Netboot через туннель между сайтами OpenVPN:
NFSOPTS=tcp,intr,timeo=100,rsize=1024,wsize=1024