Типичным способом настройки высокодоступной файловой системы NFS в среде Solaris Cluster является использование агента HA-NFS (SUNW.nfs). Агент SUNW.nfs просто организует общий доступ к файловым системам, которые следует экспортировать.
При поддержке ZFS как файловой системы, выполняющей переключение при отказе SUNW.HAStoragePlus, существует 2 способа настройки высокодоступной файловой системы NFS с ZFS в качестве нижележащей файловой системы. Они приведены ниже.
В обоих приведенных выше подходах HA-NFS работает корректным образом только при использовании агента SUNW.nfs (т.е. вариант 2), и в этом блоге объясняется причина необходимости в SUNW.nfs для настройки высокодоступной файловой системы NFS в среде кластера с ZFS.
Повторный запрос блокировки клиентами (NFSv[23])
statd(1M) отслеживает клиенты и процессы, устанавливающие блокировки на сервере. Сервер может использовать эту информацию для того, чтобы разрешить клиенту выполнить повторный запрос блокировки после перезагрузки/переключения при отказе.
При общем доступе к файловой системе с помощью включенного свойства ZFS без использования SUNW.nfs информация о блокировке хранится по адресу /var/statmon, который принадлежит локальной файловой системе и зависит от узла. Поэтому в случае переключения при отказе хранимая информация недоступна на том компьютере, на который произошло переключение при отказе сервера. По этой причине сервер не может отправлять запросы клиентам на повторную блокировку.
Эту проблему решает агент SUNW.nfs, который хранит сведения, необходимые для управления, в стабильном хранилище (оно находится на дисках с несколькими портами), которое доступно со всех узлов кластеров.
Информация о состоянии клиентов (NFSv4)
NFSv4 – это протокол с сохранением состояния, где nfsd(1M) отслеживает состояние клиента (наподобие открытых или закрытых файлов) в стабильном хранилище.
При общем доступе к файловой системе со включенным свойством sharenfs системы ZFS стабильное хранилище находится по адресу /var/nfs, который недоступен со всех узлов кластера. В этом случае при переключении сервера при отказе происходит сбой повторных запросов клиентов, что может привести к завершению работы клиентских приложений (в случае, если они не перехватывают сигнал SIGLOST).
Эта проблема решена с помощью агента SUNW.nfs, который хранит информацию о состоянии в стабильном хранилище, которое является общим для узлов кластеров и помогает серверу сделать так, чтобы клиенты выполнили повторные запросы своего состояния.
Это различие проиллюстрировано ниже.
HA-NFS без SUNW.nfs |
![]() |
HA-NFS с SUNW.nfs |
![]() |
Говоря точнее, свойство sharenfs файловой системы zfs не предназначено для работы в среде Solaris Cluster, поэтому использование агента SUNW.nfs обязательно для HA-NFS в ZFS.
P.S:
Стабильное хранилище, где SUNW.nfs хранит информацию, находится в высокодоступной файловой системе ZFS (что является значением свойства расширения PathPrefix типа ресурса SUNW.nfs ).
Венкатешварлу Телла (Venku)
Solaris Cluster Engineering