В этой главе рассматриваются средства управления ресурсами Solaris, связанные с проектами и задачами. Проекты и задачи используются для отметки рабочих нагрузок и их отделения друг от друга.
В этой главе рассматриваются следующие темы:
Для получения информации по использованию средств управления проектами и задачами см. Глава 3Администрирование проектов и задач.
В версии Solaris 10 были добавлены следующие усовершенствования:
Добавлена поддержка кратных единиц и модификаторов единиц в элементах и командах управления ресурсами.
Усовершенствована проверка допустимости и упрощено манипулирование полями атрибутов проекта.
Пересмотрен формат вывода и добавлены новые параметры для команд prctl и projects
Добавлена возможность установки проекта пользователя по умолчанию командой useradd и изменения информации командами usermod и passmgmt
В дополнение к информации, приведенной в этой главе и в Глава 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). Для определения проекта по умолчанию выполняется ряд последовательных действий. Если проект по умолчанию не обнаруживается, вход пользователя в систему или запрос запуска процесса отклоняется.
Затем для определения проекта пользователя по умолчанию последовательно выполняются следующие действия:
Если в расширенной базе данных атрибутов пользователей /etc/user_attr для пользователя определена запись с атрибутом project, то в качестве проекта по умолчанию используется значение атрибута project. См. справочную страницу user_attr(4).
Если в базе данных project присутствует проект с именем user.идентификатор_пользователя, то по умолчанию используется этот проект. Для получения дополнительной информации см. справочную страницу project(4).
Если в базе данных project присутствует проект с именем group.имя_группы, где имя_группы соответствует группе по умолчанию для данного пользователя, как указано в файле passwd, то по умолчанию используется этот проект. Для получения информации о файле passwd см. справочную страницу passwd(4).
Если в базе данных project присутствует особый проект default, то этот проект используется по умолчанию.
Эта логика обеспечивается библиотечной функцией getdefaultproj(). Для получения дополнительной информации см. справочную страницу getprojent(3PROJECT).
Для установки атрибутов пользователей в локальных файлах используются перечисленные ниже команды с параметром -K и парой ключ=значение:
Изменение пользовательской информации.
Настройка проекта по умолчанию для пользователя.
Изменение пользовательской информации.
Могут использоваться следующие локальные файлы:
/etc/group
/etc/passwd
/etc/project
/etc/shadow
/etc/user_attr
Если для дополнения локального файла дополнительными записями используется сетевая служба имен, такая как NIS, информация, предоставляемая сетевой службой имен, не может изменяться этими командами. Однако эти команды производят сверку следующих данных с информацией из внешней базы данных службы имен:
уникальность имени пользователя (или роли),
уникальность идентификатора пользователя,
существование указанных имен групп.
Для получения дополнительной информации см. справочные страницы passmgmt(1M), useradd(1M), usermod(1M) и user_attr(4).
Данные о проектах могут храниться в локальном файле, в карте проектов сетевой информационной службы (NIS), либо в службе каталогов протокола LDAP. Файл /etc/project или служба имен используются подключаемым модулем аутентификации (PAM) для связывания пользователя с проектом по умолчанию при входе в систему, а также при всех запросах на управление учетными записями.
Обновления записей в базе данных проектов, будь то файл /etc/project или представление базы данных в сетевой службе имен, не применяются к проектам, активным в текущий момент. Обновления применяются к новым задачам, присоединяющимся к проекту, при использовании команд login или newtask. Для получения дополнительной информации см. справочные страницы login(1) и newtask(1).
К операциям, изменяющим или задающим идентификаторы, относятся вход в систему, вызов команд 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).
Если в качестве источника базы данных project в файле nsswitch.conf выбрано значение files, процесс регистрации выполняет поиск информации о проекте в файле /etc/project. Для получения дополнительной информации см. справочные страницы projects(1) и project(4).
В файле project для каждого проекта, распознаваемого системой, содержится по одной строке следующей формы:
projname:projid:comment:user-list:group-list:attributes |
Поля определены следующим образом:
Имя проекта. Имя должно представлять собой строку, содержащую алфавитно-цифровые символы, знаки подчеркивания (_), дефисы (-) и точки (.). Символ точки зарезервирован для проектов, имеющих особую значимость для операционной системы, и может использоваться только в именах проектов по умолчанию для пользователей. projname не может содержать двоеточия (: ) и символы разрыва строки.
Уникальный числовой идентификатор проекта (PROJID) внутри системы. Максимальное значение поля projid – UID_MAX (2147483647).
Описание проекта.
Разделенный запятыми список пользователей, которым разрешено участие в проекте.
В этом поле могут использоваться групповые символы. Знак звездочки (*) разрешает всем пользователям присоединяться к проекту. Символ восклицательного знака, после которого находится символ звездочки (!*), исключает всех пользователей из проекта. Символ восклицательного знака (!), после которого указывается имя пользователя, исключает из проекта указанного пользователя.
Разделенный запятыми список групп пользователей, которым разрешено участие в проекте.
В этом поле могут использоваться групповые символы. Знак звездочки (*) разрешает всем группам присоединяться к проекту. Символ восклицательного знака, после которого находится символ звездочки (!*), исключает все группы из проекта. Символ восклицательного знака (!), после которого указывается имя группы, исключает из проекта указанную группу.
Разделенный точками с запятыми список пар "имя-значение", например элементов управления ресурсами (см. Глава 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 :
Информацию по добавлению элементов управления ресурсами для проекта приведены в Настройка элементов управления ресурсами.
Информацию по настройке ограничения потребления физической памяти проектом с помощью демона ограниченного выделения ресурсов, описанного на странице rcapd(1M), приведены в разделе Атрибут ограничения использования физической памяти проектами.
Информацию относительно добавления атрибута project.pool к записи проекта приведены в разделе Создание конфигурации.
Если используется 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, в файле /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).
Каждая успешная регистрация в проекте приводит к созданию новой задачи, содержащей процесс регистрации. Задача – совокупность процессов, представляющая собой набор работ во времени. Задачу также можно рассматривать как компонент рабочей нагрузки. Каждой задаче автоматически присваивается идентификатор.
Каждый процесс участвует в одной задаче, а каждая задача связана с одним проектом.
Для задач также поддерживаются все операции над группами процессов, например, доставка сигнала. Задачу можно связать с набором процессоров и назначить приоритет и класс планирования задачи, в результате чего изменятся все текущие и будущие процессы задачи.
Задача создается при каждом присоединении проекта. Задачи создаются следующими действиями, командами и функциями:
вход в систему
cron
newtask
setproject
su
Одним из следующих методов можно создать т.н. финализированную задачу. Это означает, что все дальнейшие попытки создания новых задач будут неуспешными.
Можно использовать команду newtask с параметром - F.
Для проекта в базе данных task.final службы имен можно установить атрибут project. Все задачи, создаваемые в данном проекте командой setproject, будут иметь флаг TASK_FINAL.
Для получения дополнительной информации см. справочные страницы login(1), newtask(1), cron(1M), su(1M) и setproject(3PROJECT).
Для получения учетных данных по процессам может использоваться подсистема расширенного учета. Данные агрегируются на уровне задачи.
Команды, показанные в следующей таблице, обеспечивают главный административный интерфейс к средствам проектов и задач.
Ссылка на справочную страницу |
Описание |
---|---|
Вывод членства пользователей в проектах. Вывод списка проектов из базы данных project. Выводится информация по данным проектам. Если имена проектов не указаны, информация отображается по всем проектам. Для получения более подробных данных следует выполнить команду projects с параметром -l. |
|
Выполнение оболочки пользователя по умолчанию или указанной команды, причем выполняемая команда помещается в новую задачу, подчиненную указанному проекту. Команду newtask также можно использовать для изменения привязки выполняемого процесса к задаче или проекту. Параметр -F используется для создания финализированной задачи. |
|
Обновление информации в файлах паролей. Параметр -K ключ=значение позволяет добавлять или изменять атрибуты пользователей в локальных файлах. |
|
Добавление новой записи проекта в файл /etc/project. Команда projadd позволяет создать запись проекта только в локальной системе. Команда projadd не может изменять информацию, предоставляемую сетевой службой имен. Используется для редактирования файлов проекта, отличных от файла по умолчанию – /etc/project . Выполняется проверка синтаксиса для файла project. Атрибуты проекта проверяются на допустимость и редактируются. Предусмотрена поддержка кратных величин. |
|
Изменение информации для проекта в локальной системе. Команда projmod не может изменять информацию, предоставляемую сетевой службой имен. Однако по этой команде выполняется сверка названия и идентификатора проекта с внешней службой имен в целях проверки уникальности. Используется для редактирования файлов проекта, отличных от файла по умолчанию – /etc/project . Выполняется проверка синтаксиса для файла project. Атрибуты проекта проверяются на допустимость и редактируются. Команда может использоваться для добавления новых атрибутов, для добавления значений к атрибуту или для удаления атрибута. Предусмотрена поддержка кратных величин. Начиная с Solaris версии 10 5/08 для применения значений элементов управления ресурсами из базы данных проектов к текущему проекту может использоваться параметр -A. Существующие значения, которые не совпадают со значениями, определенными в файле project (например, значения, заданные вручную посредством команды prctl) удаляются. |
|
Удаление проекта из локальной системы. Команда projdel не позволяет изменять информацию, предоставляемую сетевой службой имен. |
|
Добавление определений проектов по умолчанию в локальные файлы. Параметр -K ключ=значение позволяет добавлять или заменять атрибуты пользователей. |
|
Удаление учетной записи пользователя из локального файла. |
|
Изменение регистрационных данных пользователя в системе. Параметр -K ключ=значение позволяет добавлять или заменять атрибуты пользователей. |