LINUX.ORG.RU
ФорумTalks

К спорам по systemd и debian

 ,


8

1

Делаю пост сюда, чтобы линковать его людям. Ибо на лоре есть разметка

Ситуация: Живём много лет на sysvinit, появляются всякие openrc и upstart, на которых работают две системы их большого количества. Появляется systemd и сразу большое количество систем переходят на него. Почему? Обьясню на примере debian, тестовой ветки и systemd из этой же ветки.

Почему появилось желание поменять sysvinit на чтото другое?

1) Структура скриптов для sysvinit подразумевает только возможность запуска скриптов с флагами start и stop. Внутреннее устройство скрипта ЦЕЛИКОМ на совести разработчика. Конечно это не повод считать что все скрипты для sysv говно, но всётаки встречаются такие экземпляры, что хочется просто плакать, когда их читаешь. Особенно изза того, что большую часть логики слежением за стотоянем службы пишется на баше. Хотя нынче половина инит скриптов завязанны на start-stop-service. В итоге - каша.

2)Никаких средств для учёта очерёдности запуска сервисов и паралельной их загрузки. Да, есть insserv, только оно ещё больше каши добавляет в скрипты инициализации.

Почему не upstart?

Уже несколько лет в дебиане висит, и ещё не пыталось стать стандартной системой инициализации. В нынешней ситуации, когда говорят о фичах, которые уже есть в других системах инициализации - говорят - «пфф, мы можем тоже такое написать» (тот же cgroup). В итоге функционал апстарта в текущем его состоянии ушёл не дальше sysvinit+insserv+start-stop-daemon. Зато хипстер-аура вокруг него просто знатная.

Почему не openrc?

Оно ещё старше, чем upstart, но разговоры о нём толком начались только при выборе между upstart и systemd. В итоге оно на бумаге конечно лучше чем systemd, но практически это даже проверить не возможно. Некая мифическая сущность, сферическая и в вакууме.

Почему systemd?

1) Он уже работает в тестинге, и не полагется на fallback на sysvinit. Когда я последний раз пробовал upstart без sysvinit скриптов он не работал, и все его преимущества скатывались в ничто. Просто не использовались. В итоге ситуация выглядит так:

systemd - сначала сделали поддержу, потом ещё предложили как стандарт.

openrc и upstart - сначала предложили, а поддержки нету, никакой. Вот если выберут - то поддержка будет. По мне - нарушение причинно-следственной связи.

2) Использование cgroup невероятно упрощает внутреннюю логику юнитов для запуска сервисов. СИИИИИИИИИИИИИИИИИИИИИИИИИИИИИИИИИЛЬНО.

Вот например юнит для bluetooth демона

[Unit]
Description=Bluetooth service
[Service]
Type=dbus
BusName=org.bluez
ExecStart=/usr/sbin/bluetoothd -n

[Install]
WantedBy=bluetooth.target

Alias=dbus-org.bluez.service
И всё, так как bluetooth не требует какойто хитрой логики для остановки сервиса, он просто убивается. Пид ловится через cgroup

а теперь выполним одну весёлую комманду

khades@debian:/etc/init.d$ cat /etc/init.d/bluetooth |wc
201     584    4474
Разительная разница

А теперь о мифах про systemd.

JOURNALD БИНАРНЫЕ ЛОГИ ХУЖЕ ЧЕМ В RSYSLOG

syslog - это стандарт отправки и регистрации сообщений о происходящих в системе событиях

rsyslog - программа для организации хранения этих сообщений, полученных по системной шине, реализованной в ядре linux (/dev/log)

journald - легковесный сервис для хранения и чтения логов с хранением их в памяти для ускорения процессов ввода\вывода во время загрузки с ОПЦИОНАЛЬНЫМ хранением бинарей на диске. НЕ ЛОМАЕТ rsyslog.

PID 1: ВСЁ УПАДЁТ ЕСЛИ УПАДЁТ SYSTEMD

1) Почему systemd должен упасть?

