Руководство по системному администрированию: контейнеры в Solaris - управление ресурсами и зонами

Глава 2 Проекты и задачи (обзор)

В этой главе рассматриваются средства управления ресурсами Solaris, связанные с проектами и задачами. Проекты и задачи используются для отметки рабочих нагрузок и их отделения друг от друга.

В этой главе рассматриваются следующие темы:

Для получения информации по использованию средств управления проектами и задачами см. Глава 3Администрирование проектов и задач.

Новые функции и возможности базы данных project и команд управления ресурсами в Solaris 10

В версии Solaris 10 были добавлены следующие усовершенствования:

В дополнение к информации, приведенной в этой главе и в Глава 6Элементы управления ресурсами (обзор), см. следующие справочные страницы:

В Solaris 10 5/08 к команде projmod добавлен параметр -A. См. Команды, используемые с проектами и задачами.

Полный список новых функций Solaris 10 и описание версий Solaris приведены в Solaris 10 What’s New.

Средства управления проектами и задачами

Для оптимизации времени отклика рабочих нагрузок необходимо сначала определить нагрузки, которые выполняются в анализируемой системе. Получить эту информацию методами, ориентированными только на процесс или только на пользователя, непросто. В системе Solaris предусмотрены два дополнительных средства для разделения и идентификации рабочих нагрузок. Эти проект и задача. Проект project обеспечивает общесетевой административный идентификатор для связанных работ. Задача объединяет группу процессов в управляемую сущность – компонент рабочей нагрузки.

Элементы управления, указанные в базе данных project службы имен, задаются на уровне процессов, задач и проектов. Поскольку элементы управления процессов и задач наследуются при системных вызовах fork и settaskid, они наследуются всеми процессами и задачами, создаваемыми внутри проекта. Для получения информации об этих системных вызовах см. справочные страницы fork(2) и settaskid(2).

Управление выполняющимися процессами осуществляется стандартными командами Solaris на основании членства в проекте или задаче. Отчеты подсистемы расширенного учета могут создаваться в отношении степени использования ресурсов как процессами, так и задачами, причем каждая запись маркируется идентификатором основного проекта. Этот процесс позволяет сопоставлять данные автономного анализа рабочих нагрузок с данными текущего наблюдения. Идентификатор проекта может быть общим для нескольких машин благодаря базе данных службы имен project. Таким образом, возможен анализ совокупного потребления ресурсов связанными рабочими нагрузками, которые выполняются (или располагаются) на нескольких машинах.

Идентификаторы проекта

Идентификатор проекта – это административный идентификатор, предназначенный для идентификации связанных работ. Идентификатор проекта представляет собой тег рабочей нагрузки, принципиально эквивалентный идентификаторам пользователей и групп. Отдельный пользователь или группа могут принадлежать одному или нескольким проектам. Эти проекты могут использоваться для представления рабочих нагрузок, в которых разрешается участвовать пользователю (или группе пользователей). Членство в этих проектах может служить основой для гибкого управления ресурсами, базирующегося, например, на степени использования или на начальном распределении ресурсов. Несмотря на то, что пользователю должен быть назначен проект по умолчанию, процессы, запущенные пользователем, могут быть связаны с любым проектом, членом которого является пользователь.

Определение проекта пользователя по умолчанию

Для успешного входа в систему пользователю должен быть назначен проект по умолчанию. Пользователь автоматически становится членом этого проекта по умолчанию, даже если этот пользователь не входит в список пользователей и групп, указанных для данного проекта.

