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

Материал из ALT Linux Wiki
Нет описания правки
(не показано 12 промежуточных версий 8 участников)
Строка 1: Строка 1:
[[Категория:Admin]]
{{W}}
{{W}}


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


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


<source lang="bash">
<source lang="bash">
Строка 67: Строка 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}}


===Особенности===
===Особенности===
Строка 82: Строка 82:
===Зачем переходить на 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 (который, в отличие от systemd, неспособен отличить, заглушили мы сервис сами или он упал).


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


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


  A:Скорость загрузки это полезный побочный эффект. К счастью, не единственный.
  A: Скорость загрузки -- это полезный побочный эффект. К счастью, не единственный. Можно спорить о качестве реализации, но сам подход -- очень хороший. И существенно лучше sysvinit.
Можно спорить о качестве реализации, но сам подход -- очень хороший. И существенно лучше 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 ===
Строка 117: Строка 117:
* [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]]


[[Journald]]
{{Category navigation|title=Системному администратору|category=Admin|sortkey={{SUBPAGENAME}}}}
[[Участник:HihinRuslan/Systemd Улучшаем Systemd]]
[[category:systemd]]

Версия от 03:09, 15 июля 2019

Логотип Википедии
В Википедии есть обзорная статья по теме «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. Другим важным моментом является контроль над точками монтирования (не-жизненно-важные файловые системы можно монтировать только при первом обращении к ним, не тратя на это время при инициализации системы) и устройствами (можно запускать и останавливать определенные службы и при появлении или удалении заданных устройств)."

Зачем переходить на 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, неспособен отличить, заглушили мы сервис сами или он упал).

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

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

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

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

Отладка systemd

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

Ссылки по теме