2) Ядро тоже падает, давайте все ненавидеть ядро

PID 1: СИСТЕМД МНОГО ВСЕГО В ОДНОМ ПРОЦЕССЕ ДЕРЖИТ И МНОГО НА СЕБЯ БЕРЁТ!!!!

1) Для изоляции запускаемых процессов и придуман CGROUP.

2) khades@debian:~$ ps aux |grep systemd root 284 0.0 0.1 297788 11032 ? Ss фев13 0:01 /lib/systemd/systemd-journald root 295 0.0 0.0 42944 1924 ? Ss фев13 0:00 /lib/systemd/systemd-udevd root 2448 0.0 0.0 36928 1636 ? Ss фев13 0:00 /lib/systemd/systemd-logind

ПОТЦЕРИНГ ЧТОТО ПОМЕНЯЕТ И ВСЁ СЛОМАЕТСЯ

Даа, и это сразу попадёт в стейбл дебиана. инфа 100%.

И последнее, касаемо непортируемости на другие ядра. В нашем случае глупо не использовать передовую технологию (CGROUP) ради совместимости с принципиально другой системой, учитывая то количество ништяков, которое оно нам даёт реализовать. Я вообще в далёком будущем представляю как на помойку выкидывают selinux, потому что домены безопасности реализуют на основе namespaces и cgroup. Ах мечты, мечты.

★★

Последнее исправление: Khades (всего исправлений: 7)
Ответ на: комментарий от qnikst

зачем цитата, если эта изоляция и так уже работает на примере lxc?

namespaces и cgroup связанны, cgroup и user namespaces - нет

исправлюсь - pid namespaces и cgroups связанны

Khades ★★
() автор топика
Последнее исправление: Khades (всего исправлений: 1)

Ты бы осилил /etc/init.d/skeleton вообще бы был молодец.

Уже несколько лет в дебиане висит

Заодно тогда расскажи сколько upstart висит в RHEL 6 и сколько оно еще провесит.

Кстати, cgroups - это функциональность ядра и процессы можно рассовывать по контрольным группам не трогая систему инициализации вообще.

BigAlex ★★★
()
Ответ на: комментарий от x3al

Подожди. Он точно узнаёт, что на этом PID висит именно тот nginx или с него хватает соответствия имени?

argv, но если честно я не вижу проблемы, т.к. если в системе часть nginx-ов стартуется руками, а часть сервисами, то что-то не в порядке в конфигурации. Впрочем я готов выслушать валидный юзкейс и если он не покрывается предложить решение.

Даже не отрицаешь, что оно есть.

Дык оно есть везде, где сервис не фризится, пока программы убиваются сигналами и их отправка не атомарна (что сейчас так).

Кстати, кому принадлежит pid-файл и кто может в него писать? :)

настраиваемо, а по дефолту root. Если что root может менять аттрибуты в cgroupfs чем приводить systemd в состояние недоумения.

qnikst ★★★★★
()
Ответ на: комментарий от BigAlex

Заодно тогда расскажи сколько upstart висит в RHEL 6 и сколько оно еще провесит.

Я очень рад за rhel

Кстати, cgroups - это функциональность ядра и процессы можно рассовывать по контрольным группам не трогая систему инициализации вообще.

Дописав ещё пару десяток строчек в каждый файл в /etc/init.d

Khades ★★
() автор топика

Особенно изза того, что большую часть логики слежением за стотоянем службы пишется на баше.

С каких это пор вот это упоротое говно вдруг понадобилось в линуксе? За каким, мать вашу хреном вместо исправления ошибок в софтине понадобилось «следить за её состоянием»? С каких, едрить вас всех системпидоров, пор, у софтины появились какие-то иные состояния кроме «работает» и «срочно надо искать и исправлять баги»? Откуда, нахер, в линуксах взялись, пилять, какие-то нахер «службы»? Идите в жопу, сраные виндузятники, со своими сраными представлениями о работе ОС и вашей сраной виндузятной терминологией. Ваши перманентные высеры про ваш сраный системд уже не давно не доставляют лулзов, и больше похожи на бомбанувший пердак, от того, что нормальные люди клали с прибором на ваши потуги сделать из нормальной системы сраное говно.

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

