O que diferencia o systemd de outros sistemas init?

23

Não é muito oficial, mas parece que o systemd está chegando ao Debian e depois de ler algumas discussões acaloradas sobre essa decisão, estou curioso sobre a natureza polarizadora do systemd entre os usuários do linux. Eu corro sistemas Debian (sysvinit) e Gentoo (OpenRC) e não sei nada concreto sobre o systemd, embora pareça que está vindo no meu caminho.

Eu vi essa pergunta relacionada perguntando aos prós e contras do systemd vs upstart, mas faz três anos desde que a pergunta foi publicada e tenho certeza de que as coisas mudaram nesse período.

Minha pergunta é: Como o systemd se compara a outros sistemas init?

  • O que o diferencia - o que pode ser feito pelos outros sistemas init?
  • Há algo a perder ao mudar para outro sistema init?
  • Como a administração do systemd se compara aos outros?
Casey
fonte
1
Com o Gentoo você pode ter um mãos na experiência do systemd e tê-lo funcionando com bastante facilidade!
Uma coisa em que estou particularmente interessado é nas sessões do usuário. Eles funcionam muito bem agora, com algumas exceções notáveis. Isso é algo que eu sinto que foi realmente negligenciado pela maioria dos outros sistemas init.
Chris Baixo
O @ChrisDown, iniciar / parar o sistema e gerenciar seus serviços é uma funcionalidade fundamental, que deve ser bem integrada (portanto, "tentativa de panacéia" é uma má caracterização incorreta). Além disso, não é apenas Lennart sozinho, são pessoas de todas as distribuições que estão trabalhando nisso.
vonbrand
@ ChrisDown, por favor, não seja ridículo. systemdagora não inclui um servidor da Web, nem o fará nunca, nem está lendo o QR no roteiro. Por favor, verifique o que se trata, considere que, como falamos em todas as distribuições importantes (exceto o Ubuntu por enquanto), use-a como padrão (o pessoal de código aberto tende a ser radicalmente independente, nenhuma "pressão" os levará a fazer isso se não acredite que é a melhor alternativa).
vonbrand
Atualmente, até o RHEL7 vem com systemd. Me faz pensar quando diabos Py3kse tornará o intérprete python padrão em distros.
yegle

Respostas:

26

Provavelmente tudo o que você quer saber está aqui nas páginas " Debate Init System To Use " que o projeto Debian montou para tomar a decisão de qual sistema de inicialização usar. Dentro dessa página, há um link separado para cada uma das opções de initsystems.

Para um iniciador no Systemd, esta página tem praticamente tudo o que você precisa saber para começar, RHEL7: Como iniciar o Systemd .

Recursos adicionais que achei úteis para entender melhor as duas opções principais: também lerei as páginas da Wikipedia nas respectivas tecnologias:

O projeto Gentoo também mantém uma boa comparação de alguns dos principais recursos nos vários initsytems:

Minha opinião sobre suas perguntas

Q # 1: Como o systemd se compara a outros sistemas init?

Esta é uma pergunta muito difícil de abordar no espaço de uma resposta SE, por isso prefiro adiar as várias fontes que referenciei acima. Eu vou dizer isso embora. Ao ler muitos dos artigos sobre systemdas alternativas, está tentando abordar muitos aspectos do que era deficiente em ferramentas anteriores usadas para iniciar serviços em sistemas Linux. Ele tem um design muito bem pensado e está tentando fornecê-lo de uma maneira muito modular.

componentes systemd

   ss de componentes systemd

Então, na IMO, eu diria que ele compara muito favoravelmente tanto em termos do esforço em seu design, execução desse design quanto em sua adoção por várias distribuições Linux maiores.

Q # 2: O que o diferencia - o que pode ser feito pelos outros sistemas init?

Existem muitas coisas que sytemdpodem ser feitas por outros sistemas. Provavelmente 3 de seus recursos mais fortes são:

  1. Exploração madeireira
  2. Limitação de Recursos
  3. Lidar com daemons que bifurcam

1. registro

Na frente do registro, systemdinstituiu um novo sistema de registro chamado "Diário", o serviço é chamado systemd-journald.service. Esse é o seu próprio tópico, você pode ler mais sobre isso aqui neste artigo intitulado: Introducing the Journal . Aqui está um exemplo de usuário, "harald", efetuando login.

_SERVICE=systemd-logind.service
MESSAGE=User harald logged in
MESSAGE_ID=422bc3d271414bc8bc9570f222f24a9
_EXE=/lib/systemd/systemd-logind
_COMM=systemd-logind
_CMDLINE=/lib/systemd/systemd-logind
_PID=4711
_UID=0
_GID=0
_SYSTEMD_CGROUP=/system/systemd-logind.service
_CGROUPS=cpu:/system/systemd-logind.service
PRIORITY=6
_BOOT_ID=422bc3d271414bc8bc95870f222f24a9
_MACHINE_ID=c686f3b205dd48e0b43ceb6eda479721
_HOSTNAME=waldi
LOGIN_USER=500

2 e 3. Limitação de recursos e daemons que bifurcam

systemdaqui usa uma abordagem inovadora cgroupspara conter e limitar os recursos de quaisquer serviços que exijam bifurcação ou limitação do acesso aos recursos.

excerto

O Systemd tem uma solução muito inteligente para o problema de rastrear daemons que bifurcam, o que coincidentemente manipula a limitação de recursos ao mesmo tempo. Onde o Upstart usa o ptrace para assistir à bifurcação, o systemd executa cada daemon em um grupo de controle (requer Linux 2.6.24 ou mais recente) do qual não pode escapar com nenhuma quantidade de bifurcação. Isso permite uma fácil limitação de recursos, tanto para daemons bifurcados quanto para não bifurcados, pois grupos de controle foram criados para esse tipo de coisa.

Fonte: Daemon Showdown: Upstart vs. Runit vs. Systemd vs. Circus vs. God

Q # 3: Há algo a perder na mudança para outro sistema init?

Provavelmente, a maior ressalva em mudar para systemd sobre Upstart ou sysV init é ter que adotar muitas novas complexidades. O Systemd possui muitas partes móveis e é extremamente rico em recursos. Com esses recursos adicionais, você provavelmente gastará bastante tempo adquirindo conhecimentos sobre como tudo funciona.

Q # 4: Como a administração do systemd se compara aos outros?

Conforme indicado na minha resposta acima à Q # 3. Vou reiterar aqui novamente. Onde o sysV init foi bastante trivial para aprender a gerenciar e navegar em algumas horas ou dias, o Upstart provavelmente levará uma semana ou mais para acelerar, enquanto o systemd provavelmente levará muito mais tempo, estou antecipando várias semanas para obter conhecimento superficial o suficiente, onde poderei produzir meus próprios .servicearquivos, para interromper / iniciar serviços com a mesma facilidade que agora desfruto com o sysV init.

Referências

slm
fonte
@Caleb, a questão é muito complexa e, além disso, uma questão delicada para muitas pessoas. Eu acredito que a resposta é OK, como está- #
1113 vonbrand
@ Caleb - sim, você é bem-vindo, obrigado pelo feedback.
Slm