Поскольку каждый процесс в системе является членом какого-либо проекта, требуется алгоритм, позволяющий присвоить проект по умолчанию процессу регистрации в системе или иному начальному процессу. Этот алгоритм описан на справочной странице getprojent(3C). Для определения проекта по умолчанию выполняется ряд последовательных действий. Если проект по умолчанию не обнаруживается, вход пользователя в систему или запрос запуска процесса отклоняется.

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

  1. Если в расширенной базе данных атрибутов пользователей /etc/user_attr для пользователя определена запись с атрибутом project, то в качестве проекта по умолчанию используется значение атрибута project. См. справочную страницу user_attr(4).

  2. Если в базе данных project присутствует проект с именем user.идентификатор_пользователя, то по умолчанию используется этот проект. Для получения дополнительной информации см. справочную страницу project(4).

  3. Если в базе данных project присутствует проект с именем group.имя_группы, где имя_группы соответствует группе по умолчанию для данного пользователя, как указано в файле passwd, то по умолчанию используется этот проект. Для получения информации о файле passwd см. справочную страницу passwd(4).

  4. Если в базе данных project присутствует особый проект default, то этот проект используется по умолчанию.

Эта логика обеспечивается библиотечной функцией getdefaultproj(). Для получения дополнительной информации см. справочную страницу getprojent(3PROJECT).

Установка атрибутов пользователя командами useradd , usermod и passmgmt

Для установки атрибутов пользователей в локальных файлах используются перечисленные ниже команды с параметром -K и парой ключ=значение:

passmgmt

Изменение пользовательской информации.

useradd

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

usermod

Изменение пользовательской информации.

Могут использоваться следующие локальные файлы:

Если для дополнения локального файла дополнительными записями используется сетевая служба имен, такая как NIS, информация, предоставляемая сетевой службой имен, не может изменяться этими командами. Однако эти команды производят сверку следующих данных с информацией из внешней базы данных службы имен:

Для получения дополнительной информации см. справочные страницы passmgmt(1M), useradd(1M), usermod(1M) и user_attr(4).

База данных project

Данные о проектах могут храниться в локальном файле, в карте проектов сетевой информационной службы (NIS), либо в службе каталогов протокола LDAP. Файл /etc/project или служба имен используются подключаемым модулем аутентификации (PAM) для связывания пользователя с проектом по умолчанию при входе в систему, а также при всех запросах на управление учетными записями.


Примечание –

Обновления записей в базе данных проектов, будь то файл /etc/project или представление базы данных в сетевой службе имен, не применяются к проектам, активным в текущий момент. Обновления применяются к новым задачам, присоединяющимся к проекту, при использовании команд login или newtask. Для получения дополнительной информации см. справочные страницы login(1) и newtask(1).


Подсистема PAM

К операциям, изменяющим или задающим идентификаторы, относятся вход в систему, вызов команд rcp и rsh, а также использование ftp и su. Если в ходе выполнения операции изменяется или задается идентификатор, то для аутентификации, управления учетными записями, управления параметрами доступа и управления сеансами используется набор настраиваемых модулей.

Описание модуля управления учетными записями проектов PAM см. на справочной странице pam_projects(5). Обзор PAM приведены в разделе Глава 17, Using PAM, в System Administration Guide: Security Services.

Настройка служб имен

Для управления ресурсами могут использоваться базы данных project службы имен. Место хранения базы данных project указывается в файле /etc/nsswitch.conf. По умолчанию первым в списке приводится пункт files, однако источники можно указывать в любом порядке.


project: files [nis] [ldap]

Если указано более одного источника информации о проектах, файл nsswitch.conf заставляет процедуру выполнить поиск информации в первом указанном источнике, а затем в последующих.

Для получения дополнительной информации о файле /etc/nsswitch.conf см. раздел Глава 2, The Name Service Switch (Overview), в System Administration Guide: Naming and Directory Services (DNS, NIS, and LDAP) и nsswitch.conf(4).

Формат локального файла /etc/project

Если в качестве источника базы данных project в файле nsswitch.conf выбрано значение files, процесс регистрации выполняет поиск информации о проекте в файле /etc/project. Для получения дополнительной информации см. справочные страницы projects(1) и project(4).

В файле project для каждого проекта, распознаваемого системой, содержится по одной строке следующей формы:


projname:projid:comment:user-list:group-list:attributes

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

