13장. RHEL bootc 이미지에 대한 소프트 재부팅 수행


systemd soft-reboot를 사용하여 부트 로더 및 커널을 다시 초기화하지 않고 운영 체제 내에서 장치를 다시 시작할 수 있습니다. 하드 재부팅과 달리 사용자 공간만 순환됩니다. 이를 통해 시간이 많이 걸리는 작업 없이 서비스와 애플리케이션을 빠르게 순환할 수 있습니다.

소프트 재부팅은 주로 최소한의 위험으로 일반적인 소프트웨어 관련 문제를 해결합니다. 다음과 같은 문제의 표준 문제 해결 단계입니다.

  • 마이너 소프트웨어 결함: 소프트 재부팅은 애플리케이션이 정지, 충돌 또는 잘못된 것으로 발생하는 임시 오류를 해결합니다.
  • 성능 문제: 시간이 지남에 따라 오픈 애플리케이션 및 백그라운드 프로세스는 리소스를 소비하고 시스템을 느리게 합니다. 소프트 재부팅은 이러한 프로세스를 지우고 성능을 향상시킬 수 있는 RAM을 새로 고칩니다.
  • 네트워크 문제: 연결과 같은 문제의 경우 다시 시작은 시스템의 네트워크 설정을 새로 고칩니다.
  • 업데이트 완료: 일부 시스템 업데이트를 제대로 완료하려면 재부팅이 필요합니다.

systemd 가 있는 RHEL 환경에서 소프트 재부팅은 커널 및 하드웨어를 실행하는 동안 사용자 공간을 재시작하여 기존의 완전 재부팅에 비해 상당한 이점을 제공합니다.

  • 다운타임 감소: 소프트 재부팅은 BIOS/UEFI, 부트 로더, 커널 및 초기 램디스크(initrd)와 관련된 시간이 많이 소요되는 부팅 프로세스를 건너뛰기 때문에 다운타임을 크게 줄입니다. 시스템이 신속하게 다시 응답할 수 있으므로 다운타임을 최소화하는 중요한 서버에 중요합니다.
  • 운영 효율성 개선: 커널을 포함하지 않는 소프트웨어 및 구성 변경 사항의 경우 소프트 재부팅을 사용하여 전체 시스템을 다시 시작하지 않고 업데이트를 적용할 수 있습니다. 이는 새로운 루트 파일 시스템 스냅샷이 즉시 활성화될 수 있는 컨테이너화된 이미지 기반 시스템에 특히 유용합니다.

호출되면 systemd-soft-reboot.service 시스템 서비스는 다음 작업을 수행합니다.

  • 프로세스가 종료될 때까지 기다리지 않고 실행 중인 모든 프로세스에 SIGTERM 신호를 보냅니다.
  • 모든 프로세스를 즉시 종료하기 위해 SIGKILL 신호를 계속 진행합니다.
  • 일반 디렉토리, 디렉토리 마운트 지점 또는 심볼릭 링크일 수 있는 /run/nextroot/ 디렉터리가 존재하는 경우 파일 시스템 루트를 해당 디렉터리로 전환합니다.
  • 루트 파일 시스템에서 서비스 관리자를 다시 실행하고 정상적인 재부팅 시와 같이 새 부팅 트랜잭션을 큐에 추가합니다.
  • soft-reboot.target 은 이 서비스를 가져와서 userspace 전용 재부팅 작업을 수행합니다.

13.1. 패키지 및 이미지 모드에서 소프트 재부팅 동작

이미지 모드에서 실행되는 시스템은 사용자 공간만 재부팅하는 패키지 모드 시스템과 동일한 방식으로 소프트 재부팅을 수행합니다. 차이점은 컨테이너 이미지에서 먼저 이러한 패키지 및 서비스에 대한 업데이트를 빌드해야 한다는 것입니다. 예에서는 패키지 및 서비스 업데이트를 적용하고 다시 시작하는 방법을 보여줍니다.

패키지 모드에서 소프트 재부팅 동작

예를 들어 dnf 를 사용하는 RHEL 시스템에서 소프트 재부팅 프로세스는 시스템 장치를 종료하고 다시 시작하여 새 라이브러리 바이너리를 로드합니다. 다운타임을 최소화하여 업데이트를 적용할 수 있습니다. RHEL에서 dnf 를 사용하여 업데이트를 적용하면 systemd 에서 소프트 재부팅 중에 시스템의 동작을 관리합니다. 주요 단위 및 예상 동작:

  • 서비스 다시 시작: 소프트 재부팅 트리거 systemd 를 트리거하여 실행 중인 모든 서비스를 종료하고 다시 시작합니다. 서비스를 제공하는 업데이트된 패키지(예: 웹 서버 또는 데이터베이스)의 경우 서비스는 다시 시작할 때 새 바이너리를 다시 로드하여 패치를 효과적으로 적용합니다.
  • 장치 종속성: systemd 가 정의된 종속 항목 및 순서에 따라 장치를 종료하고 시작합니다. 소프트 재부팅은 이러한 관계가 유지되도록 하여 부적절한 종료 시퀀스의 가능성을 최소화합니다.
  • 프로세스 및 라이브러리: glibc 또는 openssl 과 같은 업데이트된 공유 라이브러리의 경우 실행 중인 프로세스에서는 다시 시작할 때까지 매핑된 이전 라이브러리를 계속 사용합니다. 소프트 재부팅을 사용하면 모든 프로세스가 종료되고 다시 시작되어 새 버전의 라이브러리에 대해 연결됩니다.
  • 최소 다운타임: 커널과 하드웨어를 다시 초기화하지 않기 때문에 소프트 재부팅은 하드 재부팅보다 훨씬 빠릅니다. 서비스 중단을 최소화하여 대부분의 사용자 공간 업데이트를 적용하는 데 유용합니다.
  • 명령줄 툴: dnf-plugins-core 패키지에는 needs-restarting 툴이 포함되어 있습니다. dnf 업데이트를 실행한 후 dnf needs-restarting 을 실행하여 변경 사항을 적용하기 위해 소프트 재부팅 또는 특정 서비스 재시작이 필요한지 확인할 수 있습니다.

