Випуск сервісного менеджера s6-rc 0.5.3.0 та системи ініціалізації s6-linux-init 1.0.7

Підготовлено значний випуск сервісного менеджера s6-rc 0.5.3.0, призначеного для керування запуском скриптів ініціалізації та сервісів з урахуванням залежностей. Інструментарій s6-rc може застосовуватися як у системах ініціалізації, так і для організації запуску довільних сервісів у прив'язці до подій, що відображає зміну стану системи. Надається повне відстеження дерева залежностей та автоматичний запуск або завершення сервісів для досягнення вказаного стану. Код написаний мовою Сі та поширюється під ліцензією ISC.

Сервісний менеджер s6-rc, який може розглядатися як аналог sysv-rc або OpenRC, включає набір утиліт для запуску і зупинки процесів (демонів), що тривало функціонують, або відразу завершуються скриптів ініціалізації. У процесі роботи враховуються залежності між компонентами, забезпечується паралельний запуск скриптів і сервісів, що не перетинаються між собою, і гарантується повторювана при різних запусках послідовність виконання скриптів. Всі зміни стану обробляються з урахуванням залежностей, стежачи за тим, щоб залежності не порушувалися (наприклад, при запуску якогось сервісу будуть автоматично запущені необхідні для його роботи залежності, а при зупинці зупинені і залежні сервіси).

Замість рівнів запуску (runlevel) у s6-rc пропонується більш універсальна концепція наборів (bundles), що дозволяє групувати сервіси за довільними ознаками та задачами. Для підвищення ефективності роботи використовується скомпільована база залежностей, що створюється утилітою s6-rc-compile на основі вмісту каталогів із файлами для запуску/зупинки сервісів. Для аналізу та маніпуляцій з БД пропонуються утиліти s6-rc-db та s6-rc-update. Система підтримує скрипти ініціалізації, сумісні з sysv-init, і може імпортувати інформацію про залежність із sysv-rc або OpenRC.

З переваг s6-rc називається компактна реалізація, що не містить нічого зайвого, крім компонентів для вирішення прямих завдань, і споживає мінімум ресурсів. На відміну від інших сервісних менеджерів s6-rc підтримує попереджувальне (в offline-режимі) побудова графа залежностей для наявного набору сервісів, що дозволяє виконати ресурсоємний аналіз залежностей окремо, а чи не під час завантаження чи зміни стану. При цьому система не є монолітною і розбита на серію окремих і модулів, що замінюються, кожен з яких відповідно до філософії Unix вирішує тільки певне завдання.

У поєднанні з утилітами s6, що відстежують роботу процесів (аналог daemontools і runit), інструментарій дозволяє одночасно контролювати роботу сервісів, що тривало виконуються, наприклад, перезапускаючи їх у разі аварійних завершень, і забезпечувати запуск послідовності команд у відтворюваній формі, що повторюється при різних запусках. Підтримуються в тому числі такі можливості, як активація сервісу при доступі до сокету (запуск оброблювача при зверненні до мережного порту), журналування подій процесу (заміна syslogd) та контрольоване надання додаткових привілеїв (аналог sudo).

Одночасно доступний випуск пакету s6-linux-init 1.0.7.0, що пропонує реалізацію init-процесу для побудови готових систем ініціалізації для операційних систем на базі ядра Linux, у яких для керування сервісами та скриптами ініціалізації використовуються утиліти s6 та s6-rc. При цьому s6 і s6-rc не прив'язані до s6-linux-init і за бажання можуть використовуватися з будь-якими системами ініціалізації.

Крім того, проектом надаються:

  • s6-networking - Набір утиліт для створення мережевих сервісів, схожий на ucspi.
  • s6-frontend - обв'язка для відтворення функціональності daemontools і runit поверх s6.
  • s6-portable-utils - набір типових Unix-утиліт, таких як cut, chmod, ls, sort і grep, оптимізованих для споживання мінімальних ресурсів і поставляються під ліцензією ISC.
  • s6-linux-utils — набір утиліт, прив'язаних до Linux, таких як chroot, freeramdisk, logwatch, mount та swapon.
  • s6-dns — набір клієнтських бібліотек та утиліт, які замінюють типові DNS-утиліти з BIND та djbdns.

У новій версії s6-rc в утиліті s6-rc-compile реалізовано читання даних про залежність та набори сервісів з каталогів замість файлів. Використання каталогів спрощує додавання сервісів у БД з інформацією про залежності при встановленні програм через пакетний менеджер, оскільки дозволяє уникнути внесення змін до файлів. Підтримка старого формату на основі файлів збережена для сумісності. У новій версії s6-linux-init в утиліту s6-linux-init-maker додано опцію «-S» для синхронізації даних у контейнерах.

Джерело: opennet.ru

Додати коментар або відгук