Systemd: различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
м (→‎Зачем переходить на systemd?: мелкое исправление "фона" Q-A)
 
(не показано 19 промежуточных версий 9 участников)
Строка 1: Строка 1:
[[Категория:Admin]]
{{W}}


Для ALT Linux [http://lists.altlinux.org/pipermail/sisyphus/2011-January/351784.html собран systemd].  
Для ALT Linux [http://lists.altlinux.org/pipermail/sisyphus/2011-January/351784.html собран systemd].  
Строка 38: Строка 38:
необходимо руками создать символические ссылки для важных стартующих сервисов (вроде NetworkManager.service)или при первой загрузке, скорее всего придётся подождать несколько минут, пока systemd даст консоль.
необходимо руками создать символические ссылки для важных стартующих сервисов (вроде NetworkManager.service)или при первой загрузке, скорее всего придётся подождать несколько минут, пока systemd даст консоль.


Что бы network.service запустился выполнить команды:
Чтобы network.service запустился выполнить команды:


<source lang="bash">
<source lang="bash">
Строка 65: Строка 65:


=== Дополнительные рекомендации ===
=== Дополнительные рекомендации ===
* чтобы загружать модуль autofs4 как можно раньше добавьте:
* чтобы загружать модуль autofs4 как можно раньше, добавьте в /etc/initrd.mk:
<source lang="bash">MODULES_PRELOAD += autofs4</source>
<source lang="bash">MODULES_PRELOAD += autofs4</source>
в /etc/initrd.mk (и перегенерите имидж, запустив make-initrd)
и перегенерите имидж, запустив make-initrd.


* systemd поддерживает загрузку модулей из /etc/modules-load.d/*.conf
* systemd поддерживает загрузку модулей из /etc/modules-load.d/*.conf


* время загрузки разных сервисов и можно узнать установив пакет systemd-analyze и используя одноименную утилиту.
* время загрузки разных сервисов можно узнать утилитой systemd-analyze из одноименного пакета.
 
* если на разделе есть ошибки, для отключения его остановки добавьте для него опцию {{term|nofail}} в {{path|/etc/fstab}}


===Особенности===
===Особенности===
Строка 77: Строка 79:
(цитата отсюда - http://www.opennet.ru/opennews/art.shtml?num=27218)
(цитата отсюда - http://www.opennet.ru/opennews/art.shtml?num=27218)


:"systemd (system daemon) реализует принципиально новый подход к инициализации и контролю работы системы. Одним из ключевых новшеств этого подхода является высокая степень параллелизации запуска служб при инициализации системы, за счет активного использования возможностей сокетов, что в перспективе позволяет добиться гораздо более высокой скорости, чем традиционный подход с последовательным запуском взаимозависимых служб, используемый, например, в upstart. Другим важным моментом является контроль над точками монтирования (не-жизненно-важные файловые системы можно монтировать только при первом обращении к ним, не тратя на это время при инициализации системы) и устройствами (можно запускать и останавливать определенные службы и при появлении или удалении заданных устройств)."  
:"systemd (system daemon) реализует принципиально новый подход к инициализации и контролю работы системы. Одним из ключевых новшеств этого подхода является высокая степень параллелизации запуска служб при инициализации системы, за счет активного использования возможностей сокетов, что в перспективе позволяет добиться гораздо более высокой скорости, чем традиционный подход с последовательным запуском взаимозависимых служб, используемый, например, в upstart. Другим важным моментом является контроль над точками монтирования (не-жизненно-важные файловые системы можно монтировать только при первом обращении к ним, не тратя на это время при инициализации системы) и устройствами (можно запускать и останавливать определенные службы и при появлении или удалении заданных устройств)."
 
Новинкой является и убивание <tt>screen</tt> после завершения сессии, из которой тот был запущен; если данное новшество чрезмерно революционно, установите способствующий передвижению пакет {{pkg|systemd-settings-disable-kill-user-processes}}.
 
===Зачем переходить на systemd?===
===Зачем переходить на systemd?===
#быстрая загрузка -- важно для десктопов, иногда и для серверов тоже;
#быстрая загрузка -- важно для десктопов, иногда и для серверов тоже;
#более надежная загрузка, за счет параллельности. В отличии от sysvinit - подвисание при запуске одного сервиса не приведет к остановке всего процесса загрузки (тормоза с ntpd если приходится загружаться отключившись от сети, как пример);
#более надежная загрузка за счет параллельности. В отличие от sysvinit - подвисание при запуске одного сервиса не приведет к остановке всего процесса загрузки (тормоза с ntpd, если приходится загружаться, отключившись от сети, как пример);
#systemd это не просто запускалка сервисов. Оно еще и умеет их поддерживать запущеными (то, для чего я использую сейчас daemontools, а многие другие используют monit);
#systemd это не просто запускалка сервисов. Оно еще и умеет их поддерживать запущенными (то, для чего я использую сейчас daemontools, а многие другие используют monit);
#более надежная система порядка запуска. Циферки, как известно, иногда приводят к тому что мантейнеры ошибаются. К счастью за годы мы многие такие баги вытоптали, но, увы, иногда появляются новые сервисы :) Указать зависимость между сервисами надежнее и предсказуемее нежели циферки.<br>
#более надежная система порядка запуска. Циферки, как известно, иногда приводят к тому, что мейнтейнеры ошибаются. К счастью, за годы мы многие такие баги вытоптали, но, увы, иногда появляются новые сервисы :) Указать зависимость между сервисами надежнее и предсказуемее, нежели циферки.<br>
Денис Смирнов http://lists.altlinux.org/pipermail/sisyphus/2011-March/353142.html
Денис Смирнов http://lists.altlinux.org/pipermail/sisyphus/2011-March/353142.html
<br>Ещё:
<br>Ещё:
  Q: И вот скажите мне, стоит ли бороться за то, что мой ноут загрузится на одну минуту быстрее раз в два месяца ?
  Q: И вот скажите мне, стоит ли бороться за то, что мой ноут загрузится на одну минуту быстрее раз в два месяца?
 
  A: Стоит бороться за то, что как только ты нажмешь hardware key для включения/выключения WiFi, соответственно <br>запустится/остановится нужный сервис, к примеру.
  A: Стоит бороться за то, что как только ты нажмешь hardware key для включения/выключения WiFi, соответственно запустится/остановится нужный сервис, к примеру.
  А также что при втыкании bluetooth dongle -- поднимется bluetooth стек.
  А также что при втыкании bluetooth dongle -- поднимется bluetooth стек.
  А также что перед suspend часть сервисов таки остановится, а после suspend запустится заново.
  А также что перед suspend часть сервисов таки остановится, а после suspend запустится заново.


  Q: Или сервер, который перезагружается раз в год, сможет это сделать примерно на 8 секунд быстрее ?
  Q: Или сервер, который перезагружается раз в год, сможет это сделать примерно на 8 секунд быстрее?
A: Или что когда на этом сервере упадет сервис, его автоматом перезапустят. Из коробки. Без необходимости настраивать monit <s>(который, в отличие от systemd, неспособен отличить, заглушили мы сервис сами или он упал)</s><ref>ещё как способен, если сказать {{cmd|monit unmonitor сервис}}</ref>.


A: Или что когда на этом сервере упадет сервис, его автоматом перезапустят. Из коробки. Без необходимости <br>настраивать monit (который в отличии от systemd неспособен отличить заглушили мы сервис сами -- или он упал).
''хотя правильнее починить этот сервис, а не делать систему из подпорок''


  Q: Я не спорю - где-то безусловно есть необходимость в systemd, но на мой взгляд лично для меня его польза сильно<br> преувеличена.
  Q: Я не спорю - где-то безусловно есть необходимость в systemd, но на мой взгляд, лично для меня его польза сильно преувеличена.
 
  A:Скорость загрузки это полезный побочный эффект. К счастью, не единственный.
  A: Скорость загрузки -- это полезный побочный эффект. К счастью, не единственный. Можно спорить о качестве реализации, но сам подход -- очень хороший. И существенно лучше sysvinit.<ref>...особенно когда ждём свопа, заботливо отформатированного установкой альта на соседний диск, сколько там минут?</ref>
Можно спорить о качестве реализации, но сам подход -- очень хороший. И существенно лучше sysvinit.  
http://lists.altlinux.org/pipermail/sisyphus/2011-March/353143.html
http://lists.altlinux.org/pipermail/sisyphus/2011-March/353143.html


См. тж. [http://lists.debian.org/debian-devel/2011/07/msg00269.html A few observations about systemd] (debian-devel@) и [http://lists.debian.org/debian-devel/2011/07/msg00281.html ответ Леннарта].
См. тж. [http://lists.debian.org/debian-devel/2011/07/msg00269.html A few observations about systemd] (debian-devel@) и [http://lists.debian.org/debian-devel/2011/07/msg00281.html ответ Леннарта].


=== Отладка systemd ===
=== Отладка systemd ===
Строка 109: Строка 114:
=== О systemd на русском языке ===
=== О systemd на русском языке ===
* [http://ru.opensuse.org/SDB:Systemd Статья начального уровня] на openSUSE.org
* [http://ru.opensuse.org/SDB:Systemd Статья начального уровня] на openSUSE.org
* [https://wiki.archlinux.org/index.php/Systemd_(Русский) Русский перевод статьи про systemd на  ArchWiki]
* [http://www.opennet.ru/man.shtml?topic=systemd Перевод systemd(1)] на OpenNET
* [http://www.opennet.ru/man.shtml?topic=systemd Перевод systemd(1)] на OpenNET
* [http://wiki.opennet.ru/Systemd_%D0%B4%D0%BB%D1%8F_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2 Systemd для администраторов] на OpenNET, [http://lexpr.ru/node/498 существенно более актуальная версия перевода] и [http://www2.kangran.su/~nnz/pub/s4a/ ещё более актуальная версия перевода в TeX/PDF]
* [http://wiki.opennet.ru/Systemd_%D0%B4%D0%BB%D1%8F_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2 Systemd для администраторов] на OpenNET, [http://lexpr.ru/node/498 существенно более актуальная версия перевода] и [http://www2.kangran.su/~nnz/pub/s4a/ ещё более актуальная версия перевода в TeX/PDF]
* [http://tux-the-penguin.blogspot.com/2010/09/systemd.html Система инициализации Systemd. Часть I]
* [http://tux-the-penguin.blogspot.com/2010/09/systemd.html Система инициализации Systemd. Часть I]
* [http://tux-the-penguin.blogspot.com/2010/09/systemd-ii.html Система инициализации Systemd. Часть II]
* [http://tux-the-penguin.blogspot.com/2010/09/systemd-ii.html Система инициализации Systemd. Часть II]
== Ссылки ==
*[[Journald]]
*[[Участник:HihinRuslan/Systemd|Улучшаем Systemd]]
*[[БыстраяЗаменаCrontabНаTimers|Простая замена crontab'ов на таймеры systemd]]
*[[Systemd-timesyncd|Синхронизация времени со внешними источниками посредством systemd]]
== Примечания ==
<references/>
{{Category navigation|title=Системному администратору|category=Admin|sortkey={{SUBPAGENAME}}}}
[[category:systemd]]

Текущая версия от 11:49, 27 апреля 2023

Логотип Википедии
В Википедии есть обзорная статья по теме «Systemd».

Для ALT Linux собран systemd.

Установка systemd

Пользователи Sisyphus могут уже установить systemd:

apt-get install systemd

Чтобы "попробовать" systemd, не переходя на него полностью, нужно временно прописать строчку init=/sbin/systemd в параметры ядра. В lilo это можно сделать на этапе загрузки - когда выведется меню, набрать на клавиатуре init=/sbin/systemd и нажать Enter. В случае каких-то проблем достаточно просто перезагрузить компьютер, и вернуться обратно к SysVinit.

Чтобы использовать systemd по умолчанию при загрузке, надо отредактировать /etc/sysconfig/grub2 и привести строку GRUB_CMDLINE_LINUX_DEFAULT к такому виду:

GRUB_CMDLINE_LINUX_DEFAULT='panic=30 init=/sbin/systemd'

После редактирования этого файла нужно вызвать:

grub-mkconfig -o /boot/grub/grub.cfg

Для пользователей lilo нужно в /etc/lilo.conf, в строчку append="" дописать внутри кавычек init=/sbin/systemd, после чего вызвать команду

lilo

Или просто установить systemd-sysvinit (пока не рекомендуется, так как в этом случае у вас возможности вернуться к SysVinit не будет).

apt-get install systemd-sysvinit

и ничего прописывать ядру не надо (в том числе и в lilo).

Не надо использовать два способа одновременно.

Настройка перед первой перезагрузкой

Так как на данный момент отсутствует механизм плавного перехода на systemd (состояние сервисов из init, не переносится на unit-ы), необходимо руками создать символические ссылки для важных стартующих сервисов (вроде NetworkManager.service)или при первой загрузке, скорее всего придётся подождать несколько минут, пока systemd даст консоль.

Чтобы network.service запустился выполнить команды:

# ln -s '/lib/systemd/system/network.service' '/etc/systemd/system/network.target.wants/network.service'
# ln -s '/lib/systemd/system/network.target' '/etc/systemd/system/multi-user.target.wants/network.target'

Для NetworkManager:

# ln -s '/lib/systemd/system/NetworkManager.service' '/etc/systemd/system/dbus-org.freedesktop.NetworkManager.service'
# ln -s '/lib/systemd/system/NetworkManager.service' '/etc/systemd/system/network.target.wants/NetworkManager.service'

Можно перезагружаться и пробовать.

NFS и LDAP

Если вы используете LDAP и/или NFS (например, офисная сеть на Кентавре/Ковчеге), то после установки systemd вместо sysvinit у вас ничего работать не будет. Для быстрого исправления нужно:

  • дополнительно к NetworkManager включить сервис NetworkManager-wait-online.service:
systemctl enable NetworkManager-wait-online.service
  • в /etc/fstab во все записи сетевых ресурсов добавить опцию _netdev или x-systemd.automount (согласно FAQ: http://www.altlinux.org/FAQ)
  • дополнительно включить сервисы nfslock, idmapd и сопутствующие, если понадобится (аналогично systemctl enable)

Дополнительные рекомендации

  • чтобы загружать модуль autofs4 как можно раньше, добавьте в /etc/initrd.mk:
MODULES_PRELOAD += autofs4

и перегенерите имидж, запустив make-initrd.

  • systemd поддерживает загрузку модулей из /etc/modules-load.d/*.conf
  • время загрузки разных сервисов можно узнать утилитой systemd-analyze из одноименного пакета.
  • если на разделе есть ошибки, для отключения его остановки добавьте для него опцию nofail в /etc/fstab

Особенности

Неполное описание преимуществ в сравнении с upstart и SysV-init
(цитата отсюда - http://www.opennet.ru/opennews/art.shtml?num=27218)

"systemd (system daemon) реализует принципиально новый подход к инициализации и контролю работы системы. Одним из ключевых новшеств этого подхода является высокая степень параллелизации запуска служб при инициализации системы, за счет активного использования возможностей сокетов, что в перспективе позволяет добиться гораздо более высокой скорости, чем традиционный подход с последовательным запуском взаимозависимых служб, используемый, например, в upstart. Другим важным моментом является контроль над точками монтирования (не-жизненно-важные файловые системы можно монтировать только при первом обращении к ним, не тратя на это время при инициализации системы) и устройствами (можно запускать и останавливать определенные службы и при появлении или удалении заданных устройств)."

Новинкой является и убивание screen после завершения сессии, из которой тот был запущен; если данное новшество чрезмерно революционно, установите способствующий передвижению пакет systemd-settings-disable-kill-user-processes.

Зачем переходить на systemd?

  1. быстрая загрузка -- важно для десктопов, иногда и для серверов тоже;
  2. более надежная загрузка за счет параллельности. В отличие от sysvinit - подвисание при запуске одного сервиса не приведет к остановке всего процесса загрузки (тормоза с ntpd, если приходится загружаться, отключившись от сети, как пример);
  3. systemd это не просто запускалка сервисов. Оно еще и умеет их поддерживать запущенными (то, для чего я использую сейчас daemontools, а многие другие используют monit);
  4. более надежная система порядка запуска. Циферки, как известно, иногда приводят к тому, что мейнтейнеры ошибаются. К счастью, за годы мы многие такие баги вытоптали, но, увы, иногда появляются новые сервисы :) Указать зависимость между сервисами надежнее и предсказуемее, нежели циферки.

Денис Смирнов http://lists.altlinux.org/pipermail/sisyphus/2011-March/353142.html
Ещё:

Q: И вот скажите мне, стоит ли бороться за то, что мой ноут загрузится на одну минуту быстрее раз в два месяца?

A: Стоит бороться за то, что как только ты нажмешь hardware key для включения/выключения WiFi, соответственно запустится/остановится нужный сервис, к примеру.
А также что при втыкании bluetooth dongle -- поднимется bluetooth стек.
А также что перед suspend часть сервисов таки остановится, а после suspend запустится заново.
Q: Или сервер, который перезагружается раз в год, сможет это сделать примерно на 8 секунд быстрее?

A: Или что когда на этом сервере упадет сервис, его автоматом перезапустят. Из коробки. Без необходимости настраивать monit (который, в отличие от systemd, неспособен отличить, заглушили мы сервис сами или он упал)[1].

хотя правильнее починить этот сервис, а не делать систему из подпорок

Q: Я не спорю - где-то безусловно есть необходимость в systemd, но на мой взгляд, лично для меня его польза сильно преувеличена.

A: Скорость загрузки -- это полезный побочный эффект. К счастью, не единственный. Можно спорить о качестве реализации, но сам подход -- очень хороший. И существенно лучше sysvinit.[2]

http://lists.altlinux.org/pipermail/sisyphus/2011-March/353143.html

См. тж. A few observations about systemd (debian-devel@) и ответ Леннарта.

Отладка systemd

О systemd на русском языке

Ссылки

Примечания

  1. ещё как способен, если сказать monit unmonitor сервис
  2. ...особенно когда ждём свопа, заботливо отформатированного установкой альта на соседний диск, сколько там минут?