[發明專利]一種Linux內核可熱插撥內核模塊運行時升級方法在審
| 申請號: | 201410248550.5 | 申請日: | 2014-06-06 |
| 公開(公告)號: | CN103984585A | 公開(公告)日: | 2014-08-13 |
| 發明(設計)人: | 任元 | 申請(專利權)人: | 浪潮電子信息產業股份有限公司 |
| 主分類號: | G06F9/445 | 分類號: | G06F9/445 |
| 代理公司: | 濟南信達專利事務所有限公司 37100 | 代理人: | 姜明 |
| 地址: | 250014 山東*** | 國省代碼: | 山東;37 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 linux 內核 可熱插撥 模塊 運行 升級 方法 | ||
技術領域???
本發明提供一種Linux內核可熱插撥內核模塊運行時升級方法,屬于計算機操作系統領域。通過添加一個新的系統調用,實現更新一個正在使用中的內核動態裝載的模塊代碼到新的版本。
背景技術
?Linux內核可熱插撥內核模塊技術的出現極大的方便了Linux內核程序的開發,它使得人們在Linux上可以不重啟系統的前提下,添加需要用到的內核模塊程序,并在不需要時卸載它,也不用重啟操作系統,一直以來,人們都認為,這已經非常方便各種應用程序及設備驅動的開發了。但是,近年來,各種高可靠性、高可持續性的服務要求對此特性越來越不滿足:我的重要服務在任何狀況下都盡可能不要中斷業務,但在更新服務軟件相關的內核模塊時,服務程序不得不暫時停止,等相關的內核模塊的新版本被裝載進操作系統內核后,再重新啟動服務程序提供服務,盡管維護者會盡可能在短時間內完成這些事務性的工作,但是,這個短暫的中斷對于要求高可用性的服務仍然有著巨大的不良影響。?
?當然,也許有人會說:可以利用雙機備份,等多種方式方法來解決這個問題,但是,越發復雜的服務器集群一類的架構不僅增加了大量的金錢浪費,而且也增加了出故障的更多可能,并且維護相關的費用也是無底洞!因此迫切需要出現一種能夠以較低的成本,幾乎完全不中斷服務的方法去更新服務程序相關的內核模塊技術。?
發明內容
一種Linux內核可熱插撥內核模塊運行時升級方法。為實現這一目的,本發明的技術解決方案是:通過向Linux操作系統添加一個內核模塊升級系統調用,提供更新指定的內核模塊的能力。本方法在內核模塊升級系統調用實現了一個正在運行著的內核模塊,在不卸載及重新裝載的前提下,更新其代碼,用此內核模塊新的版本替換舊的版本,在此過程中,此內核模塊仍能正常使用,即不中斷該內核模塊提供的服務。?
通過在操作系統中新添加的模塊升級系統調用,同步地把指定的內核模塊由當前版本,升級到一個新的版本,并且這個新的版本可以是比當前版本高或者低的。?
當使用模塊升級系統調用升級可熱插撥內核模塊時,以原模塊及新模塊全路徑為參數,在升級內存中的運行著的該模塊的同時升級文件系統中的原模塊。?
在升級正在運行中的內核模塊的過程為:?
???a.模塊升級系統調用把新版本的內核模塊代碼添加到正在運行著的內核映像內存中去;
???b.檢測舊版本的內核模塊函數是否正在使用中,如果沒有在使用中,則在它的開始處注入一個跳轉指令,從而調用函數的在新版本內核中的實現;
???c.如果在使用中,則暫時放棄替換該函數,并睡眠一小會,然后再次嘗試b中的動作,重復數次,如果失敗,則恢復原狀;
???在升級文件系統中的原模塊的過程為:
???a.?模塊升級系統調用調用文件系統函數把新模塊拷貝到原模塊目錄中,并命名一個新名字;
???b.?模塊升級系統調用調用文件系統函數刪除原模塊;
???c.?模塊升級系統調用調用文件系統函數把新模塊重命名為原模塊的名字,完成升級。
本發明的有益效果是:?
本發明提供一種不中斷服務的方法去更新服務程序相關的內核模塊技術,在內核模塊升級系統調用實現了一個正在運行著的內核模塊,在不卸載及重新裝載的前提下,更新其代碼,用此內核模塊新的版本替換舊的版本,在此過程中,此內核模塊仍能正常使用,即不中斷該內核模塊提供的服務。實現了能夠以較低的成本,幾乎完全不中斷服務的方法去更新服務程序相關的內核模塊技術。
附圖說明
圖1?是Linux可熱插撥內核模塊運行時升級原理圖;?
圖2?是Linux可熱插撥內核模塊運行時升級流程簡圖。
具體實施方式
下面按照說明書附圖對本發明作詳細說明:?
?本發明的技術解決方案是:通過向Linux操作系統添加一個內核模塊升級系統調用,提供更新指定的內核模塊的能力。本方法在內核模塊升級系統調用實現了一個正在運行著的內核模塊,在不卸載及重新裝載的前提下,更新其代碼,用此內核模塊新的版本替換舊的版本,在此過程中,此內核模塊仍能正常使用,即不中斷該內核模塊提供的服務。
如圖1,內核模塊升級系統調用,先把新內核模塊代碼添加到內核映像中去,然后在舊模塊要升級的函數入口處,注入跳轉指令(x86系統上jmp是跳轉指令),跳轉到新內核模塊的對應于舊模塊的函數升級后的新函數去執行新函數的代碼,從而實現了舊模塊中的代碼更新為新模塊中的代碼。?
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于浪潮電子信息產業股份有限公司,未經浪潮電子信息產業股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410248550.5/2.html,轉載請聲明來源鉆瓜專利網。





