Osegi
소프트웨어·2 분 소요

kmorph 공개, 리눅스 커널 장애 후 약 2초 만에 복구

Multikernel 팀이 대기 커널로 전환해 리눅스 충돌이나 업데이트 후 서버를 약 2초 만에 되살리는 오픈소스 kmorph를 공개했습니다.

Server rack with a terminal showing a Linux kernel switching to a standby kernel after a crash.
이미지: Хабр

Multikernel 프로젝트 팀이 리눅스 커널 장애에서 빠르게 복구하는 오픈소스 도구 kmorph를 공개했습니다. 전체 재부팅 없이 커널을 실시간으로 교체하는 용도로도 쓸 수 있습니다. 개발팀 테스트에서 nginx를 실행하는 서버는 커널 장애 약 2초 뒤에 다시 동작했습니다.

프로젝트는 리눅스 커널 트래픽 제어(TC, Traffic Control) 서브시스템의 메인테이너인 Cong Wang이 이끌고 있습니다.

대기 커널로 전환하는 방식

현재는 커널이 비정상 종료되면 하드웨어 초기화와 시스템 환경 로딩 때문에 서버 재부팅에 수 분이 걸릴 수 있습니다. kdump를 쓰면 커널이 두 번 부팅됩니다. 먼저 kexec로 메모리 덤프 저장용 커널을 올리고, 이후 실제 운영 커널과 시스템 서비스를 시작합니다.

kmorph는 특정 CPU 코어에 연결한 대기용 리눅스 커널과 최소한의 시스템 환경을 미리 메모리에 올려 두고 주 커널의 상태를 감시합니다. 주 커널이 멈추거나 패닉(panic)에 빠지면 대기 환경이 제어권을 넘겨받아 장애 커널의 메모리 덤프를 저장하고, CPU 코어, 메모리, 장치, 네트워크 설정, 파일 시스템을 자신에게 전환합니다.

전환은 두 도구가 맡습니다. kmorph는 활성 환경에서 실행되어 대기 환경을 구성하고 네트워크 상태를 동기화하며, kmorphd는 대기 환경에서 실행되어 활성 환경을 감시합니다. 대기 환경에서 nginx 같은 일반 서비스를 미리 띄워 둘 수도 있어, 전환 직후 곧바로 요청을 처리합니다.

기존 기능과의 차이

리눅스 커널에는 이미 Kexec HandOver(KHO)와 Live Update Orchestrator(LUO)가 있어 시스템 상태를 잃지 않고 새 커널을 실행할 수 있습니다. 하지만 실행 중인 커널의 상태를 저장해야 하므로 장애 상황에서는 쓸 수 없습니다. kexec 재부팅이 필요해 전환 속도도 kmorph보다 느립니다.

kmorph는 x86_64와 ARM64를 지원하며 RISC-V 지원도 개발 중입니다. 배포판 통합은 kdump와 같이 dracut, initramfs-tools, kernel-install, systemd를 통해 이뤄집니다. 팀은 앞으로 연결된 클라이언트가 눈치채지 못하는 즉각적인 전환을 목표로 하고 있습니다.

주목할 만한 앱

SUMO: 숫자 퍼즐

올바른 칸을 고르고 더해 목표 숫자를 맞추세요. 배우긴 쉽고 마스터하긴 어렵습니다. 무료, 전 연령.

태그:linuxkmorphmultikernelkernelkdumpopen source

같은 날의 다른 뉴스

전체 보기 →

관련 카테고리: 소프트웨어

전체 보기 →