Разумно ли использовать NFS на рабочем веб-сервере?
Можно ли разумно использовать NFS на производственных серверах в качестве средства подключения вычислительного сервера к серверу хранения, при условии, что соединение осуществляется через соединение LAN 1 или 10 Гбит / с?
Очевидно, есть некоторые накладные расходы на сеть, и NFS кажется особенно медленным с записью, если у вас включен режим синхронизации. В остальном он кажется достаточно легким и масштабируемым, насколько я могу судить, но лично у меня мало опыта в этом. Я ошибаюсь?
Проблема в том, что у меня есть сервер прямо сейчас, который действует как хранилище и как веб-сервер, но в конечном итоге мне придется разделить два, вероятно, в будущем, и учитывая, что некоторые запросы должны проходить через уровень веб-приложения для аутентификации. Перед инициализацией передачи файлов с этим программным обеспечением возникают проблемы. Сетевое монтирование fs - это самый простой вариант, я просто ... не знаю, подходит ли он.
Я также планирую попробовать использовать локальное кеширование с NFS, что должно немного улучшить производительность, но я не уверен, достаточно ли этого.
Что касается альтернатив, то есть только iSCSI, о котором я знаю как о реальном конкуренте, и большинство людей, кажется, рекомендуют NFS по сравнению с другими менее известными.
Ответы
NFS в порядке, за исключением некоторых других критериев, а именно:
- Обе задействованные системы могут изначально использовать NFS. Windows здесь не в счет, это вроде работает, но у нее много причуд, и с ней часто сложно работать при работе с NFS в кроссплатформенной среде (а если это просто Windows, используйте SMB3, он устраняет большинство из других проблем с NFS). Обратите внимание, что на стороне клиента это означает поддержку на уровне ядра, поскольку реализация на уровне пользователя либо должна иметь дело с проблемами эффективности, присущими использованию чего-то вроде FUSE, либо она должна быть напрямую связана с приложением, которому требуется доступ к доля.
- Вы правильно проверили, как клиент NFS обрабатывает перезапуск сервера NFS. Это включает как саму ОС (что в большинстве случаев должно быть хорошо), так и программное обеспечение, которое будет обращаться к общему ресурсу. В частности, на некоторых клиентских платформах требуется особая осторожность, когда программное обеспечение, использующее общий ресурс, удерживает файлы открытыми в течение длительных периодов времени, поскольку не все реализации клиента NFS корректно обрабатывают перезапуски сервера путем явного повторного монтирования и повторной проверки блокировок и дескрипторов файлов, как должны (что приводит к всевозможным проблемам с клиентским программным обеспечением). Обратите внимание, что вам следует повторно проверять это каждый раз, когда какая-либо часть стека обновляется или перенастраивается.
- Вы хотите настроить правильное сопоставление идентификаторов пользователей и групп. Это много, потому что без него вам либо нужно отразить сопоставления UID / GID между системами (выполнимо, но я бы с осторожностью настраивал SSO для внутренней сети для системы, выходящей в Интернет), либо вы получите потенциально серьезные последствия для безопасности (а именно, то, что вы видите в одной системе для разрешений, не совпадает с тем, что вы видите в других).
- Вы используете защищенное сетевое соединение или хотите правильно настроить аутентификацию для общего ресурса. Без аутентификации любой пользователь по ссылке может получить к ней доступ (а злонамеренный клиент может легко обойти основные средства управления дискреционным доступом UNIX).
Если вы соответствуете всем этим критериям и у вас достаточно быстрая сеть, все будет в порядке. Кроме того, если вы можете запускать jumbo-кадры, сделайте это, они очень помогут для любой сетевой файловой системы или сетевого блочного хранилища.
NFS абсолютно нормален и предпочтительнее iSCSI, поскольку NFS намного проще в управлении, совместном использовании и резервном копировании.
Мы уже много лет используем NFS для подключения нашей SAN к нашим серверам VMware ESXi, на которых работают сотни виртуальных машин. Не беда, вообще.
Узким местом является скорее система хранения, чем сетевой протокол.
Конечно, сетевое соединение должно быть достаточно быстрым, то есть Ethernet 10 Гбит или оптоволокно. Мы даже больше не заморачиваемся с отдельной сетью хранения.
iSCSI может быть немного быстрее ...
https://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/techpaper/storage_protocol_comparison-white-paper.pdf
https://www.hyper-v.io/whos-got-bigger-balls-testing-nfs-vs-iscsi-performance-part-3-test-results/
... но NFS, как и любой другой сетевой перенаправитель (SMB3, AFS / AFP и т. д.), допускает одновременный множественный доступ, что сложно с iSCSI или другими блочными протоколами.
https://forums.starwindsoftware.com/viewtopic.php?f=5&t=1392