projname

Имя проекта. Имя должно представлять собой строку, содержащую алфавитно-цифровые символы, знаки подчеркивания (_), дефисы (-) и точки (.). Символ точки зарезервирован для проектов, имеющих особую значимость для операционной системы, и может использоваться только в именах проектов по умолчанию для пользователей. projname не может содержать двоеточия (: ) и символы разрыва строки.

projid

Уникальный числовой идентификатор проекта (PROJID) внутри системы. Максимальное значение поля projidUID_MAX (2147483647).

comment

Описание проекта.

user-list

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

В этом поле могут использоваться групповые символы. Знак звездочки (*) разрешает всем пользователям присоединяться к проекту. Символ восклицательного знака, после которого находится символ звездочки (!*), исключает всех пользователей из проекта. Символ восклицательного знака (!), после которого указывается имя пользователя, исключает из проекта указанного пользователя.

group-list

Разделенный запятыми список групп пользователей, которым разрешено участие в проекте.

В этом поле могут использоваться групповые символы. Знак звездочки (*) разрешает всем группам присоединяться к проекту. Символ восклицательного знака, после которого находится символ звездочки (!*), исключает все группы из проекта. Символ восклицательного знака (!), после которого указывается имя группы, исключает из проекта указанную группу.

attributes

Разделенный точками с запятыми список пар "имя-значение", например элементов управления ресурсами (см. Глава 6Элементы управления ресурсами (обзор)). name – произвольная строка, указывающая на связанный с объектом атрибут, а value – необязательное значение данного атрибута.


name[=value]

В паре "имя-значение" имена могут состоять только из букв, цифр, знаков подчеркивания и точек. Точка традиционно используется как разделитель между категориями и подкатегориями элементов управления ресурсами (rctl). Первый символ имени атрибута должен быть буквой. Имя зависит от регистра символов.

Порядок старшинства значений определяется запятыми и скобками.

Для разделения пар "имя-значение" используется точка с запятой. Использование точки с запятой в определении значения не допускается. Двоеточие используется для разделения полей проекта. Использование двоеточия в определении значения не допускается.


Примечание –

Программы, читающие этот файл, прерывают работу при обнаружении некорректной записи. Назначение проектов, указанных после некорректной записи, не производится.


В этом примере показан файл /etc/project по умолчанию:


system:0:System:::
user.root:1:Super-User:::
noproject:2:No Project:::
default:3::::
group.staff:10::::

В этом примере показан файл /etc/project по умолчанию с добавленными в конец файла записями проекта:


system:0:System:::
user.root:1:Super-User:::
noproject:2:No Project:::
default:3::::
group.staff:10::::
user.ml:2424:Lyle Personal:::
booksite:4113:Book Auction Project:ml,mp,jtd,kjh::

Элементы управления ресурсами и атрибуты также можно добавлять в файл /etc/project :

Настройка проекта для NIS

Если используется NIS, в файле /etc/nsswitch.conf можно задать поиск проектов в картах проектов NIS:


project: nis files 

Карты NIS – и project.byname, и project.bynumber , – имеют такую же форму, как и файл /etc/project:


projname:projid:comment:user-list:group-list:attributes

Для получения дополнительной информации см. раздел Глава 4, Network Information Service (NIS) (Overview), в System Administration Guide: Naming and Directory Services (DNS, NIS, and LDAP).

Настройка проекта для LDAP

Если используется LDAP, в файле /etc/nsswitch.conf можно задать поиск проектов в базе данных LDAP project:


project: ldap files

Для получения дополнительной информации о LDAP см. раздел Глава 8, Introduction to LDAP Naming Services (Overview/Reference), в System Administration Guide: Naming and Directory Services (DNS, NIS, and LDAP). Для получения дополнительной информации о схеме записей проекта в базе данных LDAP см. раздел Solaris Schemas в System Administration Guide: Naming and Directory Services (DNS, NIS, and LDAP).