Ваши перманентные высеры про ваш сраный системд уже не давно не доставляют лулзов, и больше похожи на бомбанувший пердак, от того, что нормальные люди клали с прибором на ваши потуги сделать из нормальной системы сраное говно.

Я вижу, что вы пришли своим великолепным постом решили показать эталон сдержанности и самобладания. :D

Khades ★★
() автор топика
Ответ на: комментарий от Khades

зачем цитата, если эта изоляция и так уже работает на примере lxc?

из того, что lxc использует cgroups и namespaces не следует связанность данных технологий. Цитата нужна для того, чтобы показать, что вы разбираетесь в предметной области, т.к. насколько мне известно (по чтению документации ядра и написанию поддержки cgroups в openrc) дела обстоят мягко говоря не так, как вы пишите.

namespaces и cgroup связанны, cgroup и user namespaces - нет

нет

исправлюсь - pid namespaces и cgroups связанны

исключительно тем, что это компоненты ядра.

qnikst ★★★★★
()
Ответ на: комментарий от Khades

Я вижу, что вы пришли своим великолепным постом решили показать эталон сдержанности и самобладания. :D

Мне мало еды. Засрали всё ведроидом и системд, тошнит уже от этого дерьма. Я как-то к более приличной еде привык.

Stanson ★★★★★
()
Ответ на: комментарий от qnikst

Цитата нужна для того, чтобы показать, что вы разбираетесь в предметной области, т.к. насколько мне известно (по чтению документации ядра и написанию поддержки cgroups в openrc) дела обстоят мягко говоря не так, как вы пишите.

Пойду просплюсь и подумаю над своим поведением.

Khades ★★
() автор топика
Ответ на: комментарий от Khades

подрелизного софта в дебе на порядок больше чем в rh или ubuntu
так что всяким засранцам нестрадающим обратной совместимостью и релизами, systemd как диверсия и праздник души.
и затянется все минимум на два релиза ...
судя по опыту прошлых подобных подвигов.

bedcasus
()
Ответ на: комментарий от Khades

Дописав ещё пару десяток строчек в каждый файл в /etc/init.d

в очередной раз прошу вас не писать о том, чего вы не знаете, этим вы ставите под удар то, что вы знаете. Т.к. человек читающий такие утверждения может решить, что вы не разбираетесь и в остальных вещах. (Я честно верю, что вы неплохо знаете systemd).

распихивиние процессов по цгруппам в openrc занимает 1 строку глобального конфига.

а настройка ресурсов по 1 строке на ресурс, как врочем и в systemd, только в случае openrc это делается в конфигурационном файле, а в случае с systemd в «переопределяющем» юните.

qnikst ★★★★★
()
Последнее исправление: qnikst (всего исправлений: 1)
Ответ на: комментарий от qnikst

настраиваемо, а по дефолту root

Кстати, в скольких init-скриптах из всех имеющихся может быть не так?

x3al ★★★★★
()
Ответ на: комментарий от x3al

есть шанс только если предприняты специальные действия, а так 0.

qnikst ★★★★★
()
Ответ на: комментарий от Khades
#
# /etc/rc.d/nginx: start, stop or retart nginx server
#

case $1 in
    start)
	if [ -s /var/run/nginx.pid -a ! -z "`pgrep nginx`" ]
	then
	    echo "nginx is already running"
	    exit 1
	fi
	/usr/sbin/nginx
	;;
    stop)
	/usr/sbin/nginx -s quit
	;;
    *)
	echo "usage: nginx [start|stop]"
	;;
esac

# End of file
Deleted
()
Ответ на: комментарий от Stanson

