Solaris SMF: различия между версиями

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску
Строка 112: Строка 112:
 
В Solaris 10 введено понятие "этапов" (milestone). Разные этапы предполагают функционирование разных наборов служб. Переход от одного этапа к другому и объявление одного из этапов "этапом по умолчанию" (к которому система должна прийти в результате нормальной загрузки) выполняется командами svcs, svcadm и svccfg.
 
В Solaris 10 введено понятие "этапов" (milestone). Разные этапы предполагают функционирование разных наборов служб. Переход от одного этапа к другому и объявление одного из этапов "этапом по умолчанию" (к которому система должна прийти в результате нормальной загрузки) выполняется командами svcs, svcadm и svccfg.
 
В системах SPARC указание этапа работы при загрузке выполняется так:
 
В системах SPARC указание этапа работы при загрузке выполняется так:
 
{{Root|<nowiki>ok boot -m milestone=value</nowiki>}}
   
 
Например, для запуска системы с загрузкой всех установленных служб указывается этап all, а без запущенных служб (когда загружаются только init, svc.startd и svc.configd) – этап none.<BR>
ok boot -m milestone=value
 
 
<P>Порядок загрузки системы изменился: теперь после загрузки ядра запускается процесс init, он считывает файл /etc/default/init и устанавливает переменные среды окружения (по умолчанию устанавливается TIMEZONE, а установка других переменных зависит от дистрибутива и версии системы), затем init считывает файл /etc/inittab и запускает все процессы, у которых в поле "тип запуска" указано sysinit, и управление дальнейшим запуском служб переходит к службе svc.startd.
 
 
Например, для запуска системы с загрузкой всех установленных служб указывается этап all, а без запущенных служб (когда загружаются только init, svc.startd и svc.configd) – этап none.
 
Порядок загрузки системы изменился: теперь после загрузки ядра запускается процесс init, он считывает файл /etc/default/init и устанавливает переменные среды окружения (по умолчанию устанавливается TIMEZONE, а установка других переменных зависит от дистрибутива и версии системы), затем init считывает файл /etc/inittab и запускает все процессы, у которых в поле "тип запуска" указано sysinit, и управление дальнейшим запуском служб переходит к службе svc.startd.
 

Версия 15:05, 26 мая 2010

SMF

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

Введение

Solaris относится к ветви System V, но отличается от остальных систем наличием специального режима работы, называемого s или S (single) и применяемого для восстановления системы. В большинстве систем System V остальные режимы (0-6) имеют аналогичное назначение, но системы отличаются структурой каталогов системных скриптов (Solaris - /etc/rcN.d, Linux - /etc/rc.d/rcN/, где N – номер режима работы). В системах System V всегда присутствуют программы init и shutdown, а в Solaris еще и reboot, halt, poweroff.

SMF - начальные сведения

В Solaris 10 появилась подсистема Service Management Facility (SMF), связанная с загрузкой системы и управлением работающими в ней службами. Поддерживается общесистемная база данных о взаимосвязях между службами и отдельный процесс отслеживает состояние служб, следовательно, порядок загрузки изменился: управление тем, какие именно службы должны запуститься, полностью передано SMF. Экземпляр (instance, каждый из запущенных с разными файлами настроек процессов) может унаследовать настройки службы в целом или иметь собственные настройки, имеющие более высокий приоритет, чем общие. Каждый экземпляр службы имеет свой идентификатор (FMRI - fault managed resource identifier), имя идентификатора всегда начинается с svc, к экземпляру можно обращаться по полному имени или по сокращенному. Службы, специфичные для конкретной системы, принято относить к категории site. Все службы содержатся в определенном контексте (scope), представляющем собой набор логически связанных служб (в Solaris 10 определен только контекст localhost).

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

Для вывода всех запущенных служб используется

# svcs STATE STIME FMRI legacy_run 11:28:37 lrc:/etc/rc2_d/S20sysetup legacy_run 11:28:37 lrc:/etc/rc2_d/S47pppd <…> online 11:28:06 svc:/network/physical:nwam online 11:28:08 svc:/system/identity:node online 11:28:10 svc:/system/metainit:default online 11:28:12 svc:/system/filesystem/root:default online 11:28:12 svc:/system/scheduler:default online 11:28:14 svc:/system/boot-archive:default

Для вывода всех служб, включая те, запуск которых запрещен:

# svcs -a STATE STIME FMRI legacy_run 22:58:12 lrc:/etc/rc2_d/S20sysetup legacy_run 22:58:12 lrc:/etc/rc2_d/S47pppd legacy_run 22:58:13 lrc:/etc/rc2_d/S72autoinstall <…> disabled 22:57:44 svc:/network/ipsec/ike:default disabled 22:57:44 svc:/system/nws_ii:default disabled 22:57:44 svc:/system/nws_rdc:default <…> online 22:57:57 svc:/milestone/devices:default online 22:57:57 svc:/milestone/single-user:default online 22:57:58 svc:/network/initial:default </PRE>

Состояния служб

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

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

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

svcs –xv.

Описание служб

В описании каждой службы указывается, от каких служб и/или файлов она зависит. Типы взаимосвязи (зависимости): 1. require_all – считается удовлетворенной, когда все перечисленные службы находятся в состояниях online или degraded или все указанные файлы присутствуют. 2. require_any – считается удовлетворенной, когда хотя бы одна из перечисленных служб находится в состояниях online или degraded или хотя бы один из указанных файлов присутствует. 3. optional_all – считается удовлетворенной, когда все перечисленные службы находятся в состояниях online или degraded или в состояниях disabled, maintenance, offline, либо не существуют. 4. exclude_all – считается удовлетворенной, когда все перечисленные службы запрещено запускать, либо они находятся в состоянии maintenance, или все указанные службы или файлы отсутствуют.

