內核補丁 「無需重啟系統」—你不得不看!
4月15日,隨著 Linux4.0 版本的發布,版本中的新功能「 『無需重啟』內核補丁機制」成為了一個熱門話題。加上主流發行版本承諾將在今年的某個時間支持4.0內核以及它的新功能(包括「無需重啟」補丁機制)。現在正是一個好時機來看看這些新功能做了什麼以及它將給你帶來什麼樣不同的體驗?
首先,這到底意味著什麼?好吧,這是第一次,也是第一個,通過它的命名就能知道它做的十分出色的新功能。在 Linux4.0 之前的版本,當內核通過補丁來升級時,系統都必須要重啟。
發布內核補丁有著各種各樣的原因,但是最常見的原因還是修補系統漏洞。這也是為什麼及時安裝補丁是如此的重要。
和其他操作系統不同的是, Linux 能夠更新系統中許多不同的部分而無需重啟,但內核更新卻是不同的,每一個進程的運行都與內核緊密相連,所以在運行之中切斷部分內核是一個非常冒險的舉動。
另一方面,重啟電腦是一件令人抓狂的事情。在某些特殊的時刻,雖然計算機需要重啟,但是你必須得讓它保持運行。這就是為什麼「 『無需重啟』內核補丁機制」成為很多用戶的當務之急。考慮到這個需求,兩家公司都在努力尋找各自不同的解決方案。紅帽一直致力於 kpatch 項目,而 SUSE 則一直在為 kGraft 項目而努力。這些程序都是為同一個使命而生,但他們卻選擇了不同的方法並有著各自的長處。
Kpatch 會暫停任何的進程,而後在移除舊代碼之前將系統調用從舊的核函數變更到新的補丁函數。因為所有進程運行將以一個非常快的速度完成——1到40毫秒。然而,在這期間程序是被凍結住的,這意味著會出現極短的只有幾分之一秒的 down機時間,但是在有些特定的情況下,這依然是不可接受的。
KGraft, 在另一方面,依次地處理每一個線程,因為他們使得系統調用直到所有的線程都運行補丁代碼。在這個時候,補丁得以完整的安裝而舊的代碼被移除。這需要更多的時間來完成補丁的過程,但是它沒有 down 機時間。
從兩個不同的角度分別的解決了同一個問題之後,這兩家公司在去年的十月份走到了一起,他們一直致力於把兩種不同的方法融合在一起。而融合的結果則被應用到了內核4.0版本之中。所以,在知道了什麼是「 『無需重啟』內核補丁機制」和它的工作原理之後,下一個大多數用戶都會問的問題就是「它將帶來了什麼樣的改變」
對於桌面用戶來說,這些改變相對來說微不足道。對於那些沒有4.0版本的用戶來說,安裝一個內核補丁意味著必須重啟系統,在這之前你必須保存你的工作,但這會打亂你的工作流程,讓你神煩,並有可能成為你工作中的一個小插曲。如果一個中等大小或者大的辦公室的所有員工都得在同一天安裝補丁的話,這會對生產效率的提高產生很大的打擊。所以,相比之下,新功能成本非常低並能夠確保安全,這是非常值得的。
另一方面,一些伺服器和關鍵實時應用在沒有事先安排的情況下是不允許被佔用的,哪怕只有短短的幾分鐘。所以在這些時候,用戶需要安裝補丁修復系統漏洞來確保系統安全便成了一個永遠的痛。此時, 「 『無需重啟』內核補丁機制」就成了用戶的福音。
但這並不意味著系統重啟已經成為一個過去式,即使是在 Linux4.0 內核系統中,也將會有需要重啟的安全更新,因為有的非內核部件安裝補丁是需要重啟的。
一些批評者因此聲稱,在「 『無需重啟』內核補丁機制」上花費如此多的時間和精力使得人們忘記了那些真正需要努力解決的實際目標。開發「 『無需重啟』內核補丁機制」是為了避免重啟系統帶來的損失,反過來想,也許開發者應該想想如何降低重啟系統的成本。
原文鏈接:http://www.linuxjournal.com/content/no-reboot-kernel-patching-and-why-you-should-care