Solaris SMF: различия между версиями
Sirmax (обсуждение | вклад) |
Sirmax (обсуждение | вклад) |
||
Строка 42: | Строка 42: | ||
</nowiki>}} |
</nowiki>}} |
||
− | ===Состояния |
+ | ===Состояния служб=== |
Экземпляр службы в любой момент времени может находиться в одном из семи состояний: |
Экземпляр службы в любой момент времени может находиться в одном из семи состояний: |
||
Строка 55: | Строка 55: | ||
Перевод службы из состояния в состояние осуществляется автоматически. |
Перевод службы из состояния в состояние осуществляется автоматически. |
||
Просмотр служб, находящихся в состоянии maintenance, выполняется командой |
Просмотр служб, находящихся в состоянии maintenance, выполняется командой |
||
+ | {{Root|<nowiki> |
||
− | <PRE> |
||
svcs –xv. |
svcs –xv. |
||
− | </ |
+ | </nowiki>}} |
+ | |||
+ | ===Описание служб=== |
||
В описании каждой службы указывается, от каких служб и/или файлов она зависит. |
В описании каждой службы указывается, от каких служб и/или файлов она зависит. |
||
Типы взаимосвязи (зависимости): |
Типы взаимосвязи (зависимости): |
||
Строка 64: | Строка 66: | ||
3. optional_all – считается удовлетворенной, когда все перечисленные службы находятся в состояниях online или degraded или в состояниях disabled, maintenance, offline, либо не существуют. |
3. optional_all – считается удовлетворенной, когда все перечисленные службы находятся в состояниях online или degraded или в состояниях disabled, maintenance, offline, либо не существуют. |
||
4. exclude_all – считается удовлетворенной, когда все перечисленные службы запрещено запускать, либо они находятся в состоянии maintenance, или все указанные службы или файлы отсутствуют. |
4. exclude_all – считается удовлетворенной, когда все перечисленные службы запрещено запускать, либо они находятся в состоянии maintenance, или все указанные службы или файлы отсутствуют. |
||
+ | |||
⚫ | |||
+ | Для изменения состояния службы используется |
||
+ | |||
+ | * svcadm (чтобы измененные настройки вступили в силу – svcadm refresh) |
||
⚫ | |||
+ | |||
Каждая служба имеет свое объявление (manifest) – файл в формате XML, содержащий полное описание всех свойств службы или ее экземпляра. Объявления служб хранятся в каталоге /var/svc/manifest. Файлы объявлений не являются источником информации для служб SMF -таким источником является репозиторий. Для импорта информации из файлов объявлений в репозиторий используется команда svccfg import (при перезагрузке это происходит автоматически), а для получения архива XML с постоянными свойствами всех служб - svccfg export. |
Каждая служба имеет свое объявление (manifest) – файл в формате XML, содержащий полное описание всех свойств службы или ее экземпляра. Объявления служб хранятся в каталоге /var/svc/manifest. Файлы объявлений не являются источником информации для служб SMF -таким источником является репозиторий. Для импорта информации из файлов объявлений в репозиторий используется команда svccfg import (при перезагрузке это происходит автоматически), а для получения архива XML с постоянными свойствами всех служб - svccfg export. |
||
Профиль – это файл XML, содержащий список служб, разрешенных к запуску. После установки или обновления система обращается к профилю generic.xml, который является символической ссылкой на generic_limited_net.xml. |
Профиль – это файл XML, содержащий список служб, разрешенных к запуску. После установки или обновления система обращается к профилю generic.xml, который является символической ссылкой на generic_limited_net.xml. |
||
+ | |||
+ | |||
В каталоге /var/svc/profile есть предустановленные профили: |
В каталоге /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, в качестве списка запускаемых по умолчанию служб будет использоваться он. |
Если создать профиль site.xml, в качестве списка запускаемых по умолчанию служб будет использоваться он. |
||
Для каждого экземпляра службы существует несколько снимков настроек, которые можно использовать для возврата к предыдущим: |
Для каждого экземпляра службы существует несколько снимков настроек, которые можно использовать для возврата к предыдущим: |
||
− | initial - начальная настройка службы, созданная при первом импорте ее описания, |
+ | * initial - начальная настройка службы, созданная при первом импорте ее описания, |
− | last-import - последняя из импортированных с помощью svccfg, |
+ | * last-import - последняя из импортированных с помощью svccfg, |
− | running - настройка запущенного экземпляра службы, |
+ | * running - настройка запущенного экземпляра службы, |
− | start – снимок при последнем успешном переходе экземпляра службы в состояние online, |
+ | * start – снимок при последнем успешном переходе экземпляра службы в состояние online, |
− | previous - созданный при последнем возврате к предыдущим настройкам. |
+ | * previous - созданный при последнем возврате к предыдущим настройкам. |
+ | |||
− | Режимы работы системы (runlevels) |
+ | ==Режимы работы системы (runlevels)== |
Для упрощения переключения между разными наборами программ, используемых для разных типов задач, была создана концепция режимов работы системы. Любая UNIX System V может работать в одном из семи режимов. В Solaris используется восемь режимов (0-6 и S или s). |
Для упрощения переключения между разными наборами программ, используемых для разных типов задач, была создана концепция режимов работы системы. Любая UNIX System V может работать в одном из семи режимов. В Solaris используется восемь режимов (0-6 и S или s). |
||
Режим работы иногда называют состоянием (state) или уровнем выполнения. Набор программ, запускаемых в данном режиме, определяется содержимым файла /etc/inittab, в котором указываются стартовые скрипты, автоматически запускаемые при переходе к каждому из уровней выполнения. Эти скрипты находятся в каталоге /etc, и из них вызываются другие скрипты, расположенные в каталогах /etc/rcN.d. |
Режим работы иногда называют состоянием (state) или уровнем выполнения. Набор программ, запускаемых в данном режиме, определяется содержимым файла /etc/inittab, в котором указываются стартовые скрипты, автоматически запускаемые при переходе к каждому из уровней выполнения. Эти скрипты находятся в каталоге /etc, и из них вызываются другие скрипты, расположенные в каталогах /etc/rcN.d. |
||
Строка 85: | Строка 96: | ||
Режим 1 - файловые системы для многопользовательской работы, смонтированы, запущены некоторые демоны, но пользователям не разрешено входить в систему (работает один пользователь). |
Режим 1 - файловые системы для многопользовательской работы, смонтированы, запущены некоторые демоны, но пользователям не разрешено входить в систему (работает один пользователь). |
||
Режим s (S) называется однопользовательским. Все пользовательские процессы останавливаются, а файловые системы, необходимые для многопользовательской работы, демонтируются. Доступ к системе возможен только с консоли и с логином, не требующим доступа к пользовательским файловым системам. Система переходит в состояние s автоматически, когда файловая система /usr повреждена и переход в этот режим возможен даже при поврежденном или отсутствующем файле /etc/inittab. Пре переходе в режим S из других режимов файловые системы, которые уже смонтированы к этому моменту, остаются смонтированными, но все процессы, запущенные ранее, которые должны быть запущены только в многопользовательских режимах или запущенные от имени пользователей, завершаются. |
Режим s (S) называется однопользовательским. Все пользовательские процессы останавливаются, а файловые системы, необходимые для многопользовательской работы, демонтируются. Доступ к системе возможен только с консоли и с логином, не требующим доступа к пользовательским файловым системам. Система переходит в состояние s автоматически, когда файловая система /usr повреждена и переход в этот режим возможен даже при поврежденном или отсутствующем файле /etc/inittab. Пре переходе в режим S из других режимов файловые системы, которые уже смонтированы к этому моменту, остаются смонтированными, но все процессы, запущенные ранее, которые должны быть запущены только в многопользовательских режимах или запущенные от имени пользователей, завершаются. |
||
− | Режим 2 – многопользовательский. |
+ | *Режим 2 – многопользовательский. |
− | Режим 3 – тоже многопользовательский, но поддерживается разделение каталогов с помощью NFS, в отличие от режима 2. |
+ | *Режим 3 – тоже многопользовательский, но поддерживается разделение каталогов с помощью NFS, в отличие от режима 2. |
− | Режим 4 – в настоящее время не реализован. |
+ | *Режим 4 – в настоящее время не реализован. |
− | Режим 5 – операционная система останавливается, если есть аппаратная поддержка выключения питания – оно автоматически отключается. |
+ | *Режим 5 – операционная система останавливается, если есть аппаратная поддержка выключения питания – оно автоматически отключается. |
− | Режим 6 - останавливает и перезагружает систему в состояние, определяемое записью initdefault в файле /etc/inittab. Если введена команда touch /reconfigure, конфигурирует перед перезагрузкой новый образ ядра (после изменения его параметров или добавления новых устройств). |
+ | *Режим 6 - останавливает и перезагружает систему в состояние, определяемое записью initdefault в файле /etc/inittab. Если введена команда touch /reconfigure, конфигурирует перед перезагрузкой новый образ ядра (после изменения его параметров или добавления новых устройств). |
Проверить, в какой режим работы загрузилась система, можно командой |
Проверить, в какой режим работы загрузилась система, можно командой |
||
− | # who -r |
+ | # who -r |
− | run-level 3 2008-07-05 22:57 |
+ | run-level 3 2008-07-05 22:57 |
− | Этапы работы системы |
+ | ==Этапы работы системы== |
В Solaris 10 введено понятие "этапов" (milestone). Разные этапы предполагают функционирование разных наборов служб. Переход от одного этапа к другому и объявление одного из этапов "этапом по умолчанию" (к которому система должна прийти в результате нормальной загрузки) выполняется командами svcs, svcadm и svccfg. |
В Solaris 10 введено понятие "этапов" (milestone). Разные этапы предполагают функционирование разных наборов служб. Переход от одного этапа к другому и объявление одного из этапов "этапом по умолчанию" (к которому система должна прийти в результате нормальной загрузки) выполняется командами svcs, svcadm и svccfg. |
||
В системах SPARC указание этапа работы при загрузке выполняется так: |
В системах SPARC указание этапа работы при загрузке выполняется так: |
Версия 15:01, 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).
Управление службами
Для вывода всех запущенных служб используется
Для вывода всех служб, включая те, запуск которых запрещен:
Состояния служб
Экземпляр службы в любой момент времени может находиться в одном из семи состояний:
- degraded (ослабленное) – запуск разрешен, но работа происходит с ограниченной функциональностью,
- disabled (запрещено запускать) – запуск запрещен, экземпляр службы не запущен,
- legacy_run (унаследованный) – некоторые унаследованные службы не подлежат управлению через SMF, но их работу можно наблюдать стандартными для SMF средствами,
- maintenance (обслуживание) – экземпляр службы аварийно завершился,
- offline (не работает) – запуск разрешен, но экземпляр службы еще не запущен или нет возможности его запустить,
- online (работает) – запуск разрешен, экземпляр службы работает без проблем,
- uninitialized (неинициализирован) – в этом состоянии находятся все службы до считывания конфигурации.
Перевод службы из состояния в состояние осуществляется автоматически. Просмотр служб, находящихся в состоянии maintenance, выполняется командой
Описание служб
В описании каждой службы указывается, от каких служб и/или файлов она зависит. Типы взаимосвязи (зависимости): 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.