суббота, 20 октября 2012 г.

Заметки о systemd, часть 1, знакомство


Что оно такое?


Уже общеизвестно, что systemd — это новая система инициализации Linux, готовившаяся для  дистрибутива Fedora, начиная с Fedora 14, но реально использовавшаяся только в Fedora 15. К осени 2012 года systemd используется как система инициализации по умолчанию в дистрибутивах Fedora и OpenSUSE, и как альтернативная система загрузки в дистрибутивах Debian, Ubuntu, ALT Linux. Таким образом, systemd уже покрывает большую часть массово используемых дистрибутивов Linux, и с ней, хочешь или не хочешь, придётся знакомиться.

Прежде всего, почему "уже общеизвестно"? За относительно короткий период времени... А потому, что внедрение systemd сопровождалось и сопровождается огромным количеством обсуждений, временами переходящих в скандал. Это очередное детище Леннарта Поттеринга (Lennart Poettering), после его проектов подсистемы печати и звуковой подсистемы. Оно настолько радикально изменяет многие из устоявшихся десятилетиями традиций и подсистем UNIX, что в обсуждениях высказываются вот такие радикальные, например, суждения:

  • Леннарт Поттеринг не умеет вообще работать с техдокументацией, и ему проще, чем разбираться с существующей системой (печати, звука, инициализации, ...), переломать всё дотла и на голом месте построить что-то своё, отличающееся от общепринятого.
  • Окружение RedHat / Fedora, озабоченное массовым оттоком пользователей в дистрибутивы Debian, Ubuntu и другие производные от них, решили создать радикальную несовместимость, чтобы затруднить такую миграцию.
  • После такого радикального обновления "всё и вся" Linux перестаёт быть в полной мере UNIX-like и POSIX-совместимой системой, по крайней мере, начинает достаточно радикально отличаться от прочих UNIX-like систем.
  • Есть подозрение, что после такой радикализации всего и вся, Oracle может уйти, например, с поддержкой своих баз данных и Java, а Apache-команда тоже может уйти от Linux как основной платформы для разработки... то есть всё это может способствовать сегментации Linux сообщества.
  • На  Linux мигрировали и, возможно, будут мигрировать эксплуатируемые сервера и сервисы с Solaris, AIX, HP-UX, UnixWare... Мигрировали именно из-за простоты миграции. И именно на Linux, так как в свое время RedHat приняли прозорливое решение использовать именно SysV систему раскрутки системы, потому что так  проще софт адаптировать. А вот теперь вопрос о простоте миграции требует отдельного изучения...

Вот как описывает описывает происходящее известный Linux-публицист Алексей Федорчук (сохранено как в оригинале):
Я, конечно, не врач, но, кажется, совершил медицинское открытие: открыл совершенно новую болезнь. Поражает избирательно, только тех, кто тем или иным образом связан с разработкой systemd и сопряжённых служб. Но зато, похоже, с вероятностью, близкой к стопроцентной… 
Симптомов этой болезни пока выявляется три. Первый симптом — не-чтение ранее написанного, выраженное в хронической форме. Типичную клиническую картину этого можно видеть знаменитом Откровении Леннарта Поттеринга, которое под именем systemd Optimizations не так давно обошло всю сеть (имеется и в русском полупереводе-полупересказе).

В любом случае, systemd это не ещё один рядовой проект в ряду великого множества GNU проектов — это явление, достаточно радикальная ломка существующего и создание чего-то нового. В той части, которая касается системы инициализации Linux (при начальной загрузке), проект systemd ставит себе задачи:
  • Параллельная загрузка сервисов системы, что должно а). заметно уменьшить время начальной загрузки системы и б). предотвратить длительные зависания при недоступности некоторых служб, например, сетевых.    
  • Управление допустимыми последовательностями и зависимостями (before / after) запуска сервисов системы (всё это, как и предыдущий пункт, было известно и давно реализовано, например, в операционной системе Solaris).
  • systemd это не просто система запуска сервисов, она еще и умеет их поддерживать в запущенном состоянии (это то, для чего используются проекты daemontools и monit); 

Но система systemd идёт дальше, затрагивает не только инициализацию Linux, но претендует на изменения и других основ системы, из числа средств обеспечения жизнедеятельности системы. И именно это вызывает в обсуждениях удивление, настороженность и недоумение... Вот некоторые такие аспекты системы, в вид которых вносит существенные изменения  systemd:
  • Изменение концепции  уровней загрузки (runlevel), работающей в systemd по сути  по-другому, systemd вводит понятие "целей" (target) загрузки.
  • Введение новой системы ведения системного журнала Journal, ведущей теперь системный журнал не текстового формата (что, вообще то говоря, противоречит общим принципам UNIX систем). 
... всё в одном флаконе. Это уже вызывает к памяти "интегрированность" операционной системы Windows, системный реестр Windows и другие приятные штучки. 

В результате, с переходом к systemd:
  • Меняются устоявшиеся принципы управления загрузкой системы.
  • Возникает множество новых команд (утилит) для управления systemd, например, одних только новых man-руководств появилось 21 штука:
$ cd /usr/share/man
$ ls -lR | grep systemd | wc -l

21


И это при том, что работа над systemd в самом разгаре, не завершена, и там будут ещё, вне всяких сомнений, ещё много новшеств.

Вот поэтому и возникает желание провести систематизацию того, что уже понятно относительно systemd, как минимум по следующим пунктам:
  1. Настолько systemd создаёт новые возможности, и в какой мере они компенсируют потерю прежних привычных инструментов и отход от традиций?
  2. Как всем этим управлять? (если, тем не менее, идёт массовый переход на systemd дистрибутивов Linux, и с ним придётся работать) 

Комментариев нет: