Solaris SMF
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).
Управление службами
Для вывода всех запущенных служб используется
А для вывода всех служб, включая те, запуск которых запрещен:
Состояния сервисов
Экземпляр службы в любой момент времени может находиться в одном из семи состояний:
- degraded (ослабленное) – запуск разрешен, но работа происходит с ограниченной функциональностью,
- disabled (запрещено запускать) – запуск запрещен, экземпляр службы не запущен,
- legacy_run (унаследованный) – некоторые унаследованные службы не подлежат управлению через SMF, но их работу можно наблюдать стандартными для SMF средствами,
- maintenance (обслуживание) – экземпляр службы аварийно завершился,
- offline (не работает) – запуск разрешен, но экземпляр службы еще не запущен или нет возможности его запустить,
- online (работает) – запуск разрешен, экземпляр службы работает без проблем,
- 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.