it-swarm.dev

Upstart의 장점과 단점은 무엇입니까?

systemd 는 몇 년 전의 pstart 와 마찬가지로 블록의 최신 init 시스템입니다. 각각의 장단점은 무엇입니까? 또한 각각 다른 init 시스템과 어떻게 비교됩니까?

187
tshepang

Upstart와 systemd는 전통적인 SysV init 시스템의 한계와 관련된 일부 문제를 해결하려는 시도입니다. 예를 들어, 일부 서비스는 다른 서비스 이후에 시작해야합니다 (예 : 네트워크가 실행될 때까지 NFS 파일 시스템을 마운트 할 수 없음). SysV에서 처리 할 수있는 유일한 방법은 rc # .d 디렉토리에 링크를 설정하는 것입니다. 한 사람이 다른 사람보다 먼저 또한 종속성을 추가하거나 변경할 때 나중에 모든 항목의 번호를 다시 매겨 야 할 수도 있습니다. Upstart 및 Systemd에는 요구 사항을 정의하기위한보다 지능적인 설정이 있습니다. 또한 모든 것이 일종의 쉘 스크립트이며 모든 사람이 최고의 초기화 스크립트를 작성하는 것은 아니라는 문제가 있습니다. 그것은 또한 시작 속도에 영향을 미칩니다.

Systemd의 장점 중 일부는 다음과 같습니다.

  • 시작된 모든 프로세스는 자체 cgroup 또는 특정 cgroup을 갖습니다.
  • Xinetd가 서비스를 수행하는 방식과 유사하게 서비스에 대한 소켓 및 파일 핸들의 사전 작성으로 종속 서비스를 더 빨리 시작할 수 있습니다. 예를 들어, systemd는 syslog의/dev/log에 대한 파일 핸들을 열어두고,/dev/log로 보내는 후속 서비스는 syslogd가 인수 할 준비가 될 때까지 메시지를 버퍼링합니다.
  • 실제로 서비스를 시작하기 위해 더 적은 프로세스가 실행됩니다. 이것은 서비스를 시작하기 위해 쉘 스크립트를 작성하지 않음을 의미합니다. 이것은 속도 향상이 될 수 있으며 (IMO) 처음에 더 쉽게 설정할 수 있습니다.

내가 아는 한 가지 단점은 systemd의 소켓/FH 사전 할당을 이용하려면 systemd가 FH를 전달하도록 많은 데몬을 패치해야한다는 것입니다.

68
jsbillings

오늘 Arch General ML 에서 systemd을 (를) 봤습니다. 따라서 읽어보십시오. The H Online 그 어느 때보 다 Linux 기술의 훌륭한 소스이며 SysV Init 및 Upstart 대안으로 시스템화 . 그러나 H Online 기사 (이 경우)는 그다지 유용하지는 않지만 실제 사용은 유용한 정보에 대한 링크를 제공한다는 것입니다.

실제 답변은 시스템 발표 에 있습니다. 이는 SysV initd의 문제점과 새로운 시스템이 수행해야 할 사항에 대한 중요한 포인트를 제공합니다.

  • 덜 시작합니다.
  • 그리고 더 병렬로 시작합니다.

이 작업을 수행하는 주요 계획은 필요한 서비스 만 시작하고 해당 서비스에 대한 소켓을 시작하여 데몬이 완전히 온라인 상태가되기 전에 생성 된 소켓에 연결할 수 있도록 필요한 서비스를 시작하는 것 같습니다. 분명히 소켓은 적은 양의 버퍼링 된 데이터를 유지하므로 지연 동안 데이터가 손실되지 않으며 데몬이 온라인이되는 즉시 처리됩니다.

계획의 또 다른 부분은 파일 시스템을 직렬화하지 않고 필요에 따라 파일 시스템을 마운트하는 것입니다. /home/ 등을 기다리지 않는 방식으로 (/etc)를 마운트하려면 및/또는 //var/ 등으로 데몬을 시작할 수있을 때 fsck이 이미 마운트되어 있습니다. 이를 위해 autofs를 사용할 것이라고 말했다.

또한 스크립트 대신 .desktop 스타일 초기화 설명자를 작성한다는 목표도 가지고 있습니다. 이렇게하면 쉘 스크립트에서 자주 사용되는 shsed와 같은 프로세스에서 수많은 grep 프로세스와 더 많은 프로세스 포크가 발생하지 않습니다.

또한 요청 될 때까지 일부 서비스를 시작하지 않을 계획이며, 더 이상 필요하지 않은 경우 서비스를 종료 할 수도 있습니다. 블루투스 모듈 및 데몬은 예를 들어 블루투스 장치를 사용할 때만 필요합니다. 또 다른 예는 ssh 데몬입니다. 이것은 inetd가 할 수있는 것입니다. 개인적으로 나는 이것이 필요할 때 대기 시간을 의미하기 때문에 이것을 좋아하는지 확신하지 못합니다 .ssh의 경우 내 inetd가 전체 시스템에 손상을 입히면 보안 취약점이 발생할 수 있다고 생각합니다. 그러나이 시스템을 사용하여이 시스템을 위반하는 것은 불가능하며 원하는 경우 서비스별로 또는 다른 방법으로이 기능을 비활성화 할 수 있다는 알림을 받았습니다.

