← На главную

Команда выпустила утилиту nfs-doctor для отладки клиентов NFS

02.05.2026 12:48 · hackernews

Команда разработчиков выпустила новый утилиту nfs-doctor, написанную на C, для быстрой отладки серверов NFS с клиентской стороны. Программа принимает один IP или хостнейм и сразу проверяет типичные точки отказа: сеть, сервис rpcbind, версии NFS, mountd, права доступа, root_squash, блокировки и устаревшие дескрипторы. Это не панацея и не замена глубокой аналитике со стороны сервера, но инструмент отлично помогает определить, проблема в сети, конфигурации, правах UID/GID или в чём-то более странном. В свежей версии добавлено множество возможностей: проверка доступности портов 111 и 2049, чтение карты RPC с учетом IPv6, автоматическое перечисление экспортов через mountd, тестирование версий от v2 до v4.2 с фолбэком на старые версии, анализ опций монтирования из /proc/self/mountinfo и захват метрик задержки из /proc/self/mountstats. Инструмент умеет проверять POSIX ACL, xattrs, контексты SELinux, выполнять операции ввода-вывода, включая copy_file_range и O_DIRECT, а также симулировать работу разных пользователей с помощью setuid и setgid.

Утилита генерирует отчёты в разных форматах: компактный текст, цветной вывод с прогресс-барами, иерархические JSON-файлы для автотестов и самостоятельные HTML-отчёты с CSS. Для развертывания на Debian или Ubuntu достаточно установить build-essential, pkg-config, libtirpc-dev и nfs-common, а на RHEL/Fedora нужны gcc, make, pkgconf-pkg-config и nfs-utils. Команда работает в безопасном режиме dry-run без реального монтирования, поддерживает изоляцию в отдельном mount-namespace и rate-limiting для избежания перегрузки сети. Авторы предупредили, что результаты сильно зависят от окружения: правила фаервола, загрузка сервера и настройки ядра могут повлиять на тесты. Например, отсутствие ошибки ESTALE не гарантирует её невозможность в реальности. Кроме того, производительность здесь представлена лишь как "дымовой тест", а полные метрики требуют внешних бенчмарков типа fio. В код внесена модификация архитектуры на модули для предотвращения утечек файловых дескрипторов и миграция на poll(). Разработчики добавили набор Docker-файтингов для репродуцирования проблемных сценариев, таких как недоступный rpcbind или пустые экспорты. Используйте этот инструмент как быстрый диагностический помощник, но не единственное доказательство истины, особенно когда дело касается SELinux или ACL, которые могут показывать только общие ошибки доступа.

Читать оригинал →