專利名稱:Linux操作系統(tǒng)下的數(shù)據(jù)儲存方法及其Linux計算機系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明是有關(guān)于一種Linux操作系統(tǒng)下的數(shù)據(jù)儲存方法及其Linux計算機系統(tǒng)。
背景技術(shù):
操作系統(tǒng)(Operation System, OS)相當(dāng)于計算機設(shè)備中的中央處理器(Central Process Unit, CPU),是軟件程序的心臟部位。各執(zhí)行命令(command)與應(yīng)用程序 (application program)等軟件,都是透過操作系統(tǒng)來驅(qū)動使用計算機設(shè)備中的硬件組件, 如主機板、內(nèi)存、硬盤、光驅(qū)、顯示卡、聲卡、網(wǎng)絡(luò)卡、各類適配卡等等。當(dāng)前個人或家庭的使用上,以微軟的窗口操作系統(tǒng)(Microsoft Windows)以及麥金塔的MacOS操作系統(tǒng)分庭抗禮。而在企業(yè)中所使用的計算機設(shè)備,必須肩負起龐大的數(shù)據(jù)流量與高速運算性能,因此操作系統(tǒng)穩(wěn)定性與作業(yè)性能為其重要考慮,除了發(fā)展已有數(shù)十年歷史的Unix操作系統(tǒng)以外,如今功能類似Unix操作系統(tǒng)的Linux操作系統(tǒng),也逐漸被企業(yè)青睞。Linux操作系統(tǒng)可以說是Unix操作系統(tǒng)的衍生物,在1991年10月左右由赫爾辛基的某位程序員所設(shè)計,它繼承了 Unix操作系統(tǒng)良好穩(wěn)定性的優(yōu)點,再加上原始碼的開放,所以企業(yè)可針對不同的需求,量身打造合適的功能。而相關(guān)應(yīng)用軟件的發(fā)展也相當(dāng)迅速。如今,Linux操作系統(tǒng)已成為業(yè)界舉足輕重的操作系統(tǒng)之一。Linux操作系統(tǒng)定位在網(wǎng)絡(luò)操作系統(tǒng),其操作方式不同于窗口接口,是以命令列的方式由使用者鍵入命令數(shù)據(jù)來運作。對于熟悉圖形環(huán)境的人來說,Linux乍看之下可能顯得原始。但是Linux操作系統(tǒng)的運作,關(guān)注的是它的內(nèi)在功能而不是表面的東西。即使是在純文字的環(huán)境中,同樣擁有非常先進的網(wǎng)絡(luò)、腳本(script)與安全能力。Linux操作系統(tǒng)是期望在網(wǎng)絡(luò)上與其它系統(tǒng)協(xié)同執(zhí)行這些任務(wù)。Linux操作系統(tǒng)的自動執(zhí)行能力也很強,只需要設(shè)計批處理文件檔案,就可以讓系統(tǒng)完成非常詳細的任務(wù)。在現(xiàn)今網(wǎng)絡(luò)盛行的時代,在Linux操作系統(tǒng)底下,使用者可針對需求在命令后加上許多參數(shù)來完成許多不同的任務(wù),Linux操作系統(tǒng)強大的網(wǎng)絡(luò)管理性能無庸置疑。話雖如此,但在異步寫入數(shù)據(jù)部分,Linux操作系統(tǒng)尚有些待改進之處。異步寫入是為了提升儲存裝置效能的一個重要技術(shù),其主要的功能是透過內(nèi)存來加速儲存裝置的寫入速度?,F(xiàn)今 Linux操作系統(tǒng)下異步寫入的作法是透過ai0_write指令,配合內(nèi)存分配特定內(nèi)存區(qū)塊來使用快取加速寫入數(shù)據(jù),但是此作法在虛擬機器死機時,aio_writhe指令所用來作快取的內(nèi)存就會消失,造成儲存裝置寫入數(shù)據(jù)的錯誤。
發(fā)明內(nèi)容
為解決已知技術(shù)的問題,本發(fā)明的一目的是提供一種Linux操作系統(tǒng)下的數(shù)據(jù)儲存方法,通過在新式虛擬機器中常見的多虛擬機共享同一內(nèi)存區(qū)塊的技術(shù),提供一個平行上使用的內(nèi)存分配機制,讓使用Linux操作系統(tǒng)作為虛擬操作系統(tǒng)(Guest OS)的虛擬機器,具有如一般附上具有電池的高級磁盤陣列卡上的防止異步寫入錯誤的功能,進而消除在無預(yù)警死機時,異步寫入的錯誤。根據(jù)本發(fā)明一實施方式,一種Linux操作系統(tǒng)下的數(shù)據(jù)儲存方法包含下列步驟。 判斷共享內(nèi)存是否處于使用狀態(tài)。若否,則由第一虛擬機器取得共享內(nèi)存的使用權(quán)。使第一虛擬機器基于經(jīng)取得的使用權(quán)判斷是否有第二虛擬機器處于死機狀態(tài)。若是,則使第一虛擬機器基于經(jīng)取得的使用權(quán)并根據(jù)死機狀態(tài),將第一虛擬機器與第二虛擬機器分別儲存于共享內(nèi)存中的第一數(shù)據(jù)與第二數(shù)據(jù)儲存至儲存裝置中。本發(fā)明的另一目的是提供一種Linux計算機系統(tǒng)。根據(jù)本發(fā)明另一實施方式,一種Linux計算機系統(tǒng)包含有共享內(nèi)存、第一虛擬機器、第二虛擬機器、儲存裝置以及管理模塊。共享內(nèi)存提供使用權(quán)。第一虛擬機器具有第一數(shù)據(jù)。第一數(shù)據(jù)儲存于共享內(nèi)存中。其中第一虛擬機器取得使用權(quán)。第二虛擬機器具有第二數(shù)據(jù)。第二數(shù)據(jù)儲存于共享內(nèi)存中。其中第二虛擬機器處于死機狀態(tài)。管理模塊用以允許第一虛擬機器基于經(jīng)取得的使用權(quán)將第一數(shù)據(jù)儲存至儲存裝置,并根據(jù)死機狀態(tài)將第二數(shù)據(jù)儲存至儲存裝置。本發(fā)明的Linux操作系統(tǒng)下的數(shù)據(jù)儲存方法及其Linux計算機系統(tǒng),主要通過在新式虛擬機器中常見的多虛擬機共享同一內(nèi)存區(qū)塊的技術(shù),提供一個平行上使用的內(nèi)存分配機制,讓使用Linux操作系統(tǒng)作為虛擬操作系統(tǒng)(Guest OS)的虛擬機器,具有如一般附上具有電池的高級磁盤陣列卡上的防止異步寫入錯誤的功能,進而消除在無預(yù)警死機時, 異步寫入的錯誤。
圖1為繪示依照本發(fā)明一實施方式的Linux操作系統(tǒng)下的數(shù)據(jù)儲存方法的步驟流程圖;圖2為繪示依照本發(fā)明一實施方式的Linux計算機系統(tǒng)的示意圖。主要組件符號說明I=Linux計算機系統(tǒng)10 管理模塊12:第一虛擬機器120:第一私有內(nèi)存區(qū)塊14:第二虛擬機器140:第二私有內(nèi)存區(qū)塊16:自旋鎖模塊18:狀態(tài)記錄模塊20:共享內(nèi)存22:儲存裝置SlOO S114 流程步驟
具體實施例方式以下將以附圖揭露本發(fā)明的數(shù)個實施方式,為明確說明起見,許多實務(wù)上的細節(jié)將在以下敘述中一并說明。然而,應(yīng)了解到,這些實務(wù)上的細節(jié)不應(yīng)用以限制本發(fā)明。也就是說,在本發(fā)明部分實施方式中,這些實務(wù)上的細節(jié)是非必要的。此外,為簡化附圖起見,一些已知慣用的結(jié)構(gòu)與組件在附圖中將以簡單示意的方式繪示之。本發(fā)明的一技術(shù)方案是一種Linux操作系統(tǒng)下的數(shù)據(jù)儲存方法。更具體地說,其主要通過在新式虛擬機器中常見的多虛擬機共享同一內(nèi)存區(qū)塊的技術(shù),提供一個平行上使用的內(nèi)存分配機制,讓使用Linux操作系統(tǒng)作為虛擬操作系統(tǒng)(Guest OS)的虛擬機器,具有如一般附上具有電池的高級磁盤陣列卡上的防止異步寫入錯誤的功能,進而消除在無預(yù)警死機時,異步寫入的錯誤。請參照圖1,其為繪示依照本發(fā)明一實施方式的Linux操作系統(tǒng)下的數(shù)據(jù)儲存方法的步驟流程圖。如圖1所示,若第一虛擬機器想要使用共享內(nèi)存,則根據(jù)本實施方式的Linux操作系統(tǒng)下的數(shù)據(jù)儲存方法可以執(zhí)行步驟S100。SlOO 判斷共享內(nèi)存是否處于使用狀態(tài)。在Linux系統(tǒng)下進行異步寫入的動作,若要避免競速問題(亦即,共享內(nèi)存同時被多臺虛擬機器寫入所造成的數(shù)據(jù)覆蓋錯誤),則必須先確定供所有虛擬機器使用的共享內(nèi)存是否有被任何一臺虛擬機器占據(jù)使用,而且也必須確保共享內(nèi)存在任何時刻最多只能供一臺虛擬機器使用。因此,根據(jù)本實施方式的Linux操作系統(tǒng)下的數(shù)據(jù)儲存方法,在第一虛擬機器要使用共享內(nèi)存之前,必須先執(zhí)行步驟S100。其中,若步驟SlOO的判斷結(jié)果為是的話,則進一步執(zhí)行步驟S102。S102 等待預(yù)定時間之后重新執(zhí)行步驟S100。換言之,若步驟SlOO的判斷結(jié)果為共享內(nèi)存正在被某一臺虛擬機器使用,則第一虛擬計算機就不能使用了。若第一虛擬計算機要使用共享內(nèi)存,就必須等正在使用共享內(nèi)存的那臺虛擬機器使用完畢,因此可以等待預(yù)定時間之后再次確認共享內(nèi)存是否已經(jīng)未處于使用狀態(tài)。至于上述的預(yù)定時間并不受限,可以根據(jù)實際應(yīng)用上的需求或限制而彈性地改變。相對地,若步驟SlOO的判斷結(jié)果為否的話,就代表目前沒有任何虛擬計算機正在使用共享內(nèi)存,則第一虛擬機器想要使用共享內(nèi)存,可進一步執(zhí)行步驟S104。S104 由第一虛擬機器取得共享內(nèi)存的使用權(quán)。當(dāng)?shù)谝惶摂M機器取得了共享內(nèi)存的使用權(quán)之后,代表第一虛擬機器取得了使用共享內(nèi)存的主導(dǎo)權(quán),其它虛擬機器并不能同時使用。若其它虛擬機器要使用共享內(nèi)存,還是得等第一虛擬機器使用完畢并歸還使用權(quán)。此外,在Linux系統(tǒng)下進行異步寫入的架構(gòu)下,可能會發(fā)生某虛擬機器死機的情況,若虛擬機器在取得使用權(quán)并使用共享內(nèi)存時發(fā)生死機,則其原本在共享內(nèi)存中正在使用的數(shù)據(jù)可能還來不及儲存于儲存裝置中,并隨著虛擬機器的死機而消失。因此,根據(jù)本實施方式的Linux操作系統(tǒng)下的數(shù)據(jù)儲存方法,在第一虛擬機器取得共享內(nèi)存的使用權(quán)之后,可以再執(zhí)行步驟S106。S106:使第一虛擬機器基于經(jīng)取得的使用權(quán)判斷是否有第二虛擬機器處于死機狀態(tài)。其中,若步驟S106的判斷結(jié)果為是的話,則進一步執(zhí)行步驟S108。S108:使第一虛擬機器基于經(jīng)取得的使用權(quán)并根據(jù)死機狀態(tài),將第一虛擬機器與第二虛擬機器分別儲存于共享內(nèi)存中的第一數(shù)據(jù)與第二數(shù)據(jù)儲存至儲存裝置中。換句話說,在第一虛擬機器取得共享內(nèi)存的使用權(quán)之后,根據(jù)步驟S106發(fā)現(xiàn)第二虛擬機器處于死機狀態(tài),則第一虛擬機器即可根據(jù)第二虛擬機器的死機狀態(tài)進入共享內(nèi)存中搜尋第二內(nèi)存在死機前正在使用的第二數(shù)據(jù)。接著,第一虛擬機器即可根據(jù)步驟S108,基于其所取得的所有權(quán)將正在共享內(nèi)存中使用的第一數(shù)據(jù)儲存至儲存裝置中,并根據(jù)第二虛擬機器的死機狀態(tài),替第二虛擬機器將其在死機前暫時儲存于共享內(nèi)存中的第二數(shù)據(jù)也一起儲存至儲存裝置中。在第一虛擬機器使用共享內(nèi)存完畢(亦即,將第一虛擬機器的第一數(shù)據(jù)與第二虛擬機器的第二數(shù)據(jù)都儲存至儲存裝置)之后,根據(jù)本實施方式的Linux操作系統(tǒng)下的數(shù)據(jù)儲存方法,可以接著執(zhí)行步驟S110。SllO 在第一數(shù)據(jù)與第二數(shù)據(jù)儲存至儲存裝置之后,使第一虛擬機器歸還使用權(quán)。相對地,若步驟S106的判斷結(jié)果為否的話,則代表在第一虛擬機器取得共享內(nèi)存的使用權(quán)之前,并沒有任何虛擬機器發(fā)生死機,則可根據(jù)本實施方式的Linux操作系統(tǒng)下的數(shù)據(jù)儲存方法,繼續(xù)執(zhí)行步驟S112。S112:使第一虛擬機器基于經(jīng)取得的使用權(quán),將第一虛擬機器儲存于共享內(nèi)存中的第一數(shù)據(jù)儲存至儲存裝置中。換句話說,若第一虛擬機器基于使用權(quán)發(fā)現(xiàn)沒有任何虛擬機器有發(fā)生死機的狀況,則第一虛擬機器就只要專注于處理其本身在共享內(nèi)存中使用的第一數(shù)據(jù)即可,并在使用完畢(亦即,將第一虛擬機器的第一數(shù)據(jù)儲存至儲存裝置)之后,根據(jù)本實施方式的 Linux操作系統(tǒng)下的數(shù)據(jù)儲存方法執(zhí)行步驟S114。S114 在第一數(shù)據(jù)儲存于儲存裝置之后,使第一虛擬機器歸還使用權(quán)。本發(fā)明的另一技術(shù)方案是一種Linux計算機系統(tǒng)。請參閱圖2,其為繪示依照本發(fā)明一實施方式的Linux計算機系統(tǒng)1的示意圖。如圖2所示,本實施方式的Linux計算機系統(tǒng)1可包含有共享內(nèi)存20、第一虛擬機器12、第二虛擬機器14、儲存裝置22以及管理模塊10。共享內(nèi)存20可以提供使用權(quán)。當(dāng)然,如上一實施方式所述,在Linux系統(tǒng)下進行異步寫入的動作,若要避免競速問題,則必須確保共享內(nèi)存20的使用權(quán)在任何時刻最多只能供一臺虛擬機器使用。如圖2所示,本實施方式中,共享內(nèi)存20的使用權(quán)由第一虛擬機器12取得。此夕卜,第一虛擬機器12包含有第一私有內(nèi)存區(qū)塊120。第一私有內(nèi)存區(qū)塊120可以用來暫時儲存第一虛擬機器12正在處理的第一數(shù)據(jù),并且在取得共享內(nèi)存20的所有權(quán)之后,第一虛擬機器12的第一數(shù)據(jù)可進一步暫時儲存于共享內(nèi)存20中。第二虛擬機器14包含有第二私有內(nèi)存區(qū)塊140。第二私有內(nèi)存區(qū)塊140可以用來暫時儲存第二數(shù)據(jù)。然而,于本實施方式中,由于第二虛擬機器14處于死機狀態(tài),代表在第二虛擬機器14死機之前,第二虛擬機器14的第二數(shù)據(jù)還暫時儲存于共享內(nèi)存20中。如圖2所示,上述的管理模塊10可以于第一虛擬機器12取得使用權(quán)時,允許第一虛擬機器12基于使用權(quán),將暫時儲存于共享內(nèi)存20中的第一數(shù)據(jù)儲存至儲存裝置22,并于第二虛擬機器14處于死機狀態(tài)時,允許第一虛擬機器12根據(jù)死機狀態(tài),將暫時儲存于共享內(nèi)存20中的將第二數(shù)據(jù)儲存至儲存裝置22。借此,處于死機狀態(tài)的第二虛擬機器14,在其死機之前暫存于共享內(nèi)存20中的第二數(shù)據(jù)即可通過第一虛擬機器12的協(xié)助而儲存至儲存裝置22中,第二數(shù)據(jù)就不會隨著第二虛擬機器14的死機而消失。此外,上述的管理??稍诘谝粩?shù)據(jù)與第二數(shù)據(jù)儲存至儲存裝置22之后,使第一虛擬機器12歸還共享內(nèi)存20的使用權(quán)。如圖2所示,本實施方式的Linux計算機系統(tǒng)1還可進一步包含有自旋鎖模塊16。 自旋鎖模塊16可以于第一虛擬機器12取得使用權(quán)時,標記共享內(nèi)存20處于使用狀態(tài),使得其它虛擬機器無法同時使用共享內(nèi)存20。并且,自旋鎖模塊16還可在第一虛擬機器12 歸還使用權(quán)之后,將共享內(nèi)存20的使用狀態(tài)取消。后續(xù),若有其它虛擬機器想使用共享內(nèi)存20,可同樣重復(fù)先取得共享內(nèi)存20的使用權(quán)的步驟,再透過自旋鎖模塊16標記共享內(nèi)存 20處于使用狀態(tài)。同樣示于圖2中,本實施方式的Linux計算機系統(tǒng)1還可進一步包含有狀態(tài)記錄模塊18。狀態(tài)記錄模塊18可以用來定期根據(jù)第一虛擬機器12與第二虛擬機器14的存活狀態(tài)制作對照表。借此,管理模塊10即可允許第一虛擬機器12基于使用權(quán)并根據(jù)定期更新的對照表判斷第二虛擬機器14處于死機狀態(tài)。換句話說,第一虛擬機器12是通過狀態(tài)記錄模塊18所制作的對照表,判斷第二虛擬機器14是否處于死機狀態(tài)。于實際應(yīng)用中,上述處于死機狀態(tài)的第二虛擬機器14的數(shù)量并不以本實施方式為限,只要是處于死機狀態(tài)的虛擬機器,皆可視為本實施方式的第二虛擬機器14,并且取得共享內(nèi)存20的使用權(quán)的第一虛擬機器12,即可將所有處于死機狀態(tài)的第二虛擬機器14儲存于共享內(nèi)存20中的第二數(shù)據(jù),進一步儲存至儲存裝置22中。由以上對于本發(fā)明的具體實施例的詳述,可以明顯地看出,本發(fā)明的Linux操作系統(tǒng)下的數(shù)據(jù)儲存方法及其Linux計算機系統(tǒng),主要通過在新式虛擬機器中常見的多虛擬機共享同一內(nèi)存區(qū)塊的技術(shù),提供一個平行上使用的內(nèi)存分配機制,讓使用Linux操作系統(tǒng)作為虛擬操作系統(tǒng)(Guest OS)的虛擬機器,具有如一般附上具有電池的高級磁盤陣列卡上的防止異步寫入錯誤的功能,進而消除在無預(yù)警死機時,異步寫入的錯誤。雖然本發(fā)明已以實施方式揭露如上,然其并非用以限定本發(fā)明,任何熟悉此技藝者,在不脫離本發(fā)明的精神和范圍內(nèi),當(dāng)可作各種的更動與潤飾,因此本發(fā)明的保護范圍當(dāng)視所附的權(quán)利要求書所界定的范圍為準。
權(quán)利要求
1.一種Linux操作系統(tǒng)下的數(shù)據(jù)儲存方法,其特征在于,包含下列步驟(a)判斷一共享內(nèi)存是否處于一使用狀態(tài),若否,則執(zhí)行步驟(b);(b)由一第一虛擬機器取得該共享內(nèi)存的一使用權(quán);(c)使該第一虛擬機器基于該經(jīng)取得的使用權(quán)判斷是否有一第二虛擬機器處于一死機狀態(tài),若是,則執(zhí)行步驟(d);以及(d)使該第一虛擬機器基于該經(jīng)取得的使用權(quán)并根據(jù)該死機狀態(tài),將該第一虛擬機器與該第二虛擬機器分別儲存于該共享內(nèi)存中的一第一數(shù)據(jù)與一第二數(shù)據(jù)儲存至一儲存裝置中。
2.根據(jù)權(quán)利要求1所述的Linux操作系統(tǒng)下的數(shù)據(jù)儲存方法,其特征在于,若步驟(a) 的判斷結(jié)果為是,則執(zhí)行下列步驟(al)等待一預(yù)定時間之后重新執(zhí)行步驟(a)。
3.根據(jù)權(quán)利要求1所述的Linux操作系統(tǒng)下的數(shù)據(jù)儲存方法,其特征在于,若步驟(c) 的判斷結(jié)果為否,則步驟(c)進一步包含下列步驟(dl)使該第一虛擬機器基于該經(jīng)取得的使用權(quán),將該第一虛擬機器儲存于該共享內(nèi)存中的該第一數(shù)據(jù)儲存至該儲存裝置中。
4.根據(jù)權(quán)利要求3所述的Linux操作系統(tǒng)下的數(shù)據(jù)儲存方法,其特征在于,步驟(dl) 進一步包含下列步驟(el)在該第一數(shù)據(jù)儲存于該儲存裝置之后,使該第一虛擬機器歸還該使用權(quán)。
5.根據(jù)權(quán)利要求3所述的Linux操作系統(tǒng)下的數(shù)據(jù)儲存方法,其特征在于,進一步包含下列步驟(e2)在該第一數(shù)據(jù)與該第二數(shù)據(jù)儲存至該儲存裝置之后,使該第一虛擬機器歸還該使用權(quán)。
6.一種Linux計算機系統(tǒng),其特征在于,包含一共享內(nèi)存,提供一使用權(quán);一第一虛擬機器,具有一第一數(shù)據(jù),可儲存于該共享內(nèi)存中;一第二虛擬機器,具有一第二數(shù)據(jù),可儲存于該共享內(nèi)存中;一儲存裝置;以及一管理模塊,用以于該第一虛擬機器取得該使用權(quán)時,允許該第一虛擬機器基于該使用權(quán)將該第一數(shù)據(jù)儲存至該儲存裝置,并用以于該第二虛擬機器處于一死機狀態(tài)時,允許該第一虛擬機器根據(jù)該死機狀態(tài)將該第二數(shù)據(jù)儲存至該儲存裝置。
7.根據(jù)權(quán)利要求6所述的Linux計算機系統(tǒng),其特征在于,進一步包含一自旋鎖模塊,用以于該第一虛擬機器取得該使用權(quán)時標記該共享內(nèi)存處于一使用狀態(tài),并在該第一虛擬機器歸還該使用權(quán)之后取消該使用狀態(tài)。
8.根據(jù)權(quán)利要求7所述的Linux計算機系統(tǒng),其特征在于,該管理模在該第一數(shù)據(jù)與該第二數(shù)據(jù)儲存至該儲存裝置之后,使該第一虛擬機器歸還該使用權(quán)。
9.根據(jù)權(quán)利要求6所述的Linux計算機系統(tǒng),其特征在于,進一步包含一狀態(tài)記錄模塊,用以定期根據(jù)該第一虛擬機器與該第二虛擬機器的存活狀態(tài)制作一對照表,其中該管理模塊允許該第一虛擬機器基于該使用權(quán)并根據(jù)該對照表判斷該第二虛擬機器處于該死機狀態(tài)。
全文摘要
本發(fā)明提供一種Linux操作系統(tǒng)下的數(shù)據(jù)儲存方法及Linux計算機系統(tǒng)。所述方法包含下列步驟判斷共享內(nèi)存是否處于使用狀態(tài)。若否,則由第一虛擬機器取得共享內(nèi)存的使用權(quán)。使第一虛擬機器基于使用權(quán)判斷是否有第二虛擬機器處于死機狀態(tài)。若是,則使第一虛擬機器基于使用權(quán)并根據(jù)死機狀態(tài),將第一虛擬機器與第二虛擬機器分別儲存于共享內(nèi)存中的第一數(shù)據(jù)與第二數(shù)據(jù)儲存至儲存裝置中。
文檔編號G06F11/00GK102479111SQ20101057550
公開日2012年5月30日 申請日期2010年11月30日 優(yōu)先權(quán)日2010年11月30日
發(fā)明者孫佑良 申請人:英業(yè)達股份有限公司