Как подсчитать количество NFS-клиентов, подключенных к вашему NFS-серверу?

Вопрос или проблема

Как узнать, сколько клиентов подключено к моему NFS серверу и их IP или имя хоста?

Быстрый метод, который должен работать везде, заключается в том, чтобы перечислить все подключенные сокеты к порту nfs через ss на сервере:

ss -a | grep nfs

Существуют также команды showmount:

showmount -a localhost

в руководстве:

showmount запрашивает демон монтирования на удаленном хосте, чтобы получить информацию о состоянии NFS сервера на этой машине. Без опций showmount выводит набор клиентов, которые монтируют с этого хоста. Вывод showmount предназначен для отображения так, как будто он был обработан через «sort -u».

Обратите внимание, что есть некоторые предупреждения:

Полнота и точность информации, отображаемой showmount, варьируются в зависимости от реализации сервера NFS.

Поскольку showmount сортирует и уникализирует вывод, невозможно определить из вывода, монтирует ли клиент один и тот же каталог более одного раза.

Таким образом, например, если клиент подключается несколько раз к одному и тому же монтированию, он появится только один раз в выводе showmount.
В этом случае с ss -a вы должны их поймать.

Начиная с ядра Linux 5.3, вы можете использовать специальный каталог под названием /proc/fs/nfsd/clients.

Вы можете проверить версию ядра с помощью команды uname -r.

Чтобы увидеть файлы, открытые клиентами:

# nfsdclnts
Inode number | Type   | Access | Deny | ip address            | Filename
8296109      | deleg  | r      |      | [2001:db8::ff:10]:1008| .sqlite_history
15617474     | open   | rw     | --   | [2001:db8::ff:10]:1008| .sqlite_history

(что отображает информацию, прочитанную из /proc/fs/nfsd/clients).

Чтобы перечислить клиентов, которые подключились, даже если они не открывали никаких файлов:

# rpcctl client
clnt-0: switch-0, xprts 1, active 1, queue 0
        xprt-0: tcp, 2001:db8::ff:10 [main]
clnt-1: switch-1, xprts 1, active 1, queue 0
        xprt-1: tcp, 127.0.0.1
clnt-2: switch-2, xprts 1, active 1, queue 0
        xprt-2: local, /var/run/gssproxy.sock [main]

(xprt — это сокращение от ‘транспорт’).

Ответ или решение

Определение количества клиентов, подключенных к вашему NFS-серверу, и их IP-адресов или имён хостов является важной задачей для администраторов, управляющих сетевыми файловыми системами (NFS). В современных условиях необходимо поддерживать высокую степень контроля и мониторинга, чтобы обеспечивать безопасность и стабильность работы серверов. Рассмотрим несколько методов, которые могут помочь в решении данной задачи.

Теория

NFS (Network File System) — это протокол распределенной файловой системы, который позволяет пользователям легко обмениваться файлами между компьютерами в сети. Проблема, с которой могут столкнуться администраторы, заключается в необходимости определить текущее количество клиентов, подключенных к NFS-серверу, а также собирать необходимую информацию о самих клиентах, такую как их IP-адреса или имена хостов.

Пример

  1. Использование команды ss

Команда ss позволяет просматривать информацию о сокетах. Применительно к NFS-серверу, она может быть использована для вывода списка всех подключенных сокетов, связанных с портом NFS. Например:

   ss -a | grep nfs

Эта команда выводит все активные сокеты, связанные с NFS, что позволяет получить список IP-адресов, подключённых клиентов.

  1. Команда showmount

showmount — инструмент, который запрашивает демон монтирования на удалённом хосте для получения информации о состоянии NFS-сервера:

   showmount -a localhost

Этот инструмент показывает, какие клиенты в настоящее время монтируют файловую систему с данного сервера. Однако есть некоторые ограничения: если клиент монтирует одну и ту же директорию несколько раз, он все равно будет отображаться только один раз.

  1. Директория /proc/fs/nfsd/clients (начиная с ядра Linux 5.3)

Эта специальная директория содержит информацию о клиентах, подключённых к NFS-серверу. Для использования этого метода сначала необходимо убедиться, что ваша система использует ядро Linux версии 5.3 или выше, запустив следующую команду:

   uname -r

Если версия ядра поддерживает это, вы можете просмотреть содержимое этой директории для получения информации о подключениях клиентов.

  1. Команда nfsdclnts

Эта команда выводит информацию о файлах, открытых клиентами:

   nfsdclnts

Данная команда считывает информацию из /proc/fs/nfsd/clients и предоставляет данные о номере inode, типе доступа, IP-адресе клиента и имени файла.

  1. Команда rpcctl client

Для получения информации о клиентах, подключившихся к серверу, даже если они не открывали файлы, можно использовать:

   rpcctl client

Этот метод поможет отследить все подключённые клиенты, включая те, которые не инициировали передачу данных, показывая протокол транспортировки (xprt), IP-адрес и прочие параметры.

Применение

Системные администраторы должны регулярно использовать эти инструменты в своей работе для поддержания актуального состояния серверного оборудования и быстрого реагирования на нежелательные изменения. Выбор конкретного метода зависит от текущей версии используемого ядра и конкретных требований инфраструктуры.

  1. Мониторинг и аудит: Запуск регулярных проверок подключённых клиентов позволяет не только отслеживать загрузку системы, но и предотвращать несанкционированный доступ.

  2. Оптимизация работы системы: Зная точное количество и характер активности подключённых клиентов, администраторы могут оптимизировать конфигурацию системы, перераспределять ресурсы и улучшать общую производительность.

  3. Устранение неисправностей: При возникновении проблем с производительностью системы или подозрительных действий, знание точного списка подключённых клиентов поможет быстрее диагностировать проблемы и принять необходимые меры.

В заключение, корректное использование перечисленных инструментов является критически важным элементом администрирования NFS-сервера. Это помогает поддерживать безопасность и высокую производительность системы, что особенно важно в современных условиях быстро развивающихся технологий и постоянного увеличения объёмов данных.

Оцените материал
Добавить комментарий

Капча загружается...