Systemd: различия между версиями
Дым (обсуждение | вклад) (→Ссылке по теме: "Ссылки" вместо "Ссылке".) |
м (→Зачем переходить на systemd?: мелкое исправление "фона" Q-A) |
||
(не показано 8 промежуточных версий 3 участников) | |||
Строка 65: | Строка 65: | ||
=== Дополнительные рекомендации === | === Дополнительные рекомендации === | ||
* чтобы загружать модуль autofs4 как можно раньше добавьте: | * чтобы загружать модуль autofs4 как можно раньше, добавьте в /etc/initrd.mk: | ||
<source lang="bash">MODULES_PRELOAD += autofs4</source> | <source lang="bash">MODULES_PRELOAD += autofs4</source> | ||
и перегенерите имидж, запустив make-initrd. | |||
* systemd поддерживает загрузку модулей из /etc/modules-load.d/*.conf | * systemd поддерживает загрузку модулей из /etc/modules-load.d/*.conf | ||
* время загрузки разных сервисов | * время загрузки разных сервисов можно узнать утилитой systemd-analyze из одноименного пакета. | ||
* | * если на разделе есть ошибки, для отключения его остановки добавьте для него опцию {{term|nofail}} в {{path|/etc/fstab}} | ||
===Особенности=== | ===Особенности=== | ||
Строка 79: | Строка 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, если приходится загружаться, отключившись от сети, как пример); | ||
#systemd это не просто запускалка сервисов. Оно еще и умеет их поддерживать запущенными (то, для чего я использую сейчас daemontools, а многие другие используют monit); | #systemd это не просто запускалка сервисов. Оно еще и умеет их поддерживать запущенными (то, для чего я использую сейчас daemontools, а многие другие используют monit); | ||
#более надежная система порядка запуска. Циферки, как известно, иногда приводят к тому что | #более надежная система порядка запуска. Циферки, как известно, иногда приводят к тому, что мейнтейнеры ошибаются. К счастью, за годы мы многие такие баги вытоптали, но, увы, иногда появляются новые сервисы :) Указать зависимость между сервисами надежнее и предсказуемее, нежели циферки.<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, соответственно запустится/остановится нужный сервис, к примеру. | A: Стоит бороться за то, что как только ты нажмешь hardware key для включения/выключения WiFi, соответственно запустится/остановится нужный сервис, к примеру. | ||
А также что при втыкании bluetooth dongle -- поднимется bluetooth стек. | А также что при втыкании bluetooth dongle -- поднимется bluetooth стек. | ||
Строка 94: | Строка 97: | ||
Q: Или сервер, который перезагружается раз в год, сможет это сделать примерно на 8 секунд быстрее? | Q: Или сервер, который перезагружается раз в год, сможет это сделать примерно на 8 секунд быстрее? | ||
A: Или что когда на этом сервере упадет сервис, его автоматом перезапустят. Из коробки. Без необходимости настраивать monit <s>(который, в отличие от systemd, неспособен отличить, заглушили мы сервис сами или он упал)</s><ref>ещё как способен, если сказать {{cmd|monit unmonitor сервис}}</ref>. | |||
''хотя правильнее починить этот сервис, а не делать систему из подпорок'' | |||
Q: Я не спорю - где-то безусловно есть необходимость в systemd, но на мой взгляд, лично для меня его польза сильно преувеличена. | Q: Я не спорю - где-то безусловно есть необходимость в systemd, но на мой взгляд, лично для меня его польза сильно преувеличена. | ||
A: Скорость загрузки -- это полезный побочный эффект. К счастью, не единственный. Можно спорить о качестве реализации, но сам подход -- очень хороший. И существенно лучше sysvinit. | A: Скорость загрузки -- это полезный побочный эффект. К счастью, не единственный. Можно спорить о качестве реализации, но сам подход -- очень хороший. И существенно лучше sysvinit.<ref>...особенно когда ждём свопа, заботливо отформатированного установкой альта на соседний диск, сколько там минут?</ref> | ||
http://lists.altlinux.org/pipermail/sisyphus/2011-March/353143.html | http://lists.altlinux.org/pipermail/sisyphus/2011-March/353143.html | ||
Строка 115: | Строка 120: | ||
* [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]] | *[[Journald]] | ||
*[[Участник:HihinRuslan/Systemd| Улучшаем Systemd]] | *[[Участник:HihinRuslan/Systemd|Улучшаем Systemd]] | ||
*[[БыстраяЗаменаCrontabНаTimers|Простая замена crontab'ов на таймеры systemd]] | |||
*[[Systemd-timesyncd|Синхронизация времени со внешними источниками посредством systemd]] | |||
== Примечания == | |||
<references/> | |||
{{Category navigation|title=Системному администратору|category=Admin|sortkey={{SUBPAGENAME}}}} | {{Category navigation|title=Системному администратору|category=Admin|sortkey={{SUBPAGENAME}}}} | ||
[[category:systemd]] | [[category:systemd]] |
Текущая версия от 11:49, 27 апреля 2023
Для 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?
- быстрая загрузка -- важно для десктопов, иногда и для серверов тоже;
- более надежная загрузка за счет параллельности. В отличие от sysvinit - подвисание при запуске одного сервиса не приведет к остановке всего процесса загрузки (тормоза с ntpd, если приходится загружаться, отключившись от сети, как пример);
- systemd это не просто запускалка сервисов. Оно еще и умеет их поддерживать запущенными (то, для чего я использую сейчас daemontools, а многие другие используют monit);
- более надежная система порядка запуска. Циферки, как известно, иногда приводят к тому, что мейнтейнеры ошибаются. К счастью, за годы мы многие такие баги вытоптали, но, увы, иногда появляются новые сервисы :) Указать зависимость между сервисами надежнее и предсказуемее, нежели циферки.
Денис Смирнов 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 на русском языке
- Статья начального уровня на openSUSE.org
- Русский перевод статьи про systemd на ArchWiki
- Перевод systemd(1) на OpenNET
- Systemd для администраторов на OpenNET, существенно более актуальная версия перевода и ещё более актуальная версия перевода в TeX/PDF
- Система инициализации Systemd. Часть I
- Система инициализации Systemd. Часть II
Ссылки
- Journald
- Улучшаем Systemd
- Простая замена crontab'ов на таймеры systemd
- Синхронизация времени со внешними источниками посредством systemd