В первой части обзора CentOS 7 было рассказано о поддержке контейнеров Linux в Cent OS 7. Во второй части мы поговорили об управлении идентификацией. Третья часть обзора посвящена сетевой файловой системе NFS и ее окружению в CentOS 7. В конце поста ссылка на бесплатное тестирование CentOS 7 в облаке InfoboxCloud.
NFS
Сетевая файловая система NFS позволяет удаленным хостам монтировать файловые системы по сети и взаимодействовать с этими файловыми системами так, словно они смонтированы локально. В CentOS 7 поддерживаются две версии NFS: v3 и v4. NFSv3 поддерживает безопасные асинхронные записи и более надежную обработку ошибок по сравнению с NFSv2 и поддерживает 64-разрядные размеры файлов, позволяя клиентам получать доступ более чем к двум гигабайтам данный файлов. NFSv4 поддерживает работу через файрволы в интернете, больше не требует сервиса rcpbind, поддерживает списки контроля доступа ACL и использует операции с состоянием. В CentOS 7 была добавлена поддержка сетевой файловой системы NFS 4.1 с улучшенной производительностью и безопасностью, включая поддержку Parallel NFS на клиентской стороне. NFS 4.1 больше не требует отдельного TCP соединения для обратных вызовов, что позволяет серверу NFS работать даже за NAT и файрволлами. Новая версия включает в себя поддержку семантику ‘точно один раз’ (кроме операций перезагрузки), что позволяет решить проблему, когда операция могла вернуть не правильный результат, если ответ был потерян и операция была запрошена дважды (обеспечивается сессиями с состоянием). NFS 4.1 использует стандартные сетевые протоколы для лучшей производительности в перегруженных сетях. NFS поверх TCP позволяет сетевым картам последнего поколения использовать функцию TCP segmentation offload (TCO), освобождая ресурсы CPU для полезной работы. При передаче данных с использованием TCP/IP часто приходится разбивать блоки данных большого размера на несколько маленьких, это связано с ограничениями протокола. Такой процесс разбиения называется сегментацией. Обычно в процессе сегментации используется центральный процессор. Сетевой адаптер, снабженный функцией TCP Segmentation, освобождает процессор компьютера от выполнения функции сегментации и берет ее на себя. Для развертывания и поддержки более безопасных окружений, NFSv4.2 labeled NFS позволяет использовать контексты SELinux, в том числе безопасные домашние директории виртуальных машин, хранящиеся в NFS. CentOS 7 поддерживает клиенты NFSv3, NFSv4 и NFSv4.1. По-умолчанию клиенты пытаются смонтировать NFSv4 и переключаются на NFSv3, если попытка не удалась. NFSv4 требует TCP, в то время как NFSv3 может работать по UDP (из за возможности работы по сети без состояния). Если сервер неожиданно станет недоступен, клиенты, работающие по UDP, продолжат отправлять запросы серверу. Так же, когда фрейм теряется с UDP, весь RPC запрос должен быть передан заново, а при использовании TCP только потерянный фрейм должен быть отправлен заново. Поэтому рекомендуется использовать TCP для работы с сервером NFS. Протоколы монтирования и блокировок были включены в протокол NFSv4. NFSv4 больше не взаимодействует с rcpbind, lockd и rpc.statd. NFS серверу по-прежнему требуется rcp.mountd для настройки экспортов, но не участвует в каких-то других операциях. Настройки NFS сервера, разрешающие доступ клиентам, по-прежнему находятся в /etc/exports. Сервер по-прежнему слушает TCP порт 2049, поэтому не забудьте разрешить его в IPTables.
FedFS
Другая интересная особенность CentOS 7 – поддержка федеративной файловой системы FedFS. FedFS предоставляет набор открытых протоколов, которые позволяют строить масштабируемые пространства имен между множеством файловых серверов с использованием системных ссылок NFSv4, доступные немодифицированным клиентам NFS.
pNFS
В CentOS 7 развивается поддержка pNFS, которая позволяет масштабировать NFS на обычные NAS для обеспечения возможности клиентам читать и писать данные напрямую и параллельно на физические хранилища. Параллельная архитектура pNFS позволяет множеству серверов NFS управлять мета-данными и координировать доступ, обеспечивая предсказуемый и надежный доступ к очень большим наборам данных от многих клиентов. pNFS layouts поддерживаются в CentOS 7. Полноценной поддержки pNFS пока нет. Результаты тестов pNFS. Исследование проводилось на Red Hat Enterprise Linux 7 с ядром 3.10.0.119 RC1 с OracleR2 OLTP. Для тестирования использовался кластер из 2х нод с pNFS клиентами. Достигнуто почти 250 000 транзакций в минуту со 100 пользователями. Использованные в подготовке статьи источники: New world of NFSNFS & GFS2Oфициальный блог RedHatБаза знаний RedHatОфициальный блог CentOS
Пробная версия в облаке бесплатно
Специально для наших читателей мы обеспечили возможность попробовать CentOS 7 в облаке InfoboxCloud. Регистрируйте пробную версию на 15 дней по этой ссылке. Если вам нужно больше ресурсов для тестирования, чем в пробной версии — напишите на trukhinyuri@infoboxcloud.com
NFS очень удобен для шаринга ресурсов между Linux машинами в локальной сети, однако нужно помнить, что доступ разрешается на уровне хостов, а не пользователей. Будьте внимательны с тем, кому даёте доступ.
Итак, настройка на самом деле очень банальна и проста. Рассмотрим на примере CentOS 7, к большинству других систем подойдет с минимальными коррективами.
Первым делом нужно установить пакет, включающий в себя клиентские и серверные утилиты для сервиса nfs, встроенного в ядро Linux:
yum install nfs-utils
Далее прописать в файл /etc/exports необхоимые шары:
/mnt/mybigdisk 100.64.0.2(rw,no_root_squash,sync)
где:
/mnt/mybigdisk — путь до директории, которую будем шарить
100.64.0.2 — ip клиента, которому будем шарить (ещё раз вспоминаем про безопасность)
(rw,no_root_squash,sync) — собственно опции, в данном случае разрешаем RW доступ(запись), разрешаем доступ руту, разрешаем подтвержение записи только после фактически проведенной записи на диск (медленнее, но надежнее, если у вас требования обратные — используйте опцию async)
После можно запускать сервис
systemctl start nfs
и добавить его в автозапуск
systemctl enable nfs
Готово, можно подключаться с клиента. Пример строчки для добавления в fstab на клиенте:
100.64.0.2:/mnt/mybigdisk /mnt/disk_on_another_server nfs rsize=8192,wsize=8192,timeo=14,intr 0 0
где:
100.64.0.2 — ip сервера, на котором работает NFS сервер
/mnt/mybigdisk — абсолютный путь до шары на удаленном сервере
/mnt/disk_on_another_server — локальная папка, в которую будем монтировать шару.
Дальше чтобы это дело примонтировать без перезагрузки даем команду на клиенте:
mount /mnt/disk_on_another_server
Всё, у нас есть доступ на удаленную шару по NFS протоколу.
P.S. если на сервере были добавлены новые шары и требуется перечитать конфиг можно вместо перезапуска сервиса воспользоваться командой exportfs -a
Используемые источники:
- https://habr.com/post/231955/
- https://tech4fun.ru/2017/11/13/setting-up-nfs-server-on-centos-7/