供圖: shutterstock
有多種技術在競爭成為實現linux核心熱補丁的最優方案。
沒人喜歡重啟機器,尤其是涉及到乙個核心問題的最新補丁程式。
為達到不重啟的目的,目前有3個專案在朝這方面努力,將為大家提供核心公升級時打熱補丁的機制,這樣就可以做到完全不重啟機器。
首先要介紹的專案是ksplice,它是熱補丁技術的創始者,並於2023年建立了與專案同名的公司。ksplice在替換新核心時,不需要預先修改;只需要乙個diff檔案,列出核心即將接受的修改即可。ksplice公司免費提供軟體,但技術支援是需要收費的,目前能夠支援大部分常用的linux發行版本。
但在2023年oracle收購了這家公司後,情況發生了變化。 這項功能被合入到oracle自己的linux發行版本中,只對oralcle自己提供技術更新。 這就導致,其他核心hacker們開始尋找替代ksplice的方法,以避免繳納oracle稅。
2023年2月,suse提供了乙個很好的解決方案:kgraft,該核心更新技術以gplv2/gplv3混合許可證發布,且suse不會將其作為乙個專有發明封閉起來。kgraft被提交到linux核心主線,很有可能被核心主線採用。目前suse已經把此技術整合到suse linux enterprise server 12。
kgraft和ksplice在工作原理上很相似,都是使用一組diff檔案來計算核心中需要修改的部分。但與ksplice不同的是,kgraft在做替換時,不需要完全停止核心。 在打補丁時,正在執行的函式可以先使用老版本或新核心中對應的部分,當補丁打完後就可以完全切換新的版本。
red hat也提出了他們的核心熱補丁技術。同樣是在2023年初 -- 與suse在這方面的工作差不多 -- kpatch的工作原理也和kgraft相似。
主要的區別點在於,正如red hat的josh poimboeuf總結的那樣,kpatch並不將核心呼叫重定向到老版本。相反,它會等待所有函式呼叫都停止時,再切換到新核心。red hat的工程師認為這種方法更為安全,且更容易維護,缺點就是在打補丁的過程中會帶來更大的延遲。
和kgraft一樣,kpatch不僅僅可以在red hat的發行版本上使用,同時也被提交到了核心主線,作為乙個可能的候選。 壞訊息是red hat還未將此技術整合到產品中。 它只是被合入到了red hat enterprise linux 7的技術預覽版中。
red hat的工程師seth jennings在2023年11月初,提出了第四種解決方案。將kgraft和kpatch結合起來, 補丁包用這兩種方式都可以。在新的方法中,jennings提出,「熱補丁核心為其他核心模組提供了乙個熱補丁的註冊介面」, 通過這種方法,打補丁的過程 -- 更準確的說,如何處理執行時核心呼叫 --可以被更加有序的組織起來。
這項新建議也意味著兩個方案都還需要更長的時間,才能被linux核心正式採納。儘管suse步子邁得更快,並把kgraft應用到了最新的enterprise版本中。讓我們也關注一下red hat和canonical近期是否會跟進。
Linux不重啟新增硬碟
檢視 proc scsi scsi,我當前機器有兩塊硬碟,scsi0 為x 是硬碟或者磁帶機所在scsi控制器號 channel 為y 是硬碟或者磁帶機所在scsi通道的編號 id 為z 是硬碟或者磁帶機的scsi id號 lun 為u 是硬碟或者磁帶機的lun號預設情況都是0 cat proc s...
Linux下不重啟永久修改hostname
linux下不重啟永久修改hostname 1 如果只是修改hostname可以通過如下命令 hostname newhostname 注意 這種修改方式只有當前有效,等伺服器重啟後hostname就會失效,回到原來的hostname。2 如果需要永久修改hostname可通過如下命令 vi etc...
不重啟服務下釋放Linux空間
最近發現部署tomcat的linux伺服器磁碟空間占用達到了98 通過 du sh sort n的方式定位出來占用空間最大的為tomcat的catalina.out日誌,因此需要刪除該日誌檔案釋放空間,可以採用如下方式 1 刪除檔案。直接刪除catalina.out檔案而不重啟tomcat的話,空間...