В #3 нашего затяжного обзора возможностей systemd мы разбирались с systemd-journald — подсистемой сбора системных логов (называть его заменой syslogd не совсем корректно, хотя вести свой лог в виде бинарной БД он также умеет). Однако, часть аспектов работы с journald осталась неохваченной.
Journal - гибкий сборщик и хранитель системных сообщений. Он обрабатывает сообщения ядра, initrd, системных и пользовательских сервисов. Для начала стоит упомянуть, что его можно отключить и перенаправлять все логи в традиционный сервис syslog(опция ForwardToSyslog) или же использовать одновременно journal и syslog. Начиная с systemd версии 216 эта опция была отключена по-умолчанию, так как rsyslog и syslog-ng уже могут читать самостоятельно сообщения journal. Конфигурация journald хранится в /etc/systemd/journal.conf, а сами логи могут храниться как на диске(в директории /var/log/journal), так и в оперативной памяти или не храниться вообще. Рассмотрим основные опции конфигурационного файла journald:
В этой части мы сосредоточимся на администрировании системы под управлением systemd.
Для начала краткий повтор и углубление в материал предыдущей серии.
I. “Repetition needs a friend…” (c) Whitechapel
systemd – это универсальный plumbing layer, или набор служебных программ для совершенно разных задач. Основным компонентом этого проекта является одноимённая система инициализации, построенная на основе концепции юнитов. Каждый юнит описывает какой-либо объект в системе (например, программу/демон, устройство или точку монтирования) и характеризуется текущим состоянием и списком зависимостей. На основании этой информации строится дерево зависимостей (ну, естественно, не дерево, а направленный ациклический граф, но суть та же), в котором для активации каждого юнита требуется активировать все его зависимости.
Также существуют юниты-цели, активация которых ничего не означает сама по себе: такие юниты используются для группировки других. Этот механизм можно назвать обобщением концепции уровней запуска из sysvinit.
Systemd - это не система инициализации и даже не "системный менеджер" (как можно прочитать на freedesktop.org). Systemd как проект - это универсальный plumbing layer, набор служебных программ для совершенно разных задач.
Основная идея этого проекта состоит в централизации управления ключевыми системными компонентами "всё в одном". Это сделано в основном чтобы упростить администрирование и повысить надёжность за счёт интеграции и более тесного взаимодействия.
В данном эпизоде мы рассмотрели непосредственно систему инициализации (тоже называемую systemd), её основные концепции и принципы работы.