removido
(usa Nenhuma)
Enviado em 30/09/2016 - 03:03h
Systemd e runit são suites de supervisão.
Runit foi feito pelo Garrit Pape
vantagens:
é mais leve
os programas são separados, voce pode usar o runsv (supervisão do runit) com outros inits e ate separadamente de qualquer um
Ele pode ser rodado em quase todos se não todos os sistemas unix-like.
ele foca apenas em supervisão de processos então o escopo é pequeno e viavel de manter e até forkar pra expandir
as interface são estaveis, o Garrit não vai ir lá e mudar como tudo funciona, esta preso a pedra.
o boot vem em initscript então o usuario pode editar e ele é separado em 3 estagios que são arquivos em /etc/runit
- 1: são executadas as tarefas para inicialização do sistema, fsck, montar pseudo-partições, montar partições, etc
- 2: estagio de longa vida, nesse são iniciados os daemons que vão viver ate o fim, o estagio 2 fica parado até ser chamando um comando de reboot ou shutdown
- 3: o estagio 2 da exec pro estagio 3 que é responsavel por fazer as tarefas de finalização do sistema, terminar daemons, salvar random seed, matar processos, desmontar partições, montar root como ro e dar reboot
https://github.com/Dreadnought44k/systemconfig/tree/master/runit/etc/runit << minha implementação dos 3 estagios do runit, recomendo ler os initscripts (são bem pequenos) e o readme.
desvantagens:
não tem tantas ferramentas pra fazer todas as coisas que precisa, em contraste com o seu irmão mais complexo o s6, o s6 possue uma suite inteiras de ferramentas pra fazer as maiores gambiarras possiveis com o seu sistema.
voce tem que colar as coisas manualmente, o systemd por exemplo cola junto cgroups e exemplifica pra voce usar.
agora systemd
vantagens reais: (precisa do systemd)
- melhor analisador de boot
- beneficios de logging binario como indexing e pesquisa rapida
- Ativação em dbus funciona corretamente, não é por causa do systemd mas porque o dbus resolveu usar o api do systemd em vez de usar o LSB que é mais universal
- faz supervisão de processos em pid1 então voce pode supervisionar processos que fazem fork-exec, no runit voce precisa que o daemon fique no foreground pro runsv supervisionar
vantagens menos reais (não precisa do systemd, mas o mesmo fez trabalho de colar as peças juntas)
- integração com cgroups e containers
- comandos são mais faceis, voce pode fazer isso no runit e openrc mas vai precisar colar coisas juntas que o systemd já fez pra voce
- mounts e timers são um conceito exibido por uma interface unificada
- ativação em socket
vantagens miticas (falam que são reais mas estão em outros sistemas sem esforço)
- Tracking de processos via cgroups é confiavel, não, não é, qualquer processo em root pode mexer na arvore de cgroups
- startup paralelo, openrc tem isso, runit tambem a um certo ponto
- configuração simples, meu initscripts no s6 e runit são 2 a 3 linhas, no maximo 7 a 8 se precisar workaround
desvantages menos reais (não é inerente ao systemd, mas voce vai sentir se usar distro binaria porque maioria compila com essas opções ativadas)
- precisa de coisas como ACL, PAM, DBUS e polkit, mas esses são muitas vezes inuteis pra desktop de unico usuario
- logind as vezes gosta de se cagar
- é extremamente monolitco e só vem com uma configuração de ouro, isso soa ruim mas se voce usa uma distro binaria, aka (não baseada no source-mage ou gentoo) voce já tem pessoas que fazem as decisões pra voce
desvantagens reais (inerentes ao systemd)
- presa a kernel (linux) especifica e libc (glibc) especifica, eu posso rodar runit em um sistema com musl libc por exemplo
- famoso por dar lockup no bootup e shutdown se tiver sistema NFS
- faz hardcoding de varias coisas (como initscripts) em C, o que faz dificil o usuario modificar
edps escreveu:
Ambos são inits que podem ser substitutos para o velho System V, o systemd, a.k.a "filho do rabudo" o é na maioria das distros, as excessões são o velho Slackware, já o Gentoo e Funtoo usam OpenRC por padrão, enquanto o Void Linux usa runit.
expandindo no que voce disse pra manter a precisão tecnica completa: sys V é composto de sysvinit, que é um pedaço otimo que não precisa ser trocado, o sysvrc por outro lado é antigo e precisa ser trocado, coisas como daemontools do djb (que criou o -encore, s6 e runit) já resolviam esse problema muito antes do systemd, de fato teve pouca inovação entre o daemontools e systemd e mais do sysvrc ao daemontools.
gentoo usa sysvinit/openrc, se voce olhar na sua inittab voce vai perceber que ele chama o openrc pra fazer init e supervisão, mas tambem oferece uma das melhores implementações do systemd.
void diferente do gentoo e slackware trocou o sysvinit pelo runit e roda runit-init como pid1 e runsvdir pra supervisão de diretorios.
Experienca: Hobby em testar init systems, ja testei
um pouco de systemd (Menos que os abaixos)
sysvinit/openrc
sysvinit/runsv
sysvinit/svc
sysvinit/s6 (atual, se quiser ver minha implementação
https://github.com/Dreadnought44k/systemconfig/tree/master/BSD-init )
sysvinit/sysvrc (é um lixo o sysvrc)
sysvinit/daemontools-encore
runit-init/runsv
runit-init/s6
runit-init/svc
sinit/svc
sinit/runsv
preciso testar:
s6 puro
finit
epoch
genesis (do exherbo)