天翼云為尤拉社群貢獻首個C++熱補丁 加速推進聯創技術落地應用

天翼雲開發者社群 發表於 2022-06-13
C++


天翼雲與尤拉社群開展關鍵技術聯合創新   熱補丁實現主機崩潰線上修復

天翼雲與尤拉社群共研支援 aarch64及x86平臺libcareplus熱補丁功能

 

近日,中國電信天翼雲基礎架構技術團隊與 openEuler社群合作共研了全面支援aarch64及x86平臺的libcareplus熱補丁功能,併為尤拉社群貢獻首個C++熱補丁,實現主機崩潰線上修復。這是天翼雲與尤拉社群聯合開展關鍵技術創新取得的又一成果。

之前雙方已成功研發了基於 Libcareplus工具的Qemu熱補丁功能。據天翼雲科技有限公司副總經理兼技術長廣小明在今年4月尤拉大會上介紹,Qemu熱補丁功能使主機分批序列升級轉變為並行同步升級,支撐現網補丁實施週期由月縮減到周,極大縮短了補丁的實施週期。

目前,新研熱補丁工具普適性已得到極大提升,應用場景更廣泛。而作為落地應用之一,天翼云為尤拉社群貢獻的首個 C++熱補丁實現了雲主機不用重啟修復bug的能力,保障客戶業務不中斷,真正做到“為飛行中的飛機更換髮動機”。

熱補丁技術能夠在不影響現網業務的情況下完成程式修復、適用於需要快速響應的場景,可謂是短小精悍。其中 libcareplus熱補丁技術更是集萬千寵愛於一身。

據瞭解, ibcareplus熱補丁技術是基於上游社群libcare獨立發展的分支,由openEuler社群進行自主孵化,主要包括熱補丁製作、補丁管理和補丁加/解除安裝等。相比於上游社群的libcare,libcareplus作為一個使用者態程式熱補丁框架,可以在不重啟程式的情況下,支援對x86和aarch64架構中Linux系統上執行的目標程式進行熱補丁操作。同時,libcareplus全面支援openEuler Qemu元件,支援函式級過濾、增量補丁、以及補丁檔案解析等。

此次天翼雲聯合尤拉社群打造的 libcareplus熱補丁功能,可以應用於CVE漏洞修復,也可應用於不中斷應用服務的緊急bug修復。

而且在合 過程中,天翼雲基礎架構技術團隊還針對全域性變數、區域性靜態變數等熱補丁功能缺失的痛點進行深度研發。 以前增加全域性變數補丁會導致目標程式崩潰,只能採用分配記憶體等方式規避,經優化後增強了補丁程式碼的易修改和易維護性。這些功能成功適配多個主流 Q emu版本,大大提高了libcareplus熱補丁工具的適用性,為大規模批量應用奠定了堅實的基礎。

同時 在實際業務應用場景中,天翼雲發現 libcareplus在處理g++高版本生成的彙編檔案時,在彙編檔案比對和生成過程中,程式碼塊結構劃分異常,進而導致生成的彙編檔案無法被as彙編器正確解析。天翼雲聯合尤拉社群針對該場景進行優化創新,基於尤拉社群libcareplus 擴充套件增加支援g++8特性,實現libcareplus支援C++軟體熱補丁製作及管理能力

目前 ,該 特性原始碼及單元測試用例已貢獻到尤拉社群,並在尤拉社群虛擬化SIG組進行技術分享,相關特性已被尤拉社群收錄至22.03 LTS發行版。

 

新研熱補丁工具普適性增強,應用場景更加廣泛

經過 天翼雲基礎架構技術團隊與openEuler社群共同優化後,libcareplus熱補丁工具的應用場景得到了極大的擴充套件。

1.為單函式修改製作單個補丁

  天翼云為尤拉社群貢獻首個C++熱補丁 加速推進聯創技術落地應用

2.為多個函式修改製作多個補丁

  天翼云為尤拉社群貢獻首個C++熱補丁 加速推進聯創技術落地應用

3.新增函式

  天翼云為尤拉社群貢獻首個C++熱補丁 加速推進聯創技術落地應用

4.新增全域性變數

  天翼云為尤拉社群貢獻首個C++熱補丁 加速推進聯創技術落地應用

5.TLS變數

天翼云為尤拉社群貢獻首個C++熱補丁 加速推進聯創技術落地應用

6.冷熱塊重排

  天翼云為尤拉社群貢獻首個C++熱補丁 加速推進聯創技術落地應用

 

加速聯創技術落地 天翼云為尤拉社群貢獻首個 C++熱補丁

對很多使用者來說,最怕在業務辦理過程中突然中斷、等待修機,但這種現象卻不時發生。當尤拉系統下的雲主機出現 Qemu崩潰時, 通常情況下該問題可以通過重啟雲主機冷補丁方式進行修復 ,但會帶來客戶業務出現短暫的中斷。

為了解決線上部分 Q emu crash導致雲主機重啟問題,中國電信天翼雲彈性儲存技術團隊深入程式碼分析,發現原生librbd存在嚴重的程式碼bug。為了保證客戶雲上業務連續不中斷,提供更高的雲端儲存可用性 中國電信天翼雲彈性儲存技術團隊 通過 不斷反覆驗證和實驗 利用libcareplus C++熱補丁技術,librbd熱補丁程式碼在不進行換行、不新增介面的情況下,通過程式碼資料結構,計算變數在記憶體中的地址偏移的方式對程式碼進行修復,最終在記憶體中更新librbd補丁,實現不 重啟虛擬機器打librbd熱補丁能力 ,即 雲主機不用重啟 也能 修復bug的能力, 障客戶 雲上業務連續性 大大縮短運維時間 ,真正 做到了 飛行中的飛機更換髮動機 ”。

目前,該項熱補丁技術成為了尤拉社群第一個 C++熱補丁,已在南寧、昌吉、蘭州等資源池正式上線,部署超過10萬臺雲主機,覆蓋金融、醫療、政企等眾多行業客戶。

未來,天翼雲 將與 尤拉開源社群持續合作,開展更多聯合創新, 包括 在提升雲主機資源利用效率方面,開展虛擬機器高低優先順序混部、容器線上離線混部創新;在可信雲主機方面,開展機密計算創新;在DPU解除安裝上,開展分散式儲存解除安裝、容器網路解除安裝創新;在雲原生全棧方面,開展安全容器、KubeEdge 邊雲協同創新 等。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70014251/viewspace-2900354/,如需轉載,請註明出處,否則將追究法律責任。

相關文章