Кстати, да. Последнее время адско форсятся механизмы слежения за запущенными демонами, типа, только упадёт, а мы её хоп! И быренько перезапустим, хомячок даже заметить ничего не успеет.

Deleted
()
Ответ на: комментарий от Deleted

вариант сдампить всё и сдохнуть, в принципе тоже хорошо ложится на слежение за состоянием.

qnikst ★★★★★
()
Ответ на: комментарий от Khades

Должны ли они храниться в юнитах?

если они связаны непосредственно со стартом/стопом - да, именно. проводя аналогии: если инит это объект, то параметры - свойства объекта

Во внешних конфигах? Возможно.

т.е. раздувание и усложение системы на ровном месте. спасибо, жрите сами.

впихивать в во вьюху логику

я бы понял твою аналогию, если бы я предложил nginx'y отвечать на запросы в ините. но нет, ты просто сморозил херню.

Ford_Focus ★★★★★
()
Последнее исправление: Ford_Focus (всего исправлений: 1)
Ответ на: комментарий от Khades

Package openrc is not available

Авеабле он, experimental только

[Radio86-RK ~]$ apt-cache search ^openrc
openrc - dependency based init system (runlevel change mechanism)
openrc-dbg - dependency based init system (runlevel change mechanism) - debug

Deleted
()
Ответ на: комментарий от Deleted

а ну ок, я в сортах дебиана плохо разбираюсь :/

qnikst ★★★★★
()
Ответ на: комментарий от x3al

Но это же ЧИТАТЬ МАНЫ ОПЯТЬ МЫ РАЗУЧИЛИСЬ ЧИТАТЬ ДАЙТЕ НАМ ЖИТЬ С ИНИТСКРИПТАМИ ЗАЧЕМ МЕНЯТЬ.

Упячка! же...

FiXer ★★☆☆☆
()
Ответ на: комментарий от qnikst

Для любителей «неглубоко» есть возможность банально прописать ссылки на Ъ-скрипты хоть на бидоне.

FiXer ★★☆☆☆
()
Ответ на: комментарий от Stanson

если встречу в реале поставлю пиво. отлично сказано.

gear ★★★
()
Ответ на: комментарий от FiXer

и что? как будто в init-ах этого сделать нельзя..

qnikst ★★★★★
()
Ответ на: комментарий от dvrts

Ну мне например, он хорошо расставил все точки над i.

Ну а мне наоборот - красиво выбил буквы из под точек и теперь решительно не ясно где просто две i, а где ё.

Раньше я в общих чертах не понимал что происходит. Теперь окончательно запутался. Поддержки sysvinit скриптов теперь не будет? А как же те службы которые не перейдут сразу на systemd? Они не будут запускаться? А как мне самому добавить какое-то действие при загрузке системы? Про то что sysvinit поддерживает запуск скриптов с флагами start и stop написано, а как с этим в systemd нет - значит там просто ничего не поддерживается... Почему cgroup можно юзать только с systemd тоже не ясно, и что теперь со мной будет (я сейчас на убунте юзаю) не понятно. Я за брата начинаю переживать... Это хоть не уголовка?

