리눅스

systemd

mihee 2022. 3. 14. 05:45

background : init

  • 모든 프로세스는 parent process 로부터 복제되어진다.(fork)
  • UNIX-like 시스템에서 PID 1(Ancestor process)
    • PID 1 프로세스만 복제가 아닌 kernel에 의해 생성된다.
    • PID 1 프로세스는 시스템 기동 및 관련된 작업을 하는 최초의 프로세스이다.
      • /etc/inittab 사용
      • 초기화 후 runlevel 기능에게 제어를 분할.

SysV init

  • 상업용 유닉스, 그리고 이후 유닉스 혈통을 잇는 SysV 계통에서 표준화
  • 유닉스 계열 시스템에서 오랫동안 init가 PID 1의 자리를 이었다.
  • 2011년부터 systemd로 대체됨.

단점

  • 기능이 너무 없음
  • 하위 서비스들의 제어 및 레포팅이 제대로 되지 않음
  • 병렬 처리가 되지 않음(부트 및 종료 시간이 직렬화 처리되어 느림)

upstart

  • init의 모든 기능을 그대로 둔채 runlevel 관련 기능을 대체
  • event-driven 방식으로 작동하여, 서비스의 dependency를 해결
  • 모니터링 이상 작동.

History : systemd

  • 시스템 설정을 통합 관리하는 데몬
  • 시스템, 서비스, 자원 설정 이벤트를 통합 관리
    • 데몬과 제어 통신 프로그램으로 분리되어 제작됨
    • loginctl, journalctl, systemctl 등등 제공
    • 시스템의 기동, 종료(poweroff, halt)도 모두 통합 제어

systemd: iunit

  • unit 단위로 시스템 관리
    • systemctl --type(-t) help
  • 동적 상태
    • notification이 가능하므로 이벤트 처리 가능 -> 현재 상타개 동적으로 관리되므로 외부 명령어에 의존하지 않음
  • 병렬 처리
    • 부팅 혹은 target 진입시 선, 후 관계에 의해 프로세스를 병렬로 실행

systemd : config files