Вопрос или проблема
У меня есть кластер CentOS (версия 7) с несколькими узлами. Проблема в том, что master-узел не распознает их узлы.
Я использую slurm
18.08.8. Я использую команду sbatch
для запуска своей программы, но получаю следующую ошибку:
Узлы, требуемые для задания, ВЫКЛЮЧЕНЫ, ОТЦЕПЛЕНЫ или зарезервированы для заданий в приоритетных разделах
Эта проблема началась, когда кластер внезапно отключился из-за отключения электроэнергии.
Master-узел распознает другие узлы в кластере, но, так как они были выключены вне slurm, контроллер slurm не может знать, что они теперь функциональны. Для каждого узла в кластере выполните
scontrol: update NodeName=cnxx State=DOWN Reason="undraining"
scontrol: update NodeName=cnxx State=RESUME
где cnxx – это имя узла. Вы можете использовать стандартные диапазоны узлов, если это уместно. Кстати, slurm 18.x не поддерживается уже более 6 лет, и CentOS 7 также достиг конца срока службы.
Ответ или решение
Проблема: Главный узел кластера SLURM не может найти другие узлы
При работе с вычислительными кластерами под управлением SLURM может возникнуть множество проблем, особенно после внезапных выключений, таких как сбой питания. В вашем случае главный узел (мастер-узел) кластера CentOS 7 с установленной версией SLURM 18.08.8 не распознает другие узлы, что может привести к ошибке при запуске задач с помощью команды sbatch
. Давайте разберемся в возникшей ситуации и предложим решение.
Признаки проблемы
Вы упомянули, что при выполнении команды sbatch
получаете сообщение об ошибке:
Nodes required for job are DOWN, DRAINED or reserved for jobs in higher priority partitions
Это указывает на то, что SLURM считает узлы кластера недоступными (DOWN) или находящимися в состоянии DRAINED (выведены из эксплуатации). Во многих случаях такая ситуация возникает, если узлы были неожиданно выключены и SLURM не получил соответствующих уведомлений для обновления своего состояния.
Проверка состояния узлов
Первоначальный шаг — проверить состояние узлов в кластере. Для этого можно использовать команду:
sinfo
Эта команда покажет текущее состояние всех узлов в вашей системе. Если вы увидите, что узлы находятся в состоянии DOWN или DRAINED, то потребуется выполнить их обновление.
Решение проблемы
Чтобы внести необходимые изменения в состояние узлов, необходимо использовать команду scontrol
. Для каждого узла выполните следующие команды:
scontrol update NodeName=cnxx State=DOWN Reason="undraining"
scontrol update NodeName=cnxx State=RESUME
Здесь cnxx
— это имя вашего узла. Вы можете использовать диапазоны имен узлов, если это соответствует вашей конфигурации. Обратите внимание, что команда update
изменяет состояние узла на DOWN с указанной причиной, а затем команда RESUME
восстанавливает его работоспособность.
Пример выполнения для узлов с именами cn1 и cn2:
scontrol update NodeName=cn1 State=DOWN Reason="undraining"
scontrol update NodeName=cn1 State=RESUME
scontrol update NodeName=cn2 State=DOWN Reason="undraining"
scontrol update NodeName=cn2 State=RESUME
Обстоятельства, которые стоит учитывать
Важно отметить, что вы используете неподдерживаемую версию SLURM (18.x) и операционную систему CentOS 7, которая также вышла из активной поддержки. Рекомендуется рассмотреть возможность обновления до более новой версии SLURM и переход на более свежие дистрибутивы Linux, чтобы обеспечить стабильность и безопасность вашего кластера.
Заключение
Проблема, с которой вы столкнулись, связана с состоянием узлов после внезапного отключения питания. Обновление состояния узлов с помощью команд scontrol
должно решить проблему распознавания узлов мастер-узлом. Поддержание актуальности программного обеспечения и оперативной системы также поможет избежать подобных ситуаций в будущем.