Отчет о развитии systemd

Леннарт Поттеринг, ведущий разработчик перспективной системы инициализации systemd, рассказал о ключевых достижениях в разработке данного программного продукта:
  • В настоящее время systemd уже принят в состав выпуска Fedora 14 и отлично зарекомендовал себя в предварительном тестировании, поэтому скорее всего именно он будет использоваться в  Fedora 14 в качестве системы инициализации по умолчанию.
  • Добавлены новые конфигурационные единицы (юниты): timer-юниты для активации событий по таймеру (в стиле cron), swap-юниты, позволяющие централизованно управлять swap-разделами и swap-файлами, и path-юниты, обеспечивающие реагирование на события inotify (например, изменение заданного файла или появление файлов в определенном каталоге).
  • Реализована поддержка SELinux: создаваемым объектам (каталогам, сокетам, FIFO) автоматически присваиваются корректные метки безопасности.
  • Выполнена интеграция со стандартной аудит-подсистемой ядра Linux: systemd отчитывается обо всех операциях запуска/остановки служб.
  • Добавлена поддержка TCP-оберток (wrappers) для обслуживаемых сокетов.
  • Обеспечена поддержка PAM при запуске служб под отдельными пользователями (при открытии и завершении сеанса выполняются соответствующие хуки PAM).
  • Реализована поддержка D-Bus: все D-Bus службы могут контролироваться systemd точно так же, как и обычные SysV-службы. За счет использования буферизующих возможностей шины и сокетов, обеспечивается эффективное распараллеливание запуска серверов и клиентов (перед запуском клиента уже необязательно дожидаться окончания запуска сервера — их можно запустить одновременно, и если запрос клиента придет раньше, чем сервер сможет его обработать, то этот запрос просто задержится в буфере до нужного момента).
  • Обеспечен парсинг специфичных для Debian и openSUSE расширений формата SysV-скриптов (для Fedora такая поддержка была изначально).
  • Завершена доработка управляющего D-Bus-интерфейса к systemd, обеспечивающего полный доступ к текущей конфигурации. Используя такие утилиты, как gdbus или d-feet, администратор может просматривать всю необходимую информацию и при необходимости отдавать команды.
  • Добавлен PAM-модуль, который обеспечивает полный контроль над завершением всех пользовательских процессов по окончании сеанса (для отслеживания процессов используется механизм cgroups).
  • Добавлена утилита systemd-cgls, выполняющая рекурсивный вывод иерархии контрольных групп (cgroups).
  • Реализована сама иерархия контрольных групп (в настоящий момент управляющая псевдо-ФС, отражающая эту иерархию, монтируется в /cgroup/systemd, однако перед выпуском Fedora 14 ее планируется перенести в недра /sys/fs/).
  • Поддерживается запуск getty для serial-консолей.
  • Значительно улучшена основная управляющая утилита systemctl (например, поддерживается вывод графа зависимостей в формате Graphviz). Также улучшены средства, эмулирующие работу классических утилит SysV (halt, shutdown, runlevel, telinit) — теперь соответствующие программы из комплекта systemd могут работать не только под systemd, но также под Upstart и SysV, что должно упростить процесс миграции. Кроме того, обеспечена отправка уведомлений в том случае, если файлы конфигурации systemd были изменены, а команды перечитать их не поступало.
  • Подготовлен пример реализации демона, эффективно использующего возможности, предоставляемые systemd.
  • Также подготовлен комплект документации по основным компонентам systemd, включая рекомендации по разработке демонов с учетом специфики systemd.
  • Некоторые программные продукты уже включает в комплект поставки конфигурационные файлы для systemd, что обеспечивает корректную работу таких программ в любом дистрибутиве, поддерживающем systemd. В планы Леннарта и его коллег входит унификация процесса загрузки и управления службами во всех этих дистрибутивах, и определенные результаты уже достигнуты. Кроме того, в ряд проектов уже приняты присланные разработчиками systemd патчи, обеспечивающие эффективное использование возможностей socket-based активации (в стиле inetd).
  • Добавлено множество опций, определяющих среду исполнения процессов и сокетов (лимиты на системные ресурсы, ограничения безопасности и т.п.).
  • Леннарт Поттеринг приступил к публикации цикла статей «systemd for Administrators».
  • Функциональность практически всех скриптов, обеспечивающих запуск и остановку Fedora, реализована «с нуля» в отдельных быстрых, простых и компактных C-программах, и частично в самом systemd. И хотя многие из этих наработок, к сожалению, не будут задействованы в выпуске Fedora 14, все они включены в состав systemd, и их полная активация обеспечивает быструю, эффективно распараллеленную загрузку, прочем PID первого пользовательского терминала уже меньше пятисот. К выпуску Fedora 15 Леннарт и коллеги планируют подготовить полностью бескостыльный (shell-less) процесс загрузки.
  • В systemd реализован уникальный механизм обеспечения работы регистратора /dev/log, в перспективе позволяющий сохранить все лог-записи, начиная от первого запуска systemd на раннем этапе загрузки и заканчивая моментом halt'а системы. Вкратце, идея состоит в следующем: в те периоды времени, когда syslog-демон недоступен (до его запуска в начале загрузки, после его остановки при завершении работы, во время его перезапуска и т.п.) регистрация событий производится средствами ядерного лог-буфера (kmsg). Если syslog-демон по какой-то причине становится неработоспособен, все системные события можно узнать из вывода dmesg. В дальнейшем, если syslog-демон все-таки поднимется, эта информация будет распределена по заданным в его конфигурации приемникам (лог-файлам, удаленным серверам логгирования и т.п.). В том случае, если подъем syslog-демона больше не ожидается (например, при остановке системы), содержимое ядерного лог-буфера может быть выведено на терминал (или serial console, или netconsole, и т.п.). Особый интерес эта возможность представляет для встраиваемых систем, в которых теперь можно обходиться вообще без демона системного лога (преимущества: меньше нагрузка на процессор, отсутствие дискового ввода-вывода, возможность доступа к логу через последовательную или сетевую консоль).
  • Огромное множество мелких исправлений и улучшений.

©  OpenNet