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

Как я могу улучшить производительность NFS в гигабитной локальной сети?

У меня есть сервер Solaris 10 с клиентами Mac OS X в гигабитной локальной сети. Сервер Solaris экспортирует общий ресурс NFS с поддержкой RAID-Z, и все клиенты подключаются к нему. Однако передача файлов происходит медленнее, чем я думаю. Я включил jumbo-кадры, что увеличило мою максимальную пропускную способность с 18 МБ / с до 30 МБ / с, но это все равно медленнее, чем я думаю. Я думаю, что текущее узкое место - это мой коммутатор, который, похоже, не может переключать столько пакетов в секунду, сколько могут отправить мои машины. Кроме того, обе машины используют около 30-40% ЦП для передачи.

Помимо замены переключателя, которую я планирую сделать, что я могу сделать, чтобы уменьшить использование ЦП и увеличить пропускную способность?

Часто Журнал намерений ZFS (ZIL) является узким местом NFS файлового сервера ZFS. ZFS очень строго подчиняется протоколу NFS и следит за тем, чтобы данные синхронной записи действительно попадали на диск, прежде чем сообщать об успешном завершении записи. ZFS использует ZIL для временного хранения этих данных, прежде чем записывать их в большем блоке в пул. Если запись в ваш ZIL идет медленно (высокая задержка), то производительность NFS, вероятно, тоже будет низкой. Хороший тестовый пример этой проблемы - извлечь большой архив (много файлов) для экспорта NFS.

Есть как минимум два решения для повышения производительности NFS:

  • Использовать выделенное быстрое запоминающее устройство для ЗИЛ (подумайте о NVRAM или SSD). Можно даже зеркало ЗИЛ сделать из двух устройств. Предупреждение: AFAIR невозможно удалить устройство ZIL после того, как вы добавили его в пул. Подумать дважды. Если вы хотите попробовать SSD для своего ЗИЛа, вы можете прочитать этот интересный пост в блоге: Довольно стабильный твердотельный накопитель
  • Отключить ЗИЛ на вашем файловом сервере ZFS. Что ж, это, конечно, нарушает обещание протокола синхронной записи с риском целостности данных, но это будет намного быстрее. Читать эта часть из Руководство по настройке ZFS Evil прежде чем попробовать эту альтернативу, убедитесь, что вы понимаете последствия.

Пара вещей:

  • Чтобы выяснить, является ли проблема переключателем, выньте переключатель из уравнения и проверьте. Подключите машины друг к другу и проверьте снова. Карты GigE автоматически перекрестно подключаются, специальный кабель не требуется.

  • После этого настройка NFS становится чем-то вроде черного искусства. Из того, что я видел, он имеет тенденцию быть очень специфичным для сервера NFS, а иногда и для клиента NFS. К счастью, у Google, кажется, есть много статей на эту тему. Прочитал кучу.

Пара подсказок:

  • попробуйте смонтировать сервер через SMB / CIFS и посмотреть, какую производительность вы получите
  • попробуйте выполнить тест с помощью ttcp или iperf, чтобы узнать, какова пропускная способность вашей сети от клиента к серверу

По нашему опыту, OS X NFS не является фантастическим (клиенты OS X, серверы Linux). Мы получаем лучшую производительность, используя самбу. YMMV!