Show Table of Contents
Глава 2. Работа с контрольными группами
Управление контрольными группами осуществляется с помощью инструментов из пакета libcgroup. В принципе, параметры групп можно изменить на время текущего сеанса с помощью стандартных команд оболочки, но libcgroup значительно упрощает этот процесс и предоставляет больше возможностей. В данном руководстве рассматривается настройка групп с использованием libcgroup, но приводятся и эквивалентные команды оболочки.
Примечание
В режиме root:
~]# yum install libcgroup
2.1. Служба cgconfig
cgconfig
устанавливается вместе с libcgroup и рекомендуется для создания иерархий, их связи с подсистемами и управления группами.
В Red Hat Enterprise Linux 6
cgconfig
не запускается по умолчанию. При ее запуске с помощью chkconfig
будет прочитан файл конфигурации /etc/cgconfig.conf
. Каждый раз при запуске группы будут создаваться заново и таким образом сохранять постоянство. Исходя из настроек в /etc/cgconfig.conf
, cgconfig может создавать иерархии, подключать файловые системы, создавать контрольные группы и настраивать подсистемы для каждой группы.
В исходном
/etc/cgconfig.conf
определены настройки для создания и подключения иерархии для каждой подсистемы, и для связи подсистем с этими иерархиями.
При остановке
cgconfig
(команда service cgconfig stop
) все иерархии будут отключены.
2.1.1. cgconfig.conf
Файл
cgconfig.conf
содержит два типа записей — mount и group. В секции mount создаются иерархии, которые затем подключаются как виртуальные файловые системы. Созданным иерархиям могут быть назначены подсистемы. Формат:
mount { <подсистема> = <путь>; … }
Пример 2.1. Создание секции mount
Пример создания иерархии для подсистемы
cpuset
:
mount { cpuset = /cgroup/cpu; }
что эквивалентно командам:
~]#mkdir /cgroup/cpu
~]#mount -t cgroup -o cpu cpu /cgroup/cpu
Записи group содержат определения групп и параметры подсистем. Например:
group <имя> {
[<права>]
<подсистема> {
<параметр> = <значение>;
…
}
…
}
Секция прав доступа не является обязательной. Ее формат:
perm { task { uid = <пользователь>; gid = <группа>; } admin { uid = <администратор>; gid = <админ_группа>; } }
Пример 2.2. Создание секции group
В следующей секции создается контрольная группа для служб sql. Пользователям в группе
sqladmin
разрешается добавлять задачи в группу, а пользователю root
разрешается изменять параметры подсистем.
group daemons/sql { perm { task { uid = root; gid = sqladmin; } admin { uid = root; gid = root; } } cpu { cpu.shares = 100; } }
Эквивалентный набор команд оболочки в комбинации с секцией mount (см. Пример 2.1, «Создание секции mount») будет выглядеть так:
~]#mkdir -p /cgroup/cpu/daemons/sql
~]#chown root:root /cgroup/cpu/daemons/sql/*
~]#chown root:sqladmin /cgroup/cpu/daemons/sql/tasks
~]#echo 100 > /cgroup/cpu/daemons/sql/cpu.shares
Примечание
Чтобы изменения в
/etc/cgconfig.conf
вступили в силу, надо перезапустить cgconfig
:
~]# service cgconfig restart
При установке libcgroup будет создан шаблон файла
/etc/cgconfig.conf
. Знаки #
в начале строки отделяют комментарии, которые cgconfig
будет игнорировать.