Опубликован: 04.07.2008 | Уровень: специалист | Доступ: платный | ВУЗ: Европейский Университет в Санкт-Петербурге
Лекция 13:

Управление службами с помощью SMF

< Лекция 12 || Лекция 13: 12 || Лекция 14 >

Краткое описание

Задача управления службами сводится к следующему:

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

В Solaris 10 появился новый инструмент, позволяющий по-новому управлять службами в системе и тем самым коренным образом изменяющий и облегчающий этот процесс. Сам по себе механизм SMF (Service Managament Facility) состоит из следующих компонент: описания взаимозависимостей между службами, инфраструктуры их автоматизированного запуска и перезапуска, средств управления службами.

Описание взаимозависимостей находится в репозитории, хранящем информацию в базе данных SQLite. Строго говоря, формат хранения никак не отражается на интерфейсе взаимодействия с репозиторием, и для модификации репозитория следует использовать библиотеку libscf(3LIB) или svcprop(1). В будущих версиях Solaris формат хранения может быть изменен.

Репозиторий состоит из двух частей – постоянной, которая не может измениться без вмешательства человека от одной перезагрузки до другой, и непостоянной, где хранятся непостоянные свойства служб (например, их текущие состояния). Постоянная часть хранится в /etc/svc/repository.db, а непостоянная – в /etc/svc/volatile/svc_nonpersist.db.

Инфраструктура запуска и перезапуска служб состоит из двух служб – svc.startd и svc.configd. Первая запускается при старте системы и считывает информацию из репозитория служб. После этого svc.startd запускает службы в соответствии с этой информацией – т.е. проверяет, какие службы отмечены к запуску для заданного этапа (milestone) работы системы, и запускает службы так, чтобы удовлетворить все их взаимозависимости (например, если httpd зависит от named, то named будет запущен до httpd ).

Служба svc.configd отвечает за модификацию репозитория по командам администратора или посредством вызовов библиотеки libscf(3LIB).

Средства управления службами (т.е. программы, предназначенные для такого управления) отвечают за взаимодействие администратора с другими компонентами smf. Для того, чтобы запретить старт какой-либо службы, разрешить его или иначе модифицировать текущее или будущее состояние службы либо ее настройки, надо использовать команды svcs, svcadm, svcprop, svccfg. Начиная с Solaris 10, другие средства управления службами не поддерживаются, хотя в отдельных случаях вы сможете обойтись и без инфраструктуры smf для запуска ваших служб.

Использование SMF делает вашу систему более предсказуемой и легче диагностируемой, приводя порядок управления разнородными службами к единому образцу. В этой лекции управление службами будет рассмотрено подробнее.

Механизм SMF разработан в рамках более широкого подхода – самовосстанавливающейся компьютерной системы, который носит название predictive self-healing ("прогнозируемое самовосстановление").

Термины

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

  • Управление процессом устранения отказов (fault management) – действия, направленные на обнаружение, изоляцию и исправление сбоев.
  • FMRI – уникальный идентификатор управляемого ресурса (fault managed resource identifier).
  • Ресурс – это экземпляр службы, где служба понимается широко: как собственно служба, как программное состояние физического устройства, как конкретная настройка интерфейса, а также как набор нескольких служб или другой компонент системы, требующий управления (например, сервер баз данных Oracle).

Любая служба (service) в системе может быть представлена несколькими экземплярами (instances). Например, в одной и той же системе приложение, реализующее функциональность веб-сервера, можно запускать в нескольких разных конфигурациях (скажем, с указанием различных файлов настроек). Тогда в терминах SMF веб-сервер – это служба, а каждый из запущенных с разными файлами настроек процессов – экземпляры этой службы.

Службы и управление ими

Именование служб

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

Все службы содержатся в определенном контексте (scope), представляющем собой набор логически связанных служб. В Solaris 10 пока определен только один контекст – localhost, объединяющий все службы локальной системы Solaris.

Каждый экземпляр службы имеет свой идентификатор ( FMRI ), причем имя идентификатора всегда начинается с svc. К экземпляру можно обращаться по полному имени или по сокращенному, например, запретить запуск службы NWAM можно так:

svcadm disable svc:/network/physical:nwam

а можно и так:

svcadm disable nwam

Для служб, имеющих несколько экземпляров, может потребоваться более длинное указание идентификатора:

svc:/application/database/postgresql:version_81

Кстати, этот же идентификатор без сокращений выглядит так:

svc://localhost/application/database/postgresql:version_81

Здесь svc – тип службы, localhost – контекст, application/database/postgresql – имя службы, а version_81 определяет конкретный экземпляр этой службы.

Имя службы может содержать несколько слэшей (символов "/" ), и тогда все его части, кроме последней, указывают на категорию службы (например, application/database ). По умолчанию в системе определены следующие категории:

  • application
  • device
  • milestone
  • network
  • platform
  • site
  • system

Службы, специфичные для данной конкретной системы, принято относить к категории site.

Управление службами

Экземпляру службы можно разрешить запуск при старте системы или запретить его. Это делается с помощью команды svcadm.

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

svcs -a

Осторожно! Результат выполнения этой команды – длинный список служб!

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

  1. degraded (ослабленное) – запуск разрешен, но работа происходит с ограниченной функциональностью.

    (Пример: запущен httpd, но named недоступен; в описании службы httpd указано, что она зависит от named, но последний не обязателен для работы httpd ; при протоколировании обращений к httpd имена компьютеров, с которых выполнялись обращения, не будут записаны, но их IP-адреса все равно попадут в протокол.)

  2. disabled (запрещено запускать) – запуск запрещен; экземпляр службы не запущен.
  3. legacy_run (унаследованный) – некоторые унаследованные (от предыдущих версий системы) службы не подлежат управлению через SMF, однако их работу можно наблюдать стандартными для SMF средствами; это состояние возможно только для унаследованных служб.
  4. maintenance (обслуживание) – экземпляр службы аварийно завершился и не может быть запущен заново без вмешательства администратора.
  5. offline (не работает) – запуск разрешен, но экземпляр службы еще не запущен или нет возможности его запустить.
  6. online (работает) – запуск разрешен, экземпляр службы работает без проблем.
  7. uninitialized (неинициализирован) – в этом состоянии находятся все службы до того, как их конфигурация будет считана из репозитория.

Перевод службы из состояния в состояние осуществляется автоматически (например, из состояния online в состояние maintenance – при невозможности перезапустить аварийно завершившийся процесс, представляющий ту или иную службу) или администратором вручную (например, при запрете запуска – из состояния online в состояние disabled ).

Для управления службами следует использовать программы svcs (просмотр состояния), svcadm (изменение состояния), svcprop (просмотр настроек), svccfg (изменение настроек).

< Лекция 12 || Лекция 13: 12 || Лекция 14 >
Александр Тагильцев
Александр Тагильцев

Где проводится профессиональная переподготовка "Системное администрирование Windows"? Что-то я не совсем понял как проводится обучение.

Анатолий Натрусов
Анатолий Натрусов
Россия
Виктор Саркисов
Виктор Саркисов
Россия, Нижний Новгород, НГТУ, 2001