在本周的LPC2022大會上,Meta/Facebook披露旗下的數百萬臺服務器,已轉向使用RedHat的Kpatch內核實時補丁(KLP)解決方案。同時Meta工程師分享他們在這項實時補丁基礎設施上取得的成功,以及在此過程中遇到的麻煩。可知與大多數組織一樣,這項轉進旨在減少內核更新導致的服務器停機時間——尤其是無止境的安全更新流程。
(via Phoronix)
熟悉服務器應用場景的朋友,一定不會對冗長的開機自檢(POST)和完全重啟所需的時間感到陌生。
而通過引入內核實時修補方案,當一切按計劃進行時,服務器將能夠實現近乎無縫的新內核遷移。
具體說來是,livepatching 允許內核函數在運行時安全地實施就地修補。
而除內核基礎設施,Meta 還選用 Red Hat 的 Kpatch 解決方案。
同時 SUSE 有在持續維護 kGraft,Oracle 也有提供 Ksplice 方案。
不過在針對數百萬臺服務器的 Linux 實時補丁試驗過程中,Meta 工程師們也追蹤記錄需要克服的一些問題(比如性能方面)。
報告的內容,主要涉及在實時修補更高的 I/O、fsync 延遲、以及 TCP 重傳率期間,可能出現持續 1~2 秒的問題。
Meta 工程師們一直在努力應對極端狀況,尤其是更好地處理 Clang 編譯的 PGO 優化內核構建等方面、以及其它有助於提升穩健性的項目。
最後,對 Meta 大規模內核修補工作感到好奇的朋友,可移步查看 LPC 2022 大會的幻燈片和完整視頻記錄。