Одним словом я вынес из треда, что systemd это некая система которая позволит все завалить просто убив её, обеспечит невозможность запуска некоторых демонов, а так же будет срать логами не только на диск, но и в оперативу... (((

Suntechnic ★★★★★
()
Ответ на: комментарий от Khades

Старт какойнить самбы до старта самой сети это же так весело

А почему нельзя запустить самбу после сети если у меня не systemd? А если запущу, как об этом кто-нибудь узнает?

Suntechnic ★★★★★
()
Ответ на: комментарий от FiXer

раньше сам инит-скрипт мог быть на питоне/пхп/руби

Ford_Focus ★★★★★
()

Почему systemd?

потому что писал его поцтеринг, и качество его поделий давно известно. раньше только звук шипел, теперь ещё и загружаться не будет.

thunar ★★★★★
()
Ответ на: комментарий от x0r

Просто большинство хейтеров — заурядные хомячки, которые в вопросе банально не разбираются. Своего мнения нет, но вот хомячковое высказать надо! И это грустно. ЛОР — в первую очередь технический портал.

X10Dead ★★★★★
()
Ответ на: комментарий от Khades

очевидно, что нетворк-манагер более менее нормально заработал через 5 тел после релиза. до этого все проблемы с сетью решались его удалением. очевиднго. что пульсаудио до сих пор хрипит и микрофон поганит. ждём того времени, когда линакс будет тупо падать в корку при загрузке.

thunar ★★★★★
()
Ответ на: комментарий от X10Dead

Обратное тоже верно:

большинство любителей systemd — заурядные хомячки, которые в вопросе банально не разбираются. Своего мнения нет, но вот хомячковое высказать надо! И это грустно. ЛОР — в первую очередь технический портал.

Что не мешает иметь толковые мнения людям с разным отношением к системд.

qnikst ★★★★★
()
Последнее исправление: qnikst (всего исправлений: 1)
Ответ на: комментарий от thunar

Однако ты не прав - nm какое-то время действительно не позволял настроить все, что нужно на практике и приходилось лазить в консоль, но однако он ничего не портил. Сейчас он лучший. Примитивный и удобный. Ты не пробовал настраивать вифи в венде? А я раз попробовал - с меня хватит. Что касается пульсы, то ловил проблемы только дважды - с настройкой древних версий скайпа (при чем не уверен, что виновата пульса) и с doom'ом. Ну тут тоже без комментариев.

Suntechnic ★★★★★
()
Ответ на: комментарий от thunar

что пульсаудио до сих пор хрипит и микрофон погани

Скайпопроблемы. В raidcall все работает как надо. да и в самом скайпе работало, пока его не удалил.

roman77 ★★★★★
()
Ответ на: комментарий от thunar

Такое бывает, если mic boost выкручен на всю.

logitech g330 - все ок.

roman77 ★★★★★
()
Последнее исправление: roman77 (всего исправлений: 1)
Ответ на: комментарий от qnikst

Боюсь, что технические порталы давно перекочевали в англоязычный интернет, а ЛОР остался ЛОРом.

x3al ★★★★★
()

В итоге функционал апстарта в текущем его состоянии ушёл не дальше sysvinit+insserv+start-stop-daemon.

4.2

JOURNALD БИНАРНЫЕ ЛОГИ ХУЖЕ ЧЕМ В RSYSLOG

Да, в rsyslog бинарные логи лучше.

Для изоляции запускаемых процессов и придуман CGROUP

Што?

Gotf ★★★
()

Молодец, а теперь напиши статью на тему 'почему виндовс лучше линуксов'.

Lavos ★★★★★
()

Вброс и передергивания, приправленные техническим жаргоном.

tailgunner ★★★★★
()
Ответ на: комментарий от Khades

система - гента. ставил как обычно, вернее - при обновлении пару-тройку лет назад встало. Собственно все настройки и скрипты туда безболезненно перекочевали, разница была по сути в параллельной загрузке

upcFrost ★★★★★
()
Ответ на: комментарий от Gotf

Для изоляции запускаемых процессов и придуман CGROUP

Што?

Игральные карты тож бумага - в сортире сгодятся.

В целом такая функция у cgroups есть, но имхо придуман он слегка не для того

upcFrost ★★★★★
()

Ну давай, жри свои бинарные логи, да пости qr коды.

false ★★★★★
()

Ты можешь сюда хоть весь блог пёттеринга перепостить, но с тем, что пользователи в основе своей чрезвычайно тупы и ленивы всё равно ничего не поделать, так что с ними изначально не было смысла обсуждать подобные вопросы.

d_a ★★★★★
()
Ответ на: комментарий от qnikst

qnikst> openrc - в тестинге на всех архитектурах, во всяком случае по сообщениям трех дебьянодевов находящихся на #openrc.

Не в тестинге, а в экспериментале.

Quasar ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.