Идентификаторы задач

Каждая успешная регистрация в проекте приводит к созданию новой задачи, содержащей процесс регистрации. Задача – совокупность процессов, представляющая собой набор работ во времени. Задачу также можно рассматривать как компонент рабочей нагрузки. Каждой задаче автоматически присваивается идентификатор.

Каждый процесс участвует в одной задаче, а каждая задача связана с одним проектом.

Рисунок 2–1 Дерево проектов и задач

На схеме показан один проект с тремя подчиненными задачами и от двух до четырех процессов, подчиненных каждой задаче.

Для задач также поддерживаются все операции над группами процессов, например, доставка сигнала. Задачу можно связать с набором процессоров и назначить приоритет и класс планирования задачи, в результате чего изменятся все текущие и будущие процессы задачи.

Задача создается при каждом присоединении проекта. Задачи создаются следующими действиями, командами и функциями:

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

Для получения дополнительной информации см. справочные страницы login(1), newtask(1), cron(1M), su(1M) и setproject(3PROJECT).

Для получения учетных данных по процессам может использоваться подсистема расширенного учета. Данные агрегируются на уровне задачи.

Команды, используемые с проектами и задачами

Команды, показанные в следующей таблице, обеспечивают главный административный интерфейс к средствам проектов и задач.

Ссылка на справочную страницу 

Описание 

projects(1)

Вывод членства пользователей в проектах. Вывод списка проектов из базы данных project. Выводится информация по данным проектам. Если имена проектов не указаны, информация отображается по всем проектам. Для получения более подробных данных следует выполнить команду projects с параметром -l.

newtask(1)

Выполнение оболочки пользователя по умолчанию или указанной команды, причем выполняемая команда помещается в новую задачу, подчиненную указанному проекту. Команду newtask также можно использовать для изменения привязки выполняемого процесса к задаче или проекту. Параметр -F используется для создания финализированной задачи.

passmgmt(1M)

Обновление информации в файлах паролей. Параметр -K ключ=значение позволяет добавлять или изменять атрибуты пользователей в локальных файлах.

projadd(1M)

Добавление новой записи проекта в файл /etc/project. Команда projadd позволяет создать запись проекта только в локальной системе. Команда projadd не может изменять информацию, предоставляемую сетевой службой имен.

Используется для редактирования файлов проекта, отличных от файла по умолчанию – /etc/project . Выполняется проверка синтаксиса для файла project. Атрибуты проекта проверяются на допустимость и редактируются. Предусмотрена поддержка кратных величин.

projmod(1M)

Изменение информации для проекта в локальной системе. Команда projmod не может изменять информацию, предоставляемую сетевой службой имен. Однако по этой команде выполняется сверка названия и идентификатора проекта с внешней службой имен в целях проверки уникальности.

Используется для редактирования файлов проекта, отличных от файла по умолчанию – /etc/project . Выполняется проверка синтаксиса для файла project. Атрибуты проекта проверяются на допустимость и редактируются. Команда может использоваться для добавления новых атрибутов, для добавления значений к атрибуту или для удаления атрибута. Предусмотрена поддержка кратных величин.

Начиная с Solaris версии 10 5/08 для применения значений элементов управления ресурсами из базы данных проектов к текущему проекту может использоваться параметр -A. Существующие значения, которые не совпадают со значениями, определенными в файле project (например, значения, заданные вручную посредством команды prctl) удаляются.

projdel(1M)

Удаление проекта из локальной системы. Команда projdel не позволяет изменять информацию, предоставляемую сетевой службой имен.

useradd(1M)

Добавление определений проектов по умолчанию в локальные файлы. Параметр -K ключ=значение позволяет добавлять или заменять атрибуты пользователей.

userdel(1M)

Удаление учетной записи пользователя из локального файла. 

usermod(1M)

Изменение регистрационных данных пользователя в системе. Параметр -K ключ=значение позволяет добавлять или заменять атрибуты пользователей.