Для изменения состояния службы используется

  • svcadm (чтобы измененные настройки вступили в силу – svcadm refresh)
  • для изменения настроек– svccfg(и ее подкоманды – listsnap, selectsnap и revertsnap), а для получения информации о свойствах– svcprop.

Каждая служба имеет свое объявление (manifest) – файл в формате XML, содержащий полное описание всех свойств службы или ее экземпляра. Объявления служб хранятся в каталоге /var/svc/manifest. Файлы объявлений не являются источником информации для служб SMF -таким источником является репозиторий. Для импорта информации из файлов объявлений в репозиторий используется команда svccfg import (при перезагрузке это происходит автоматически), а для получения архива XML с постоянными свойствами всех служб - svccfg export. Профиль – это файл XML, содержащий список служб, разрешенных к запуску. После установки или обновления система обращается к профилю generic.xml, который является символической ссылкой на generic_limited_net.xml.

Профили

В каталоге /var/svc/profile есть предустановленные профили:

  • /var/svc/profile/generic_open.xml – службы, стандартные для более ранних версий Solaris (до S10U3 включительно);
  • /var/svc/profile/generic_limited_net.xml – стандартные службы, как и в generic_open.xml, но с запретом запускать сетевые службы, кроме ssh;
  • /var/svc/profile/ns_*.xml –запуск служб, имеющих отношение к службе имен;
  • /var/svc/profile/platform_*.xml – профиль служб, связанных с конкретной платформой.

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

  • initial - начальная настройка службы, созданная при первом импорте ее описания,
  • last-import - последняя из импортированных с помощью svccfg,
  • running - настройка запущенного экземпляра службы,
  • start – снимок при последнем успешном переходе экземпляра службы в состояние online,
  • previous - созданный при последнем возврате к предыдущим настройкам.

Режимы работы системы (runlevels)

Для упрощения переключения между разными наборами программ, используемых для разных типов задач, была создана концепция режимов работы системы. Любая UNIX System V может работать в одном из семи режимов. В Solaris используется восемь режимов (0-6 и S или s). Режим работы иногда называют состоянием (state) или уровнем выполнения. Набор программ, запускаемых в данном режиме, определяется содержимым файла /etc/inittab, в котором указываются стартовые скрипты, автоматически запускаемые при переходе к каждому из уровней выполнения. Эти скрипты находятся в каталоге /etc, и из них вызываются другие скрипты, расположенные в каталогах /etc/rcN.d. Режим 0 - система останавливается, управление передается OpenBootPROM, а для архитектуры х86 - система останавливается и затем может быть перезагружена нажатием любой клавиши. Режим 1 - файловые системы для многопользовательской работы, смонтированы, запущены некоторые демоны, но пользователям не разрешено входить в систему (работает один пользователь). Режим s (S) называется однопользовательским. Все пользовательские процессы останавливаются, а файловые системы, необходимые для многопользовательской работы, демонтируются. Доступ к системе возможен только с консоли и с логином, не требующим доступа к пользовательским файловым системам. Система переходит в состояние s автоматически, когда файловая система /usr повреждена и переход в этот режим возможен даже при поврежденном или отсутствующем файле /etc/inittab. Пре переходе в режим S из других режимов файловые системы, которые уже смонтированы к этому моменту, остаются смонтированными, но все процессы, запущенные ранее, которые должны быть запущены только в многопользовательских режимах или запущенные от имени пользователей, завершаются.

  • Режим 2 – многопользовательский.
  • Режим 3 – тоже многопользовательский, но поддерживается разделение каталогов с помощью NFS, в отличие от режима 2.
  • Режим 4 – в настоящее время не реализован.
  • Режим 5 – операционная система останавливается, если есть аппаратная поддержка выключения питания – оно автоматически отключается.
  • Режим 6 - останавливает и перезагружает систему в состояние, определяемое записью initdefault в файле /etc/inittab. Если введена команда touch /reconfigure, конфигурирует перед перезагрузкой новый образ ядра (после изменения его параметров или добавления новых устройств).

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

 # who -r
run-level 3  2008-07-05 22:57 


Этапы работы системы

В Solaris 10 введено понятие "этапов" (milestone). Разные этапы предполагают функционирование разных наборов служб. Переход от одного этапа к другому и объявление одного из этапов "этапом по умолчанию" (к которому система должна прийти в результате нормальной загрузки) выполняется командами svcs, svcadm и svccfg. В системах SPARC указание этапа работы при загрузке выполняется так:

ok boot -m milestone=value

Например, для запуска системы с загрузкой всех установленных служб указывается этап all, а без запущенных служб (когда загружаются только init, svc.startd и svc.configd) – этап none.

Порядок загрузки системы изменился: теперь после загрузки ядра запускается процесс init, он считывает файл /etc/default/init и устанавливает переменные среды окружения (по умолчанию устанавливается TIMEZONE, а установка других переменных зависит от дистрибутива и версии системы), затем init считывает файл /etc/inittab и запускает все процессы, у которых в поле "тип запуска" указано sysinit, и управление дальнейшим запуском служб переходит к службе svc.startd.