
پروژه متنباز Kmorph معرفی شده است تا امکان بازیابی خرابی هسته (Kernel Crash) در لینوکس را بدون نیاز به راهاندازی مجدد (Reboot) فراهم کند. این پروژه بر پایه کارهای Multikernel ساخته شده که در یک سال گذشته خارج از درخت اصلی (Out-of-tree) توسعه یافتهاند؛ بنابراین در وضعیت فعلی روی هسته اصلی لینوکس (Mainline Linux Kernel) کار نمیکند و آینده پذیرش گسترده آن به ورود کدهای Multikernel به Mainline وابسته است.
بازیابی سریع با هسته جانشین
در Multikernel چند نمونه مستقل از هسته میتوانند روی یک سیستم فیزیکی همزمان وجود داشته باشند. Kmorph از این قابلیت برای جایگزینی دو مرحله راهاندازی مجدد با یک تحویل (Takeover) استفاده میکند. یک هسته دوم به نام جانشین (Successor) از پیش روی یکی دو پردازنده (CPU) و بخشی از حافظه در کنار هسته در حال اجرا یا پیشین (Predecessor) بوت میشود و آن را زیر نظر میگیرد.
هنگامی که هسته پیشین دچار panic یا hang شود، هسته جانشین پردازندههای آن را fence میکند، دستگاهها را تحویل گرفته و بازنشانی میکند، هویت شبکه را بازمیگرداند، در صورت نیاز یک vmcore سازگار با kdump ذخیره میکند و سپس پردازندهها و حافظه باقیمانده را به صورت hot-add اضافه کرده و به هسته ماشین تبدیل میشود. تشخیص و انتقال به جانشین در حال اجرا حدود یک ثانیه طول میکشد و بدون reboot، بدون firmware و بدون اپراتور انجام میشود.
آپدیت زنده و بازگردانی سرویسها
همین سازوکار تحویل برای آپدیت زنده هسته (Live Kernel Update) نیز به کار میرود؛ دستور kmorph upgrade یک ماشین سالم را به جانشینی با هسته جدیدتر تحویل میدهد. در هر دو حالت، هسته جدید میتواند جانشین خودش را آماده کند و این چرخه نسل به نسل ادامه یابد.
Kmorph همچنین مفهوم سرویسهای مهم systemd را پشتیبانی میکند تا در حالت آمادهبهکار (Standby) روی هسته جایگزین اجرا شوند و بازیابی سرویس بسیار سریع باشد. برای نمونه، Nginx در صورت خرابی هسته میتواند در حدود دو ثانیه دوباره آنلاین شود و سپس سایر سرویسهای کماهمیتتر راهاندازی شوند.
وضعیت پیادهسازی و تفاوت با KHO و LUO
به گفته توسعهدهندگان، بخش اصلی کارهای تازه در خود هسته Multikernel انجام شده است: fencing، تحویل دستگاه و IOMMU، و hot-add پردازنده و حافظه از device tree میزبان. Kmorph لایهای از orchestration به زبان C روی این رابطهاست و همانند kdump از طریق dracut، initramfs-tools، kernel-install و یک سرویس systemd با توزیعها یکپارچه میشود. این پروژه امروز روی x86_64 و ARM64 کار میکند و پشتیبانی RISC-V در دست توسعه است.
هسته اصلی لینوکس در حال حاضر قابلیتهای Kexec Handover (KHO) و Live Update Orchestrator (LUO) را دارد، اما از بازیابی مشابه خرابی هسته پشتیبانی نمیکند؛ برای آپدیت هسته همچنان به Kexec reboot نیاز است و این سازوکار نمیتواند خرابی هسته را تحمل کند. Kmorph مفهومی جالب با پتانسیل بالا ارزیابی میشود، هرچند پذیرش گسترده آن به سرنوشت ورود Multikernel به Mainline بستگی دارد. جزئیات بیشتر در اعلامیه فهرست پستی هسته لینوکس (Linux Kernel Mailing List) و کد پروژه در GitHub در دسترس است.