<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ubuntu Linux &#187; systemd</title>
	<atom:link href="/tag/systemd/feed/" rel="self" type="application/rss+xml" />
	<link>http://UbuntuLinux.ru</link>
	<description>Сайт для пользователей Ubuntu Linux</description>
	<lastBuildDate>Sat, 25 Oct 2014 15:23:48 +0000</lastBuildDate>
	<language>ru-RU</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.9.1</generator>
	<item>
		<title>Systemd &#8212; сервис инициализации</title>
		<link>http://UbuntuLinux.ru/soft/system/systemd-servis-inicializacii/</link>
		<comments>http://UbuntuLinux.ru/soft/system/systemd-servis-inicializacii/#comments</comments>
		<pubDate>Fri, 05 Oct 2012 04:29:17 +0000</pubDate>
		<dc:creator><![CDATA[Admin]]></dc:creator>
				<category><![CDATA[Системные]]></category>
		<category><![CDATA[systemd]]></category>
		<category><![CDATA[Администрирование]]></category>
		<category><![CDATA[Устройства]]></category>
		<category><![CDATA[Файловая система]]></category>

		<guid isPermaLink="false">http://UbuntuLinux.ru/?p=541</guid>
		<description><![CDATA[Systemd (system daemon) -- сервис инициализации основанных на Linux систем. Вобрал в себя идеи классического System V init и более современных сервисов инициализации операционных систем: launchd (Mac OS X), SMF (Solaris) и Upstart (Ubuntu, Fedora). Автор Systemd -- Lennart Poettering, сотрудник &#8230; <a href="/soft/system/systemd-servis-inicializacii/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><a href="/wp-content/uploads/2012/07/console.png" ><img class="alignleft  wp-image-358" title="console" src="/wp-content/uploads/2012/07/console.png" alt="console" width="154" height="154" /></a>Systemd (system daemon) -- сервис инициализации основанных на Linux систем. Вобрал в себя идеи классического System V init и более современных сервисов инициализации операционных систем: launchd (Mac OS X), SMF (Solaris) и Upstart (<strong>Ubuntu</strong>, Fedora).</p>
<p>Автор Systemd -- Lennart Poettering, сотрудник компании Red Hat. В разработке также принимали участие сотрудники Red Hat, Novell, IBM, Intel и Nokia.</p>
<p>Systemd опирается на современные linux-технологии: cgroups, AutoFS, D-Bus, при этом совместим с исторически устоявшимися механизмами: init-скриптами, стандартными командами shutdown, poweroff и т.п.</p>
<p>Systemd позволяет заменить не только систему инициализации, но и ряд других подсистем, в частности, cron, (x)inetd, xdm/kdm/gdm и так далее. Частично заменяет SELinux.</p>
<p>Основные идеи systemd:<br />
<span id="more-541"></span></p>
<ul>
<li><strong>Контроль над сокетами</strong>. Многие демоны, запускаемые при инициализации, взаимодействуют с другими демонами через unix domain и сетевые сокеты, и большинство существующих систем инициализации запускают демона-клиента только после того, как демон-сервер запустится и создаст сокет. Вместо этого, systemd создает сокеты, а затем запускает демонов, передавая им эти сокеты. Даже если демон-клиент запустится быстрее и начнет использовать сокет раньше сервера, ничего страшного не произойдет: его запрос будет буферизован и передан серверу, как только тот сможет его обработать. Такой подход уже используется в Mac OS X (launchd), позволяя этой ОС достигать впечатляющей скорости загрузки.Аналогичный принцип используется systemd и при запуске служб, использующих шину D-Bus.Кроме того, возможен автоматический запуск служб при обращении к заданным сокетам (см. ниже).</li>
<li><strong>Фоновое монтирование</strong>. Такие операции, как монтирование, проверка и активация квот файловых систем, занимают весьма значительную долю загрузочного времени. В большинстве современных систем они выполняются последовательно, до запуска всех демонов. Systemd же предлагает монтировать не-жизненно-важные ФС только тогда, когда они кому-то понадобятся. Для этого используется механизм AutoFS. Например, многие служебные демоны вовсе не обязаны ждать, пока смонтируется огромный и к тому же зашифрованный /home.Разумеется, этот подход неприменим к /, /proc, /sys и т.п.</li>
<li><strong>Минимизация числа вспомогательных процессов</strong>. В настоящее время значительная часть работ по инициализации производится шелл-скриптами, что приводит к колоссальным времязатратам. В частности, Леннарт пишет:<br />
<blockquote><p>On my system the scripts in /etc/init.d call grep at least 77 times. awk is called 92 times, cut 23 and sed 74,</p></blockquote>
<p>при этом замечая, что почти каждый такой запуск влечет накладные расходы на поиск библиотек, подгрузку данных интернационализации (i18n) и т.п. В качестве альтернативы Леннарт предлагает предлагает переписать критичные участки на C, а также вынести часть функционала в самих демонов и в Systemd. Сейчас для Systemd уже готовы написанные на C подсистемы монтирования и установки имени хоста. До полной победы, отмечает Леннарт, работа предстоит огромная, но результат того стоит.</li>
<li><strong>Отслеживание процессов</strong>. В ныне используемых системах инициализации в принципе возможна такая ситуация, когда при неправильном форке процесс может «потеряться». Например, так может произойти с некорректно написанным CGI-приложением, и процесс останется работать даже после остановки веб-сервера. Для предотвращения таких ситуаций Systemd использует интегрированный в ядро Linux механизм контрольных групп (cgroups). Если приложение не имеет доступа к псевдо-ФС, управляющей работой cgroups, то оно не может самостоятельно покинуть свою группу и «потеряться».Также к этой группе задач относится и автоматический перезапуск демонов, перенаправление их stdout/stderr на выбранные TTY или в системный журнал, регистрация всех запусков и остановок служб, и многое другое.</li>
<li><strong>Ограничение процессов</strong>. Systemd предоставляет множество возможностей ограничить или расширить полномочия процессов, контролируя такие параметры, как uid, gid, umask, рабочий и корневой каталоги, класс и приоритет CPU и I/O, наличие доступа на чтение и запись к смонтированным файловым системам и отдельным каталогам и т.п. Также можно использовать возможности по ограничению ресурсов, предоставляемые cgroups.</li>
</ul>
<p>Базовым элементом Systemd являются модули (units), которые связаны между собой и имеют определенный тип. Каждый модуль может требовать для своей работы другие модули, конфликтовать с модулями, запускаться только после или до определенного модуля (директивы конфигурации Requires, Conflicts, Before, After, Wants). Из типов модулей определены:</p>
<ul>
<li><strong>service</strong> — обычный демон, поддерживающий операции start, stop, restart, reload. Может быть представлен родным (native) файлом конфигурации systemd или System V init-скриптом.</li>
<li><strong>socket</strong>. При обращении к сокету генерируется событие, для которого можно настроить обработчик. Например, автоматически запускать определенные службы при обращении к заданному сокету. В этом отношении systemd похож на давно известный (x)inetd, однако при этом поддерживает unix domain сокеты и FIFO.</li>
<li><strong>device</strong>. Отметив нужные устройства в конфигурации udev, впоследствии можно использовать такие события, как появление и удаление устройства, в качестве событий systemd, назначив на них обработчики. Например, при появлении устройства bluetooth будет запущена соответствующая служба.</li>
<li><strong>mount</strong>. Systemd контролирует все точки монтирования файловых систем. В целях обратной совместимости поддерживается сбор информации о точках монтирования из /etc/fstab.</li>
<li><strong>automount</strong>. Для помеченных таким образом точек монтирования, монтирование выполняется только при обращении к ним.</li>
<li><strong>target</strong>. Более гибкий аналог уровней исполнения (runlevels), используемых в System V init. Представляет собой группу служб, объединенных по функциональному назначению. Например, multi-user.target идентичен runlevel 5, а bluetooth.target приводит к инициализации подсистемы bluetooth.</li>
<li><strong>snapshot</strong> — во многом похож на target. Позволяет «запомнить» существующую конфигурацию units (запущенных служб, открытых сокетов, смонтированных ФС) с тем, чтобы в дальнейшем восстановить это состояние. Позволяет, например, перейти в emergency shell (сейчас это init 1), а затем полностью восстановить набор запущенных служб. Другой пример — выход системы из состояния suspend.</li>
</ul>
<p>Надо заметить, что Systemd отличается от SMF, во-первых, тем, что позволяет оперировать не только зависимостями между службами, но и событиями, например, «готовность устройства» или «обращение к сокету». Во-вторых, systemd использует более простой формат файлов конфигурации (.desktop aka .INI против XML в SMF).</p>
<p>От upstart же Systemd отличается более высокой степенью параллелизации, и как следствие, более высокой скоростью загрузки. Например, если демон A требует для работы сокет, открытый демоном B, то upstart сначала запустит демона B, а затем демона A, в то время как Systemd создаст сокет сам и запустит обоих демонов одновременно, что занимает примерно в два раза меньше времени. Используемый в upstart принцип, когда ключевыми событиями является лишь запуск и остановка демона, Леннарт и его коллеги считают изначально неэффективным.</p>
]]></content:encoded>
			<wfw:commentRss>http://UbuntuLinux.ru/soft/system/systemd-servis-inicializacii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