또 다른 기능은 시간 이벤트를 기반으로 정기적으로 예약 된 간격이나 특정 시간에 시작하는 기능입니다. 이것은 crondatd이 지금하는 것과 유사합니다. 내가 말했지만 사용자 "크론"을 지원하지 않습니다. 개인적으로 이것은 가장 무의미한 것 같습니다. 나는 이것이 다중 사용자 환경에서 일하지 않는 사람들이 작성/생각한 것으로 생각합니다. 루트로 실행하지 않는 것 외에 시스템의 유일한 사용자 인 경우 cron 사용자에게는 많은 목적이 없습니다. 나는 매일 다중 사용자 시스템에서 작업하며 규칙은 항상 사용자로 사용자 스크립트를 실행합니다. 그러나 나는 그들이하는 예언을 가지고 있지 않을 수도 있으며, crond 또는 atd를 실행할 수 없도록 결코 그것을 만들지 않을 것입니다. 내가 생각하는 개발자.

Systemd의 가장 큰 단점은 일부 데몬을 최대한 활용하려면 수정해야한다는 것입니다. 그들은 지금 작동하지만 소켓 모델을 위해 특별히 작성된 경우 더 잘 작동합니다.

대부분의 경우 스타트 업에 대한 시스템 사용자의 문제는 이벤트 시스템이며, 그것이 의미가 없거나 불필요하다고 생각합니다. 아마도 그들의 말이 가장 좋을 것입니다.

또는 더 간단하게 말하면, 사용자가 D-Bus를 방금 시작했다는 사실은 NetworkManager도 시작해야한다는 표시가 아닙니다 (그러나 이것이 Upstart가하는 일입니다). 반대로 사용자가 NetworkManager를 요청할 때 D-Bus도 시작해야한다는 것을 분명히 알 수 있습니다 (대부분의 사용자가 기대하는 것입니다).
좋은 초기화 시스템은 필요한 것만으로 시작해야합니다. 게 으르거나 병렬화되고 미리. 그러나 필요 이상으로 시작해서는 안되며, 특히 해당 서비스를 사용할 수있는 설치된 모든 것이 아닙니다.

내가 이미 말했듯이 이것은 announcement of systemd 에서 훨씬 더 포괄적으로 논의됩니다.

29
xenoterracide

대부분의 사람들이 잊어 버린 것은 cgroups 의 프로세스 구성입니다.

따라서 systemd가 어떤 일을 시작했다면,이 일을 자체 cgroup에 넣고 프로세스가 해당 cgroup을 이스케이프 처리 할 수단이 없습니다 (권한이 없음). 그 결과는 다음과 같습니다.

  • 많은 사용자가있는 대규모 시스템의 관리자는 악의적 인 사용자/프로세스를 식별하는 효율적이고 새로운 방법을 갖습니다.
  • CPU 스케줄링의 우선 순위는 "Wonder autocgroup patch" 에 의해보다 잘 결정될 수 있습니다.
11
enaut

첫 번째 디자인 초안부터 시작하여 시스템 시작에 대한 자세한 비평과 시스템 시작을 포함하여 기존 init 시스템에 대한 자세한 비평 및 시스템 수정 방법에 대한 자세한 비판을 보려면 홈 페이지 로 이동하십시오. 시간이 지남에 따라 LWN 에 몇 가지 기사가 실 렸습니다. systemd (또는 pulseaudio)에 대한 언급은 끊임없는 화염 전쟁을 유발한다는 점에 유의하십시오.

IMVHO (그리고 Fedora 사용자로서) 나는 그것에 만족합니다 매우 . 이 라인의 내용은 현재 Linux 시스템의 복잡성을 처리하기 위해 오랫동안 지체되었습니다. Fedora는 한동안 upstart를 사용했지만, 대부분 변경되지 않은 init 스크립트를 실행하여 sysvinit를 대체 할 수있는 단계에서 결코 벗어나지 않았습니다. 부팅 구성을 단순화한다는 약속은 다시 수동으로 상호 종속성을 설정하는 비용으로 이루어지며 작동하지 않습니다. 체계화 된 수치는 의존성 자체로 나옵니다 (또는 의존성에 관계없이 물건을 시작하도록 허용하면 스스로 분류합니다). 또 다른 큰 장점은 (혹은 심각한 단점이라고 말하면) Linux 관련 기능을 활용하는 데 도움이된다는 것입니다 (특히 cgroup은 데몬과 모든 하위 항목을 분리 할 수 ​​있으므로 모니터링, 리소스 제한 또는 종료가 쉽습니다). 그룹; 다른 많은 사람들이 있습니다).

8
vonbrand

업무 일지-Systemd는 내용을 기록 할 때 문자 그대로 WinSXS 폴더와 비슷하며 드라이브에서 계속 먹어 치우는 파일 크기를 수동으로 삭제하거나 줄이지 않는 한 복사본의 사본을 만듭니다. 나는 그것을 부트 로더 쿠키라고 부른다.

3
Bert