Вы здесь

Учетные записи в Slurm

Пользователи и учёт

В Slurm есть две системы учёта пользователей. Первая система основана на системных учётных записях, хранит в служебных файлах обобщённую статистику истории запуска задач и используется для простой системы вычисления приоритетов - share. Вторая система - полноценная система биллинга использует БД для хранения полной истории запуска задач, системы учётных карточек (account), ограничений ресурсов (QOS) и т.п.

Первая система не требует использования БД и сохраняет текущую информацию в файлах:

assoc_mgr_state
assoc_usage
clustername
dbd.messages
fed_mgr_state
job_state
last_config_lite
layouts_state_base
node_state
part_state
priority_last_decay_ran
qos_usage
resv_state
trigger_state

Для запуска задач в первой системе достаточно завести пользователя на уровне ОС. Для второй системы необходимо зарегистрировать его в БД:

sacctmgr -i add user testuser DefaultAccount=root 

Ассоциация (Association)

Учёт ресурсов в Slurm ведётся с точностью до учётных ассоциаций, каждая из которых объединяет четыре понятия:

  • кластер;
  • учетную карточку (account);
  • имена пользователей;
  • необязательное имя раздела.

Существует порядок создания учетных ассоциаций. Сначала описываются кластеры, потом учетные карточки, и лишь потом пользователи.

Создание кластера

Кластер описывается в двух местах: в конфигурации Slurm и в учётной базе данных.

slurm.conf

AccountingStorageType=accounting_storage/slurmdbd
AccountingStoreJobComment=YES
ClusterName=uran

Создание записи в базе:

sacctmgr add cluster uran

Создание учетных карточек

  • Учетная карточка (Account) соответствует группе пользователей (например, участникам проекта);
  • Учетная карточка может содержать несколько пользователей или только одного;
  • Учетные карточки могут быть организованы как иерархическое дерево;
  • Верхний уровень иерархии имеет стандартное имя root;
  • Имя карточки должно быть уникальным и не может быть использовано повторно в другой ветви иерархии учетных карточек;
  • Пользователь может вписан в несколько учетных карточек, но должен иметь карточку по умолчанию (DefaultAccount).

Примеры команд для создания иерархии организации и иерархии внешних пользователей, работающих по договорам:

sacctmgr add account imm Description="Институт математики и механики" Organization=imm
sacctmgr add account imm_opo Description="Отдел программного обеспечения" Organization=imm_opo parent=imm
sacctmgr add account imm_opo_sector_1 Description="Сектор системного программирования" Organization=imm_opo parent=imm_opo

sacctmgr add account external Description="Внешние пользователи" Organization=external
sacctmgr add account dogovor_10 Description="Договор N10" Organization=external
sacctmgr add account dogovor_11 Description="Договор N11" Organization=external

Отображение созданных учетных записей:

sacctmgr show account
sacctmgr show account -s   # Показывает ассоциации связанные с аккаунтами

При добавлении или изменении учетной записи доступны следующие параметры:

  • Cluster= добавить учетную карточку в указанные кластеры. По умолчанию учетная карточка добавляется ко всем существующим кластерам.
  • Description= описание учетной записи. (По умолчанию - имя учетной записи)
  • Name= имя учетной записи.
  • Organization= организация на которую зарегистрирована учетная карточка. По умолчанию это организация родительской учетной карточки, если родительская учетная запись не является корневой. Если родитель root, то по умолчанию используется имя учетной записи.
  • Parent= сделать эту учетную запись дочерним элементом этой другой учетной записи (уже существующей).

Создание пользователей

Создание пользователя Slurm с именем xxx и учетной карточкой по умолчанию (обязательно) yyy:

sacctmgr create user name=xxx DefaultAccount=yyy

При необходимости пользователи могут также добавляться в дополнительные учетные карточки, например:

sacctmgr add user xxx Account=zzzz

Имя учетной карточки может указываться в пакетных заданиях пользователя, например, с помощью sbatch :

-A <account> или --account = <account> 

Список пользователей:

sacctmgr show user
sacctmgr show user -s
sacctmgr show account -s xxx

При добавлении или изменении пользователя доступны следующие параметры:

  • Account= Учетная карточка(и) для добавления пользователя (см. также DefaultAccount ).
  • AdminLevel= Это поле используется, чтобы позволить пользователю добавлять учетные привилегии этому пользователю. Возможные варианты:
    • None
    • Operator - может добавлять/изменять/удалять любой объект базы данных (пользователь, учетная запись и т. Д.) и добавлять других операторов. На SlurmDBD, обслуживаемом slurmctld, эти пользователи могут: просматривать информацию, которая блокируется для регулярного использования флагом PrivateData; создавать/изменять/удалять бронирование.
    • Admin - эти пользователи имеют тот же уровень привилегий, что и оператор в базе данных. Они также могут изменять что-либо в slurmctld, как если бы они были пользователем slurm или root.
  • Cluster= добавлять к ассоциациям только на этих кластерах (по умолчанию все кластеры)
  • DefaultAccount= учетная карточка по умолчанию. Используется, если учетная карточка не указана явно при запуске задания. (обязательный параметр).
  • DefaultWCKey= пользовательский ключ по умолчанию для пользователя, используемый, когда не указан WCkey при отправке задания. (Используется только при отслеживании WCkey .)
  • Name= имя пользователя
  • Partition= Название раздела Slurm, к которому относится данная ассоциация.

Изменение и удаление объектов

При изменении свойств объектов можно задавать параметры в стиле SQL, используя ключевые слова WERE и SET. Некоторые параметры, например имя объекта, изменить нельзя. Типичная команда имеет следующий вид:

sacctmgr modify <entity> set <options> where <options>

Например:

sacctmgr modify user set DefaultAccount=none where DefaultAccount=test

назначит всем пользователям с учетной карточкой по умолчанию "test" учетную карточку "none".

Удаление объектов аналогично изменению. Например, для удаления всех пользователей с учетной записью по умолчанию "test", используется следующая команда:

sacctmgr remove user where DefaultAccount=test

Удаление пользователя из учетной карточки:

sacctmgr remove user brian where Account=imm_opo

После того, как объект был добавлен, изменен или удален, соответствующие изменения отправляются соответствующим демонам Slurm и мгновенно становятся доступными для использования.

Примечание. В большинстве случаев удаленные объекты сохраняются, но помечены как удаленные. Если объект существовал менее 1 дня, то он будет удален полностью. Такое поведение предназначено для защиты от опечаток.

Использованы материалы со страницы https://wiki.fysik.dtu.dk/niflheim/Slurm_accounting