[linux] systemd에 대해서

systemd는 linux 시스템에서 초기화 및 관리 프로세스를 담당하는 시스템 및 서비스 관리 도구.

구조

systemd의 구조는 여러 구성 요소로 이루어져 있으며, 이러한 요소들이 효율적인 시스템 초기화와 관리를 가능하게 한다.

 

  1. 시스템 및 사용자 서비스 유닛 (Units):
    • 서비스, 타이머, 타겟, 디바이스 등의 다양한 유닛 타입을 정의하여 시스템의 부팅 및 운영을 관리.
    • 각 유닛은 설정 파일(.service, .timer, .target 등)에 정의되며, 각각 특정 작업 또는 기능을 담당.
  2. systemd 서비스 매니저:
    • 시스템의 초기화 및 서비스 관리를 담당하는 핵심 구성 요소.
    • systemd 프로세스가 부팅 시에 가장 먼저 시작되며, 부팅 및 서비스 유닛들을 관리.
  3. systemd 로그 및 저널 (Journal):
    • systemd-journald 서비스를 통해 로그를 수집하고 관리.
    • 기존의 syslog 대신에 사용되며, 중요한 이벤트 및 서비스 로그를 효과적으로 저장하고 조회가능.
  4. systemd 타겟 (Target):
    • 여러 유닛들의 그룹을 나타냅니다.
    • 부팅 시에 특정 타겟을 활성화하여 특정 기능 또는 서비스 그룹을 활성화할 수 있습니다.
  5. systemd 컨트롤러 및 매니저:
    • systemctl 명령어를 통해 서비스 및 유닛들을 관리합니다.
    • 서비스 시작, 중지, 재시작, 상태 확인 등의 작업을 수행할 수 있습니다.
  6. systemd 로드 및 활성화:
    • 부팅 시에 어떤 유닛들을 로드하고 활성화할지 결정합니다.
    • 의존성을 고려하여 유닛을 병렬로 활성화하여 부팅 시간을 최적화합니다.

주요 기능

  1. 효율적인 부팅 및 초기화:
    • 병렬로 서비스를 시작하여 부팅 시간을 최소화.
    • 의존성을 고려하여 유닛을 병렬로 활성화하고 부팅 순서를 최적화.
  2. 단순하고 일관된 구성:
    • 간단하고 일관된 설정 파일 포맷을 사용하여 유닛을 정의.
    • 설정 파일은 일반적으로 /etc/systemd/system/ 디렉터리에 위치하며, 사용자는 쉽게 수정할 수 있다.
  3. 서비스 관리:
    • 서비스의 시작, 중지, 재시작, 상태 확인 등을 간편하게 수행할 수 있는 systemctl 명령어를 제공.
    • 서비스의 로깅 및 진단을 위한 풍부한 도구를 제공.
  4. 로그 관리:
    • systemd-journald를 사용하여 중요한 이벤트 및 로그를 효과적으로 수집하고 관리합니다.
    • 로그는 바이너리 형식으로 저장되며, 검색 및 필터링이 편리합니다.
  5. 의존성 해결 및 병렬성:
    • 서비스 간의 의존성을 정의하고 해결하여 시스템 초기화 및 관리를 효율적으로 수행.
    • 부팅 시 병렬로 유닛을 활성화하여 성능을 최적화.
  6. 광범위한 유닛 타입:
    • 서비스뿐만 아니라 타이머, 타겟, 디바이스 등 다양한 유닛 타입을 지원
    • 각각의 유닛은 특정한 역할을 수행하며, 서비스 외의 다양한 시스템 구성 요소를 표현.
  7. 로그인 및 세션 관리:
    • 사용자 로그인 및 세션을 관리하는 logind를 통해 사용자 관리를 담당
    • 세션 복원, 사용자의 권한 및 환경 설정을 효과적으로 관리.
  8. 시스템 상태 및 성능 모니터링:
    • systemctl 명령어를 통해 시스템 상태를 확인하고 감시할 수 있다.
    • 리소스 사용량, 부팅 시간 등의 정보를 쉽게 조회할 수 있다.
  9. 보안 기능:
    • 네임스페이스, cgroups 등을 활용하여 서비스 간 격리를 제공하여 시스템 보안을 강화.
    • 특권 분리 및 권한 설정을 통해 보안을 강화할 수 있다.

자주 사용하는 명령어

  • 서비스 시작: systemctl start [서비스]
  • 서비스 중지: systemctl stop [서비스]
  • 서비스 재시작: systemctl restart [서비스]
  • 서비스 상태: systemctl status [서비스]
  • 부팅 시 서비스 활성화 등록: systemctl enable [서비스]
  • 부팅 시 서비스 활성화 제거: systemctl disable [서비스]