사용자 공간 패치는 사용자 애플리케이션 및 공유 라이브러리의 보안 취약점과 버그를 해결합니다. 패치를 적용하면 새 코드를 로드하려면 소프트 재부팅 또는 프로세스 재시작이 필요합니다. 예를 들면 다음과 같습니다.

  • OpenSSL: 사용 사례: 발견된 중요한 OpenSSL 취약점.

문제: 웹 서버, 데이터베이스, SSH 데몬과 같은 OpenSSL을 사용하는 애플리케이션은 다시 시작하지 않고 노출된 상태로 유지되어 취약한 공유 라이브러리를 계속 사용합니다.

소프트 재부팅 솔루션: dnf 업데이트 openssl 을 수행한 후 소프트 재부팅은 종속 프로세스를 종료합니다. 그런 다음 systemd는 이러한 서비스를 다시 시작하여 새로운 패치된 libssl.solibcrypto.so 라이브러리를 자동으로 로드하여 전체 시스템을 재부팅하지 않고 시스템을 보호합니다.

  • glibc : 사용 사례: GNU C 라이브러리(glibc)에서 버그 또는 보안 취약점이 발견됩니다.

문제: Glibc는 시스템의 거의 모든 프로그램이 의존하는 기본 사용자 공간 구성 요소입니다. glibc의 취약점은 전체 시스템에 영향을 미칩니다. 하나 또는 두 개의 서비스를 다시 시작하는 것만으로는 충분하지 않습니다. 다른 많은 프로세스가 여전히 취약하기 때문입니다.

소프트 재부팅 솔루션: dnf 업데이트 glibc 이후 소프트 재부팅은 모든 프로세스가 다시 시작되고 새 glibc에 다시 연결할 수 있도록 하는 가장 안정적인 방법입니다. 이로 인해 업데이트가 모든 곳에 적용되도록 보장하면서 전체 시스템 재부팅 시간이 길어집니다.

  • dbus-broker:

사용 사례: 보안 또는 성능을 위해 dbus-broker 데몬 업데이트.

문제: Dbus-broker는 중요한 시스템 서비스입니다. 업데이트는 일반적으로 탄력적이지만 프로토콜의 민감도는 브로커 및 관련 서비스를 다시 시작해야 합니다.

소프트 재부팅 솔루션: 소프트 재부팅은 systemd 를 사용하여 dbus-broker 및 모든 종속 서비스 및 애플리케이션을 올바르게 다시 시작하여 완전히 종료되고 다시 시작됩니다.

이미지 모드에서 소프트 재부팅 동작

RHEL 이미지 모드(bootc)에서 systemd 는 전체 하드웨어 재부팅보다 훨씬 빠른 프로세스인 소프트 재부팅을 위해 사용자 공간 전용 재시작을 수행합니다. systemd-soft-reboot.service 는 커널 및 기본 하드웨어가 실행되는 동안 사용자 공간을 재설정하는 순서를 오케스트레이션할 때 bootc 이미지 모드에서 소프트 재부팅 프로세스를 수행할 수 있습니다.

이미지 기반 시스템에서는 다음 두 가지 방법으로 업데이트를 관리할 수 있습니다.

  • 준비됨 업데이트: 시스템이 컨테이너 레지스트리에서 이러한 업데이트를 가져와서 대체 비활성 파티션 또는 파일 시스템에 설치합니다. 재부팅을 시작할 때까지 이전 버전에서 계속 실행됩니다. 소프트 재부팅이 발생하면 시스템은 새로 준비되고 업데이트된 루트 파일 시스템으로 전환합니다. 전환은 원자성이므로 전체 사용자 공간이 한 번에 교체됩니다. 시스템은 업데이트된 새로운 OS 이미지로 부팅되며 문제가 발생하면 후속 부팅 시 이전 이미지로 롤백할 수 있는 기능이 유지됩니다.
  • 단계적 업데이트: 구성 변경 또는 단일 서비스 재시작과 같은 실행 중인 사용자 공간에 대한 동적 인플레이스 업데이트. 새로운 완전한 OS 이미지를 생성하고 부팅하지 않습니다. 소프트 재부팅은 동일한 루트 파일 시스템에서 현재 사용자 공간을 다시 로드합니다. 업데이트된 OS 이미지를 가져오거나 전환하지 않습니다. 이를 사용하여 커널을 건드리지 않고 현재 소프트웨어 상태를 재설정할 수 있습니다. 이는 이미지 수준이 아닌 변경 사항을 적용하거나 사용자 공간 문제를 해결하는 데 유용합니다.

systemd 소프트 재부팅 메커니즘은 kexec 재부팅과 다릅니다. kexec커널 전환 기능은 사용자 공간만 재시작하므로 systemd 소프트 재부팅에서는 사용할 수 없으며 커널은 변경되지 않습니다. 이를 통해 지속성을 보장하고 하드웨어를 재설정하지 않고도 커널을 변경할 때 발생할 수 있는 잠재적인 복잡성과 불일치를 방지할 수 있습니다. 새 커널 버전이 포함된 업데이트된 OS 이미지에는 기존의 전체 재부팅이 필요합니다.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat