本發(fā)明涉及存儲技術(shù)領(lǐng)域,特別是涉及一種基于非易失內(nèi)存的系統(tǒng)日志存儲方法及裝置。
背景技術(shù):
當(dāng)前計算機系統(tǒng)的存儲分為兩種,一種是內(nèi)部存儲,簡稱內(nèi)存,另一種是外部存儲。外部存儲主要是機械硬盤、固態(tài)硬盤、分布式存儲設(shè)備;最為常見的內(nèi)存是DRAM(Dynamic Random Access Memory),即動態(tài)隨機存儲器,DRAM只能將數(shù)據(jù)保持很短的時間。為了保持?jǐn)?shù)據(jù),DRAM使用電容存儲,所以必須隔一段時間刷新一次,如果存儲單元沒有被刷新,存儲的信息就會丟失。
目前Linux操作系統(tǒng)在運行過程中會將系統(tǒng)日志存儲于DRAM中,系統(tǒng)日志守護進程會周期性的將DRAM中的系統(tǒng)日志回寫到磁盤上。但這種機制存在一個問題,當(dāng)系統(tǒng)突然斷電或意外宕機,DRAM中的系統(tǒng)日志就不能立刻回寫到磁盤上,造成關(guān)鍵系統(tǒng)日志的丟失。
由此可見,當(dāng)系統(tǒng)突然斷電或意外宕機時,如何防止系統(tǒng)日志丟失的問題是本領(lǐng)域技術(shù)人員亟待解決的問題。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的是提供一種基于非易失內(nèi)存的系統(tǒng)日志存儲方法及裝置,用于當(dāng)系統(tǒng)突然斷電或意外宕機時,防止系統(tǒng)日志丟失的問題。
為解決上述技術(shù)問題,本發(fā)明提供一種基于非易失內(nèi)存的系統(tǒng)日志存儲方法,包括:
將非易失內(nèi)存中的預(yù)定容量的目標(biāo)內(nèi)存空間轉(zhuǎn)換為標(biāo)準(zhǔn)文件系統(tǒng);
通過掛載命令將所述標(biāo)準(zhǔn)文件系統(tǒng)掛載至系統(tǒng)日志目錄下;
當(dāng)產(chǎn)生系統(tǒng)日志時,將所述系統(tǒng)日志通過所述系統(tǒng)日志目錄存儲于所述標(biāo)準(zhǔn)文件系統(tǒng)中。
優(yōu)選地,所述將非易失內(nèi)存中的預(yù)定容量的目標(biāo)內(nèi)存空間轉(zhuǎn)換為標(biāo)準(zhǔn)文件系統(tǒng)具體包括:
在所述非易失內(nèi)存中選取所述預(yù)定容量對應(yīng)的一個空間作為所述目標(biāo)內(nèi)存空間,并獲取所述目標(biāo)內(nèi)存空間對應(yīng)的物理地址段;
將所述物理地址段重映射為內(nèi)核可讀寫的虛擬地址;
將所述虛擬地址對應(yīng)的空間執(zhí)行清零操作,并模擬為存儲設(shè)備,添加標(biāo)準(zhǔn)讀寫接口;
將所述存儲設(shè)備格式化為所述標(biāo)準(zhǔn)文件系統(tǒng)。
優(yōu)選地,還包括:當(dāng)接收到正常關(guān)機信號時,將所述標(biāo)準(zhǔn)文件系統(tǒng)中存儲的所述系統(tǒng)日志回寫至磁盤,并清空所述目標(biāo)內(nèi)存空間。
優(yōu)選地,還包括:當(dāng)接收到開機啟動信號時,判斷所述標(biāo)準(zhǔn)文件系統(tǒng)是否為空;
如果否,將所述標(biāo)準(zhǔn)文件系統(tǒng)中保留的所述系統(tǒng)日志回寫至磁盤,并清空所述標(biāo)準(zhǔn)文件系統(tǒng)。
優(yōu)選地,所述物理地址段的起始地址與所述目標(biāo)內(nèi)存空間的起始地址相同,或所述物理地址段的結(jié)束地址與所述目標(biāo)內(nèi)存空間的結(jié)束地址相同。
優(yōu)選地,還包括:
檢測所述目標(biāo)內(nèi)存空間的存儲利用率;
當(dāng)所述存儲利用率達到預(yù)定值時,輸出提示信息。
優(yōu)選地,所述標(biāo)準(zhǔn)文件系統(tǒng)為ext 4。
優(yōu)選地,所述預(yù)定容量為16G。
為解決上述技術(shù)問題,本發(fā)明還提供一種基于非易失內(nèi)存的系統(tǒng)日志存儲裝置,包括:
轉(zhuǎn)換模塊,用于將非易失內(nèi)存中的預(yù)定容量的目標(biāo)內(nèi)存空間轉(zhuǎn)換為標(biāo)準(zhǔn)文件系統(tǒng);
掛載模塊,用于通過掛載命令將所述標(biāo)準(zhǔn)文件系統(tǒng)掛載至系統(tǒng)日志目錄下;
存儲模塊,用于當(dāng)產(chǎn)生系統(tǒng)日志時,將所述系統(tǒng)日志通過所述系統(tǒng)日志目錄存儲于所述標(biāo)準(zhǔn)文件系統(tǒng)中。
優(yōu)選地,所述轉(zhuǎn)換模塊具體包括:
獲取單元,用于在所述非易失內(nèi)存中選取所述預(yù)定容量對應(yīng)的一個空間作為所述目標(biāo)內(nèi)存空間,并獲取所述目標(biāo)內(nèi)存空間對應(yīng)的物理地址段;
映射單元,用于將所述物理地址段重映射為內(nèi)核可讀寫的虛擬地址;
模擬單元,用于將所述虛擬地址對應(yīng)的空間執(zhí)行清零操作,并模擬為存儲設(shè)備,添加標(biāo)準(zhǔn)讀寫接口;
格式化單元,用于將所述存儲設(shè)備格式化為所述標(biāo)準(zhǔn)文件系統(tǒng)。
本發(fā)明所提供的基于非易失內(nèi)存的系統(tǒng)日志存儲方法,包括:將非易失內(nèi)存中的預(yù)定容量的目標(biāo)內(nèi)存空間轉(zhuǎn)換為標(biāo)準(zhǔn)文件系統(tǒng);通過掛載命令將所述標(biāo)準(zhǔn)文件系統(tǒng)掛載至系統(tǒng)日志目錄下;當(dāng)產(chǎn)生系統(tǒng)日志時,將所述系統(tǒng)日志通過所述系統(tǒng)日志目錄存儲于所述標(biāo)準(zhǔn)文件系統(tǒng)中。由此可見,本方法通過在非易失內(nèi)存中得到一塊獨立的目標(biāo)內(nèi)存空間,經(jīng)過一系列轉(zhuǎn)換后得到標(biāo)準(zhǔn)文件系統(tǒng),通過將標(biāo)準(zhǔn)文件系統(tǒng)掛載至系統(tǒng)日志目標(biāo)下實現(xiàn)將系統(tǒng)日志的存儲。由于標(biāo)準(zhǔn)文件系統(tǒng)是由目標(biāo)內(nèi)存空間轉(zhuǎn)換得到的,因此系統(tǒng)日志最終還是存儲于非易失內(nèi)存中。借助于非易失內(nèi)存的掉電數(shù)據(jù)不丟失的物理特性,即使系統(tǒng)突然宕機,系統(tǒng)日志仍然能可靠恢復(fù)。此外,本發(fā)明所提供的基于非易失內(nèi)存的系統(tǒng)日志存儲裝置,同樣具有上述有益效果。
附圖說明
為了更清楚地說明本發(fā)明實施例,下面將對實施例中所需要使用的附圖做簡單的介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實施例提供的一種基于非易失內(nèi)存的系統(tǒng)日志存儲方法的流程圖;
圖2為本發(fā)明實施例提供的基于非易失內(nèi)存的系統(tǒng)日志存儲裝置的結(jié)構(gòu)圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下,所獲得的所有其他實施例,都屬于本發(fā)明保護范圍。
本發(fā)明的核心是提供一種基于非易失內(nèi)存的系統(tǒng)日志存儲方法及裝置,用于當(dāng)系統(tǒng)突然斷電或意外宕機時,防止系統(tǒng)日志丟失的問題。
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面結(jié)合附圖和具體實施方式對本發(fā)明作進一步的詳細說明。
在具體實施中,本發(fā)明所提供的方法的運行平臺可以為K-UX操作系統(tǒng)的服務(wù)器。但是并不局限于這一種??梢岳斫獾氖?,該運行平臺需要集成兩種系統(tǒng)內(nèi)存,一種是動態(tài)隨機存儲器,一種是非易失內(nèi)存存儲器,簡稱非易失內(nèi)存。
圖1為本發(fā)明實施例提供的一種基于非易失內(nèi)存的系統(tǒng)日志存儲方法的流程圖。如圖1所示,該方法包括:
S10:將非易失內(nèi)存中的預(yù)定容量的目標(biāo)內(nèi)存空間轉(zhuǎn)換為標(biāo)準(zhǔn)文件系統(tǒng)。
作為優(yōu)選地實施方式,步驟S10具體包括:
在非易失內(nèi)存中選取預(yù)定容量對應(yīng)的一個空間作為目標(biāo)內(nèi)存空間,并獲取目標(biāo)內(nèi)存空間對應(yīng)的物理地址段;
將物理地址段重映射為內(nèi)核可讀寫的虛擬地址;
將虛擬地址對應(yīng)的空間執(zhí)行清零操作,并模擬為存儲設(shè)備,添加標(biāo)準(zhǔn)讀寫接口;
將存儲設(shè)備格式化為標(biāo)準(zhǔn)文件系統(tǒng)。
對于非易失內(nèi)存需要使用特殊的驅(qū)動將其抽象成塊設(shè)備作為普通存儲設(shè)備,其中具體實現(xiàn)方案包括如下步驟:
在操作系統(tǒng)內(nèi)核啟動時將預(yù)定容量的目標(biāo)內(nèi)存空間的物理地址段保留起來,并把這個空間的起始地址和結(jié)束地址保存在內(nèi)核變量nv_block_phyaddr中。可以理解的是,預(yù)定容量可以根據(jù)當(dāng)前非易失內(nèi)存的大小來決定,為了保證系統(tǒng)的其它性能不受影響,在具體實施中,預(yù)定容量不能太大,最好不要超過四分之一,作為優(yōu)選的實施方式,預(yù)定容量為16G。然后將物理地址段重映射為內(nèi)核可以識別并能進行讀寫的虛擬地址,保存在變量nv_block_viraddr中。編寫驅(qū)動程序,對虛擬地址nv_block_viraddr進行清零操作,使得當(dāng)前虛擬地址中不包含有任何的存儲內(nèi)容,從而不影響系統(tǒng)日志的存儲。接著,將這段虛擬地址對應(yīng)的空間模擬為存儲設(shè)備nv_dev,并實現(xiàn)標(biāo)準(zhǔn)的存儲設(shè)備讀寫接口??梢岳斫獾氖?,模擬為存儲設(shè)備后,通過存儲設(shè)備的讀寫接口,才可以正常的讀寫。最后在操作系統(tǒng)下將存儲設(shè)備格式化為標(biāo)準(zhǔn)文件系統(tǒng),如果標(biāo)準(zhǔn)文件系統(tǒng)為ext 4,則對應(yīng)的操作方法如下:
mkfs.ext4/dev/nv_dev。
S11:通過掛載命令將標(biāo)準(zhǔn)文件系統(tǒng)掛載至系統(tǒng)日志目錄下。
由于步驟S10中只是將存儲設(shè)備格式化為標(biāo)準(zhǔn)文件系統(tǒng),因此,標(biāo)準(zhǔn)文件系統(tǒng)實質(zhì)上還是存儲設(shè)備,即本步驟中,實際上也是將存儲設(shè)備掛載至系統(tǒng)日志目錄,操作方法如下:
Mount/dev/nv_dev//var/log/。
S12:當(dāng)產(chǎn)生系統(tǒng)日志時,將系統(tǒng)日志通過系統(tǒng)日志目錄存儲于標(biāo)準(zhǔn)文件系統(tǒng)中。
可以理解的是,本步驟中雖然是將系統(tǒng)日志存儲于標(biāo)準(zhǔn)文件系統(tǒng)中,但是實際上也是存儲于目標(biāo)內(nèi)存空間,因為標(biāo)準(zhǔn)文件系統(tǒng)是通過將目標(biāo)內(nèi)存空間進行了一系列轉(zhuǎn)換而得到的。
本發(fā)明實施例提供的基于非易失內(nèi)存的系統(tǒng)日志存儲方法,包括:將非易失內(nèi)存中的預(yù)定容量的目標(biāo)內(nèi)存空間轉(zhuǎn)換為標(biāo)準(zhǔn)文件系統(tǒng);通過掛載命令將所述標(biāo)準(zhǔn)文件系統(tǒng)掛載至系統(tǒng)日志目錄下;當(dāng)產(chǎn)生系統(tǒng)日志時,將所述系統(tǒng)日志通過所述系統(tǒng)日志目錄存儲于所述標(biāo)準(zhǔn)文件系統(tǒng)中。由此可見,本方法通過在非易失內(nèi)存中得到一塊獨立的目標(biāo)內(nèi)存空間,經(jīng)過一系列轉(zhuǎn)換后得到標(biāo)準(zhǔn)文件系統(tǒng),通過將標(biāo)準(zhǔn)文件系統(tǒng)掛載至系統(tǒng)日志目標(biāo)下實現(xiàn)將系統(tǒng)日志的存儲。由于標(biāo)準(zhǔn)文件系統(tǒng)是由目標(biāo)內(nèi)存空間轉(zhuǎn)換得到的,因此系統(tǒng)日志最終還是存儲于非易失內(nèi)存中。借助于非易失內(nèi)存的掉電數(shù)據(jù)不丟失的物理特性,即使系統(tǒng)突然宕機,系統(tǒng)日志仍然能可靠恢復(fù)。
在上述實施例的基礎(chǔ)上,還包括:當(dāng)接收到正常關(guān)機信號時,將標(biāo)準(zhǔn)文件系統(tǒng)中存儲的系統(tǒng)日志回寫至磁盤,并清空目標(biāo)內(nèi)存空間。
由于非易失內(nèi)存的特性,當(dāng)接收到關(guān)機信號時,會將標(biāo)準(zhǔn)文件系統(tǒng)中存儲的系統(tǒng)日志回寫至磁盤,從而實現(xiàn)防止系統(tǒng)日志丟失的目的。
在上述實施例的基礎(chǔ)上,還包括:
當(dāng)接收到開機啟動信號時,判斷標(biāo)準(zhǔn)文件系統(tǒng)是否為空;
如果否,將標(biāo)準(zhǔn)文件系統(tǒng)中保留的系統(tǒng)日志回寫至磁盤,并清空標(biāo)準(zhǔn)文件系統(tǒng)。
在具體實施中,如果出現(xiàn)宕機或者突然斷電的情況,則無法將標(biāo)準(zhǔn)文件系統(tǒng)中存儲的系統(tǒng)日志回寫至磁盤,導(dǎo)致標(biāo)準(zhǔn)文件系統(tǒng)會仍然保留系統(tǒng)日志,因此,通過判斷標(biāo)準(zhǔn)文件系統(tǒng)是否為空,確定上次關(guān)機是正常關(guān)機還是宕機或者意外斷電。
作為優(yōu)選地實施方式,物理地址段的起始地址與目標(biāo)內(nèi)存空間的起始地址相同,或物理地址段的結(jié)束地址與目標(biāo)內(nèi)存空間的結(jié)束地址相同。
在上述實施例中,對于目標(biāo)內(nèi)存空間的地址并沒有嚴(yán)格的限定,可以是非易失內(nèi)存中的最前的一段,或者是非易失內(nèi)存中最后的一段,或者是非易失內(nèi)存的中間一段。但是考慮到,非易失內(nèi)存的存儲方式,本實施例中,優(yōu)選的是將非易失內(nèi)存中的最前的一段作為目標(biāo)內(nèi)存空間,則目標(biāo)內(nèi)存空間的物理地址段的起始地址與非易失內(nèi)存的起始地址就是相同的,相對應(yīng)地,還可以將非易失內(nèi)存中的最后的一段作為目標(biāo)內(nèi)存空間,則目標(biāo)內(nèi)存空間的物理地址段的結(jié)束地址與非易失內(nèi)存的結(jié)束地址就是相同的。
作為優(yōu)選地實施方式,還包括:
檢測目標(biāo)內(nèi)存空間的存儲利用率;
當(dāng)存儲利用率達到預(yù)定值時,輸出提示信息。
為了防止目標(biāo)內(nèi)存空間的存儲利用率達到100%而導(dǎo)致系統(tǒng)日志不能存儲的問題,本實施例中增加了檢測目標(biāo)內(nèi)存空間的存儲利用率,可以理解的是,該步驟可以實時執(zhí)行,也可以定期執(zhí)行,周期不作限定。另外,預(yù)定值可以靈活設(shè)置,需要根據(jù)系統(tǒng)日志的產(chǎn)生頻率,如果是周期性的檢測的話,如果頻率較高的話,則預(yù)定值可以設(shè)置的小一些,周期設(shè)置的短一些。
與上述方法實施例相對應(yīng)的,本發(fā)明還提供一種基于非易失內(nèi)存的系統(tǒng)日志存儲裝置。圖2為本發(fā)明實施例提供的基于非易失內(nèi)存的系統(tǒng)日志存儲裝置的結(jié)構(gòu)圖。如圖2所示,該裝置包括:
轉(zhuǎn)換模塊10,用于將非易失內(nèi)存中的預(yù)定容量的目標(biāo)內(nèi)存空間轉(zhuǎn)換為標(biāo)準(zhǔn)文件系統(tǒng);
掛載模塊11,用于通過掛載命令將標(biāo)準(zhǔn)文件系統(tǒng)掛載至系統(tǒng)日志目錄下;
存儲模塊12,用于當(dāng)產(chǎn)生系統(tǒng)日志時,將系統(tǒng)日志通過系統(tǒng)日志目錄存儲于標(biāo)準(zhǔn)文件系統(tǒng)中。
作為優(yōu)選地實施方式,轉(zhuǎn)換模塊10具體包括:
獲取單元,用于在非易失內(nèi)存中選取預(yù)定容量對應(yīng)的一個空間作為目標(biāo)內(nèi)存空間,并獲取目標(biāo)內(nèi)存空間對應(yīng)的物理地址段;
映射單元,用于將物理地址段重映射為內(nèi)核可讀寫的虛擬地址;
模擬單元,用于將虛擬地址對應(yīng)的空間執(zhí)行清零操作,并模擬為存儲設(shè)備,添加標(biāo)準(zhǔn)讀寫接口;
格式化單元,用于將存儲設(shè)備格式化為標(biāo)準(zhǔn)文件系統(tǒng)。
由于裝置部分的實施例與方法部分的實施例相互對應(yīng),因此裝置部分的實施例請參見方法部分的實施例的描述,這里暫不贅述。
本發(fā)明實施例提供的基于非易失內(nèi)存的系統(tǒng)日志存儲裝置,包括:轉(zhuǎn)換模塊,用于將非易失內(nèi)存中的預(yù)定容量的目標(biāo)內(nèi)存空間轉(zhuǎn)換為標(biāo)準(zhǔn)文件系統(tǒng);掛載模塊,用于通過掛載命令將標(biāo)準(zhǔn)文件系統(tǒng)掛載至系統(tǒng)日志目錄下;存儲模塊,用于當(dāng)產(chǎn)生系統(tǒng)日志時,將系統(tǒng)日志通過系統(tǒng)日志目錄存儲于標(biāo)準(zhǔn)文件系統(tǒng)中。由此可見,本裝置通過在非易失內(nèi)存中得到一塊獨立的目標(biāo)內(nèi)存空間,經(jīng)過一系列轉(zhuǎn)換后得到標(biāo)準(zhǔn)文件系統(tǒng),通過將標(biāo)準(zhǔn)文件系統(tǒng)掛載至系統(tǒng)日志目標(biāo)下實現(xiàn)將系統(tǒng)日志的存儲。由于標(biāo)準(zhǔn)文件系統(tǒng)是由目標(biāo)內(nèi)存空間轉(zhuǎn)換得到的,因此系統(tǒng)日志最終還是存儲于非易失內(nèi)存中。借助于非易失內(nèi)存的掉電數(shù)據(jù)不丟失的物理特性,即使系統(tǒng)突然宕機,系統(tǒng)日志仍然能可靠恢復(fù)。
以上對本發(fā)明所提供的基于非易失內(nèi)存的系統(tǒng)日志存儲方法及裝置進行了詳細介紹。說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。對于實施例公開的裝置而言,由于其與實施例公開的方法相對應(yīng),所以描述的比較簡單,相關(guān)之處參見方法部分說明即可。應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以對本發(fā)明進行若干改進和修飾,這些改進和修飾也落入本發(fā)明權(quán)利要求的保護范圍內(nèi)。
還需要說明的是,在本說明書中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。