Развиват нов системен мениджър rcd за FreeBSD

Батист Даруссен (Baptiste Daroussin), член на екипa на FreeBSD Core и автор на пакетния мениджър pkg, развива нов мениджър на системата за FreeBSD — rcd. Мениджърът на системата rcd се извиква от init процеса вместо /etc/rc, прочита конфигурационните файлове на услугите (/etc/rcd.d/*.ucl), изгражда дърво на зависимостите и стартира услугите паралелно, след което следи работата на услугите и ги рестартира при необходимост.

Управлението на фоновия процес и операциите с услугите могат да се извършват чрез директно предаване на команди в UNIX сокет или с помощта на командния инструмент rctl. Unit файловете с параметрите на услугите са оформени във формат UCL, който наподобява формата на конфигурационни файлове на nginx и bind с елементи за улесняване на автоматизираната обработка, заемани от JSON. Предоставя се възможност за създаване на шаблони на типични unit файлове и написване на вградени обработчици на LUA. Пример на unit файл за стартиране на nginx: name = "nginx"; description = "Nginx HTTP Server"; type = "simple"; command = "/usr/local/sbin/nginx"; command_args = "-g 'daemon off;'"; provides = ["nginx", "http"]; requires = ["NETWORKING", "sshd"]; restart { policy = "always"; max_retries = 10; delay = 2000; backoff = "linear"; } process { user = "www"; group = "www"; cpuset = "0-3"; } rctl { memoryuse = { action = "deny"; amount = "2g"; }; pcpu = { action = "throttle"; amount = "80"; }; }

Вместо работа с PID файловете, следенето на активността на стартираните процеси се извършва с помощта на дескриптори, връщани от системния повик pdfork(). Поддържа се активиране на услугите само при обращение към мрежовия сокет и има възможност за защита на важни услуги от принудително завършване в случай на недостиг на памет в системата. Може да се обнови версията на фоновия процес rcd в движение, без загуба на състояние.

За ограничаване на ресурсите, налични за услугата, се прилага rctl, а за пълна изолация на услугите се поддържа тяхното стартиране в jail среди. Възможна е настройка за достъп до управляващия UNIX сокет, свързан с отделни услуги. Поддържа се режим на заспиване.

Системният мениджър е напълно обратно съвместим с настоящата система за последователно стартиране на услуги rc.d и може да работи без промяна на съществуващите rc.d скриптове и конфигурационни файлове. Достатъчно е да инсталирате rcd на работеща система и след рестартиране всичко ще продължи да функционира както преди, с изключение на намаленото време за зареждане благодарение на паралелизирането на стартирането на услугите. Тази съвместимост ще улесни миграцията на системите към rcd и ще даде възможност за постепенно преобразуване на съществуващите rc.d скриптове в формат unit файлове.

За съвместимост с rc.d се поддържа специален тип unit-ове „legacy“. Rcd сканира съдържанието на /etc/rc.d/ и /usr/local/etc/rc.d/, анализира заглавията PROVIDE/REQUIRE/BEFORE/KEYWORD в скриптовете, чете настройките rc.conf и определя състоянието на стартиране на скриптовете, след което обработва всеки скрипт като виртуален legacy unit. При използване на командата rcctl за управление на подобни виртуални unit-ове, операциите се трансформират в стария формат, например, изпълнението на „rcctl reload sshd“ ще доведе до стартиране на „/etc/rc.d/sshd reload“.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster