Osegi
ソフトウェア·2 分で読めます

kmorph公開、Linuxカーネル障害から約2秒で復旧

Multikernelチームが、待機用カーネルに切り替えてLinuxのクラッシュや更新から約2秒で復旧するオープンソースのkmorphを公開した。

Server rack with a terminal showing a Linux kernel switching to a standby kernel after a crash.
画像: Хабр

Multikernelプロジェクトのチームは、Linuxカーネルの障害からの高速復旧を目的としたオープンソースの「kmorph」を公開した。フル再起動を伴わずにカーネルをライブで入れ替える用途にも使える。開発チームのテストでは、nginxを動かすサーバーがカーネル障害の約2秒後に処理を再開した。

kmorphを主導するのは、LinuxカーネルのトラフィックコントロールTC(Traffic Control)サブシステムのメンテナーであるCong Wang氏だ。

待機カーネルに切り替える仕組み

現状では、カーネルが異常停止するとハードウェアの初期化やシステム環境の読み込みに時間がかかり、サーバーの再起動に数分を要することがある。kdumpを使う場合はカーネルが2回起動する。まずkexecでメモリダンプ保存用のカーネルを読み込み、その後に本来のカーネルとサービスを立ち上げる。

kmorphでは、特定のCPUコアに紐づけた待機用のLinuxカーネルと最小限のシステム環境をあらかじめメモリに載せ、主カーネルを監視する。主カーネルがハングまたはpanicに陥ると、待機環境が制御を引き継ぎ、障害カーネルのメモリダンプを保存したうえで、CPUコア、メモリ、デバイス、ネットワーク設定、ファイルシステムを自身に切り替える。

切り替えは2つのツールで制御する。kmorphは稼働中の環境で待機環境を構成しネットワーク状態を同期し、kmorphdは待機環境で動作して稼働側を監視する。待機環境ではnginxのような一般的なサービスを先に起動しておくことも可能で、切り替え直後から要求を処理できる。

既存機能との違い

LinuxカーネルにはKexec HandOver(KHO)とLive Update Orchestrator(LUO)があり、状態を失わずに新しいカーネルを起動できる。ただし稼働中カーネルの状態保存が前提のため、障害時には使えない。kexecによる再起動も必要で、切り替え速度でもkmorphに劣る。

対応アーキテクチャはx86_64とARM64で、RISC-Vへの対応も進行中だ。ディストリビューションへの組み込みはkdumpと同様に、dracut、initramfs-tools、kernel-install、systemd経由で行う。チームは今後、接続中のクライアントに気づかれない即時の切り替えを目指している。

注目のアプリ

SUMO:数字パズル

正しいマスを選んで足し算、目標の数に。覚えるのは簡単、極めるのは難しい。無料、全年齢向け。

Dialo:話して学ぶ語学アプリ

AIの会話パートナーと話すだけ。一文ごとに添削され、あなたの言語で解説が返ってきます。9言語、A1からC2まで。

タグ:linuxkmorphmultikernelkernelkdumpopen source

同じ日のニュース

すべて見る →

関連カテゴリ: ソフトウェア

すべて見る →
kmorph公開、Linux障害から約2秒で復旧 · Osegi