專利名稱:一種利用固態(tài)硬盤提高快照性能的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)系統(tǒng)及存儲領(lǐng)域,具體地說是一種利用固態(tài)硬盤提高快照性能的方法。
背景技術(shù):
固態(tài)硬盤(Solid State Disk ;簡稱SSD)由控制單元與存儲單元組成。存儲單元多采用非易失性的閃存(Flash)芯片,或者采用同步動態(tài)隨機(jī)存取存儲器(SynchronousDynamic Random Access Memory ;簡稱SDRAM)。SSD 不具有機(jī)械轉(zhuǎn)動裝置,具有很高的隨機(jī)讀寫性能。但造價(jià)很高,經(jīng)常用于高端存儲領(lǐng)域。快照一般是指關(guān)于指定數(shù)據(jù)集合的一個(gè)完全可用拷貝,該拷貝包括相應(yīng)數(shù)據(jù)在某個(gè)時(shí)間點(diǎn)(例如拷貝開始的時(shí)間點(diǎn))的映像??煺湛梢允撬硎镜臄?shù)據(jù)的一個(gè)副本或復(fù)制品。快照的作用是能夠進(jìn)行在線數(shù)據(jù)恢復(fù),當(dāng)存儲設(shè)備發(fā)生應(yīng)用故障或者文件損壞時(shí),可以利用快照進(jìn)行及時(shí)數(shù)據(jù)恢復(fù),將數(shù)據(jù)恢復(fù)成快照產(chǎn)生時(shí)間點(diǎn)的狀態(tài)。快照實(shí)現(xiàn)的方法有很多種,例如即寫即拷、分割鏡像快照等。在Iinux中,基于LVM實(shí)現(xiàn)快照,采用的是copy on firest write (cow)機(jī)制,其中一個(gè)重要的概念就是例外。即快照映射關(guān)系,表明快照源上數(shù)據(jù)在建立快照之后修改過,改變之前的數(shù)據(jù)從快照源設(shè)備的某一個(gè)chunk已經(jīng)拷貝到或正在拷貝到快照上另一個(gè)chunk。為了體現(xiàn)這種映射關(guān)系,需要元數(shù)據(jù)來表示這種映射關(guān)系。元數(shù)據(jù)存放的設(shè)備也叫例外倉卷。當(dāng)對快照卷或源卷讀寫時(shí),首先需要查找對應(yīng)元數(shù)據(jù),查看該chunk是否已經(jīng)映射過,即創(chuàng)建好快照之后源卷數(shù)據(jù)是否已經(jīng)修改過,假如沒有的話還需再建立新的映射關(guān)系,創(chuàng)建新的元數(shù)據(jù)。如果刪除快照的話,還需要?jiǎng)h除對應(yīng)的元數(shù)據(jù)等。每個(gè)數(shù)據(jù)塊都必須進(jìn)行元數(shù)據(jù)操作。假如將元數(shù)據(jù)存放至硬盤中,對元數(shù)據(jù)的操作必將成為快照的性能瓶頸。假如將元數(shù)據(jù)存放至內(nèi)存中,雖然可以增加快照的性能,但一旦掉電之后,元數(shù)據(jù)就會丟失。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種利用固態(tài)硬盤提高快照性能的方法。本發(fā)明的目的是按以下方式實(shí)現(xiàn)的,該方法是利用固態(tài)硬盤高隨機(jī)讀寫性能,以固態(tài)硬盤作為快照的例外倉卷,將元數(shù)據(jù)和COW數(shù)據(jù)存儲在固態(tài)硬盤中,固態(tài)硬盤中元數(shù)據(jù)的組織方式,是將快照的元數(shù)據(jù)存儲在固態(tài)硬盤的最前端,將COW數(shù)據(jù)存儲在剩余區(qū)段,以提高快照對元數(shù)據(jù)的操作性能,系統(tǒng)包括快照模塊(I)、例外倉卷模塊(2),具體步驟如下
(I)快照模塊
采用增量快照的方式,以固態(tài)硬盤作為例外倉卷,將固態(tài)硬盤分為元數(shù)據(jù)區(qū)和cow數(shù)據(jù)區(qū),當(dāng)對源卷建立快照之后,初始化例外倉庫卷的元數(shù)據(jù)區(qū),元數(shù)據(jù)的形式為oldchunk, new chunk, snap ID range,其中,old chunk 指向源卷中的塊,new chunk 指向快照卷對應(yīng)的塊,snapID range為快照ID的范圍,每個(gè)快照都有一個(gè)ID,snapID range用于表明元數(shù)據(jù)指定的塊是在哪個(gè)快照范圍之內(nèi);
當(dāng)對源卷進(jìn)行寫時(shí),首先查找元數(shù)據(jù),假如沒有查找到話,說明是第一次修改快照源,需要將快照源的數(shù)據(jù)拷貝到COW設(shè)備上,假定快照源的數(shù)據(jù)所在的位置為舊chunk,完成上述過程需要以下三個(gè)步驟
1)在COW設(shè)備上查找用于保存數(shù)據(jù)的位置,記為新chunk;
2)將快照數(shù)據(jù)源的數(shù)據(jù)保存到COW設(shè)備上新chunk處 ;
3)將例外信息old chunk, new chunk, snap ID range即所謂元數(shù)據(jù)保存至固態(tài)硬
盤;
如果查找到的話,說明在創(chuàng)建快照之后,源卷已經(jīng)更新過,源卷的數(shù)據(jù)已經(jīng)保存到COW設(shè)備中了,直接對源卷進(jìn)行寫操作;
當(dāng)對源卷進(jìn)行讀操作時(shí),直接對源卷進(jìn)行讀操作即可;
當(dāng)對快照卷進(jìn)行寫操作時(shí),首先查找元數(shù)據(jù),如果沒有查找到的話,說明源卷該Chunk處的數(shù)據(jù)還沒有修改,需要將新數(shù)據(jù)寫到COW設(shè)備上,在COW設(shè)備上查找用于保存數(shù)據(jù)的位置,記為新chunk,再將元數(shù)據(jù)保存至固態(tài)硬盤上;
如果查找到的話,直接對查找到的new chunk寫操作即可;
當(dāng)對快照卷進(jìn)行讀操作時(shí),首先查找元數(shù)據(jù),如果沒有查找到的話,讀源卷的對應(yīng)chunk,如果查找到的話,讀快照倉卷的對應(yīng)chunk ;
(2)例外倉卷模塊
固態(tài)硬盤的第一個(gè)扇區(qū)作為超級塊,用于記錄元數(shù)據(jù)B+樹的根節(jié)點(diǎn)位置、B+樹的深度和位圖和根節(jié)點(diǎn);
在固態(tài)硬盤的前一部分作為元數(shù)據(jù)存儲區(qū),元數(shù)據(jù)以B+樹的形式組織,B+樹的葉子目錄項(xiàng)包含old chunk源卷中,new chunk快照倉卷中,這對映射屬于的snapshot ID范圍,B+樹的關(guān)鍵字Key由old chunk, snapshot ID range組成,在一個(gè)node中的最大目錄項(xiàng)號是有規(guī)定的,以至于一個(gè)node剛好填充一個(gè)塊;
內(nèi)部節(jié)點(diǎn)與葉子節(jié)點(diǎn)有相同的數(shù)據(jù)結(jié)構(gòu),如果是內(nèi)部節(jié)點(diǎn),new_chunk則代表指向從屬B+樹node的指針,如果是葉子節(jié)點(diǎn),new_chunk就是要查找的數(shù)據(jù)內(nèi)容;
查找元數(shù)據(jù)B+樹時(shí),從根節(jié)點(diǎn)開時(shí)查找,根據(jù)關(guān)鍵字key來比較,對節(jié)點(diǎn)內(nèi)的關(guān)鍵字序列進(jìn)行二分查找,直到達(dá)到葉子節(jié)點(diǎn)才能命中,內(nèi)部節(jié)點(diǎn)相當(dāng)于葉子節(jié)點(diǎn)的索引,葉子節(jié)點(diǎn)直接指向COW數(shù)據(jù)區(qū);
固態(tài)硬盤沒有物理機(jī)械臂,隨機(jī)讀寫性能很高,COW數(shù)據(jù)在例外倉卷中直接以隨機(jī)的方式存儲與固態(tài)硬盤中,其中元數(shù)據(jù)的neW_Chunk用于保存COW數(shù)據(jù)所存的扇區(qū)號,當(dāng)在元數(shù)據(jù)區(qū)查找到new_chunk后,直接讀寫例外倉卷的改chunk位置;
例外倉卷空閑空間由位圖管理,位圖由一顆基樹指向,每個(gè)內(nèi)部節(jié)點(diǎn)包含64位的指針,指向從屬節(jié)點(diǎn),葉節(jié)點(diǎn)為位掩碼,每個(gè)葉子節(jié)點(diǎn)包含單獨(dú)的位,I意味著已分配,O表示空閑,位圖的根節(jié)點(diǎn)位置存于超級塊中,深度由設(shè)備大小和chunk大小共同決定;
如果深度是0,則根位圖塊只包含單個(gè)的位,設(shè)備非常小,以至于I個(gè)塊用作位圖就足夠,如果深度是1,則根位圖塊是一組64位的指針,指向的塊用作單個(gè)位圖,如果深度是2,則是二級指針,以此類推;
位圖查找時(shí),根據(jù)位圖塊號從根節(jié)點(diǎn)開始遍歷,遍歷時(shí),由位圖塊號和深度求出每一層的索引,直到查找到葉子節(jié)點(diǎn)為止。本發(fā)明的有益效果是該方法是兼顧性能的考慮,利用固態(tài)硬盤來提高快照性能的方法。提到的兼顧性能的考慮,是因?yàn)槿绻云胀ㄓ脖P存儲快照數(shù)據(jù),快照數(shù)據(jù)的操作會極大的降低快照的性能。利用固態(tài)硬盤來存儲快照數(shù)據(jù),是利用固態(tài)硬盤的高隨機(jī)讀寫性能來提高快照數(shù)據(jù)操作的速率。本發(fā)明的一種將固態(tài)硬盤作為快照的例外倉庫存儲設(shè)備的方法,利用固態(tài)硬盤高隨機(jī)讀寫性能,提高快照對元數(shù)據(jù)的操作性能,而且掉電元數(shù)據(jù)不丟失,達(dá)到了高性能、高可用性快照的技術(shù)效果。
圖I是快照模塊結(jié)構(gòu) 圖2是元數(shù)據(jù)組織結(jié)構(gòu) 圖3是位圖組織結(jié)構(gòu)圖。
具體實(shí)施例方式參照說明書附圖對本發(fā)明的方法作以下詳細(xì)地說明。具體技術(shù)方案如下
IX 一種實(shí)現(xiàn)快照的方式,以固態(tài)硬盤作為快照的例外倉卷,將元數(shù)據(jù)和COW數(shù)據(jù)存儲在固態(tài)硬盤中;
2〉.固態(tài)硬盤中元數(shù)據(jù)的組織方式,將快照的元數(shù)據(jù)存儲在固態(tài)硬盤的最前端,將COW數(shù)據(jù)存儲在剩余區(qū)段;
(I)快照模塊
本例采用增量快照的方式,以固態(tài)硬盤作為例外倉卷,如圖I所示
將固態(tài)硬盤分為元數(shù)據(jù)區(qū)和■數(shù)據(jù)區(qū),當(dāng)對源卷建立快照之后,初始化例外倉庫卷的元數(shù)據(jù)區(qū)。元數(shù)據(jù)的形式為(old chunk, new chunk, snap ID range), old chunk指向源卷中的塊,new chunk指向快照卷對應(yīng)的塊,snapID range為快照ID的范圍,每個(gè)快照都有一個(gè)ID, snapID range用于表明元數(shù)據(jù)指定的塊是在哪個(gè)快照范圍之內(nèi);
當(dāng)對源卷進(jìn)行寫時(shí),首先查找元數(shù)據(jù),假如沒有查找到話,說明是第一次修改快照源,需要將快照源的數(shù)據(jù)拷貝到COW設(shè)備上,假定快照源的數(shù)據(jù)所在的位置為舊chunk,完成上述過程需要三個(gè)步驟;
1)在COW設(shè)備上查找用于保存數(shù)據(jù)的位置,記為新chunk;
2)將快照數(shù)據(jù)源的數(shù)據(jù)保存到COW設(shè)備上新chunk處;
3)將例外信息(old chunk, new chunk, snapID range)即所謂元數(shù)據(jù)保存至固態(tài)硬
盤;
如果查找到的話,說明在創(chuàng)建快照之后,源卷已經(jīng)更新過,源卷的數(shù)據(jù)已經(jīng)保存到COW設(shè)備中了??梢灾苯訉υ淳磉M(jìn)行寫;
當(dāng)對源卷進(jìn)行讀時(shí),直接對源卷進(jìn)行讀即可;
當(dāng)對快照卷進(jìn)行寫操作時(shí),首先查找元數(shù)據(jù),如果沒有查找到的話,說明源卷該Chunk處的數(shù)據(jù)還沒有修改,需要將新數(shù)據(jù)寫到COW設(shè)備上。在COW設(shè)備上查找用于保存數(shù)據(jù)的位置,記為新chunk。再將元數(shù)據(jù)保存至固態(tài)硬盤上;
如果查找到的話,直接對查找到的new chunk寫即可;
當(dāng)對快照卷進(jìn)行讀操作時(shí),首先查找元數(shù)據(jù),如果沒有查找到的話,讀源卷的對應(yīng)chunk,如果查找到的話,讀快照倉卷的對應(yīng)chunk ;
(2)例外倉卷模塊
固態(tài)硬盤的第一個(gè)扇區(qū)作為超級塊,用于記錄元數(shù)據(jù)B+樹的根節(jié)點(diǎn)位置、B+樹的深度和位圖和根節(jié)點(diǎn)。
在固態(tài)硬盤的前一部分作為元數(shù)據(jù)存儲區(qū),元數(shù)據(jù)以B+樹的形式組織。B+樹的葉子目錄項(xiàng)包含old chunk(源卷中),new chunk(快照倉卷中),這對映射屬于的snapshot ID 范圍。B+樹的關(guān)鍵字(Key)由old chunk, snapshot ID range組成。在一個(gè)node中的最大目錄項(xiàng)號是有規(guī)定的,以至于一個(gè)node剛好填充一個(gè)塊。內(nèi)部節(jié)點(diǎn)與葉子節(jié)點(diǎn)有相同的數(shù)據(jù)結(jié)構(gòu)。如果是內(nèi)部節(jié)點(diǎn),new_chunk則代表指向從屬B+樹node的指針。如果是葉子節(jié)點(diǎn),new_chunk就是要查找的數(shù)據(jù)內(nèi)容。如圖2所
/Jn ο查找元數(shù)據(jù)B+樹時(shí),從根節(jié)點(diǎn)開時(shí)查找,根據(jù)關(guān)鍵字key來比較,對節(jié)點(diǎn)內(nèi)的關(guān)鍵字序列進(jìn)行二分查找,直到達(dá)到葉子節(jié)點(diǎn)才能命中,內(nèi)部節(jié)點(diǎn)相當(dāng)于葉子節(jié)點(diǎn)的索引。葉子節(jié)點(diǎn)直接指向COW數(shù)據(jù)區(qū)。固態(tài)硬盤沒有物理機(jī)械臂,隨機(jī)讀寫性能很高,COW數(shù)據(jù)在例外倉卷中直接以隨機(jī)的方式存儲與固態(tài)硬盤中,其中元數(shù)據(jù)的neW_Chunk用于保存COW數(shù)據(jù)所存的扇區(qū)號,當(dāng)在元數(shù)據(jù)區(qū)查找到new_chunk后,直接讀寫例外倉卷的改chunk位置。例外倉卷空閑空間由位圖管理。位圖由一顆基樹指向。每個(gè)內(nèi)部節(jié)點(diǎn)包含64位的指針,指向從屬節(jié)點(diǎn),葉節(jié)點(diǎn)為位掩碼。每個(gè)葉子節(jié)點(diǎn)包含單獨(dú)的位,I意味著已分配,O表示空閑。位圖的根節(jié)點(diǎn)位置存于超級塊中,深度由設(shè)備大小和Chunk大小共同決定。如果深度是0,則根位圖塊只包含單個(gè)的位(設(shè)備非常小,以至于I個(gè)塊用作位圖就足夠)。如果深度是1,則根位圖塊是一組64位的指針,指向的塊用作單個(gè)位圖。如果深度是2,則是二級指針,以此類推。由圖3所示。位圖查找時(shí),根據(jù)位圖塊號從根節(jié)點(diǎn)開始遍歷,遍歷時(shí),由位圖塊號和深度求出每一層的索引,直到查找到葉子節(jié)點(diǎn)為止。除說明書所述的技術(shù)特征外,均為本專業(yè)技術(shù)人員的已知技術(shù)。
權(quán)利要求
1.一種利用固態(tài)硬盤提高快照性能的方法,其特征在于,該方法是利用固態(tài)硬盤高隨機(jī)讀寫性能,以固態(tài)硬盤作為快照的例外倉卷,將元數(shù)據(jù)和COW數(shù)據(jù)存儲在固態(tài)硬盤中,固態(tài)硬盤中元數(shù)據(jù)的組織方式,是將快照的元數(shù)據(jù)存儲在固態(tài)硬盤的最前端,將COW數(shù)據(jù)存儲在剩余區(qū)段,以提高快照對元數(shù)據(jù)的操作性能,系統(tǒng)包括快照模塊(I)、例外倉卷模塊(2),具體步驟如下 (1)快照模塊 采用增量快照的方式,以固態(tài)硬盤作為例外倉卷,將固態(tài)硬盤分為元數(shù)據(jù)區(qū)和cow數(shù)據(jù)區(qū),當(dāng)對源卷建立快照之后,初始化例外倉庫卷的元數(shù)據(jù)區(qū),元數(shù)據(jù)的形式為oldchunk, new chunk, snap ID range,其中,old chunk 指向源卷中的塊,new chunk 指向快照卷對應(yīng)的塊,snapID range為快照ID的范圍,每個(gè)快照都有一個(gè)ID,snapID range用于表明元數(shù)據(jù)指定的塊是在哪個(gè)快照范圍之內(nèi); 當(dāng)對源卷進(jìn)行寫時(shí),首先查找元數(shù)據(jù),假如沒有查找到話,說明是第一次修改快照源,需要將快照源的數(shù)據(jù)拷貝到COW設(shè)備上,假定快照源的數(shù)據(jù)所在的位置為舊chunk,完成上述過程需要以下三個(gè)步驟 1)在COW設(shè)備上查找用于保存數(shù)據(jù)的位置,記為新chunk; 2)將快照數(shù)據(jù)源的數(shù)據(jù)保存到COW設(shè)備上新chunk處; 3)將例外信息oldchunk, new chunk, snapID range即所謂元數(shù)據(jù)保存至固態(tài)硬盤; 如果查找到的話,說明在創(chuàng)建快照之后,源卷已經(jīng)更新過,源卷的數(shù)據(jù)已經(jīng)保存到COW設(shè)備中了,直接對源卷進(jìn)行寫操作; 當(dāng)對源卷進(jìn)行讀操作時(shí),直接對源卷進(jìn)行讀操作即可; 當(dāng)對快照卷進(jìn)行寫操作時(shí),首先查找元數(shù)據(jù),如果沒有查找到的話,說明源卷該chunk處的數(shù)據(jù)還沒有修改,需要將新數(shù)據(jù)寫到COW設(shè)備上,在COW設(shè)備上查找用于保存數(shù)據(jù)的位置,記為新chunk,再將元數(shù)據(jù)保存至固態(tài)硬盤上; 如果查找到的話,直接對查找到的new chunk寫操作即可; 當(dāng)對快照卷進(jìn)行讀操作時(shí),首先查找元數(shù)據(jù),如果沒有查找到的話,讀源卷的對應(yīng)chunk,如果查找到的話,讀快照倉卷的對應(yīng)chunk ; (2)例外倉卷模塊 固態(tài)硬盤的第一個(gè)扇區(qū)作為超級塊,用于記錄元數(shù)據(jù)B+樹的根節(jié)點(diǎn)位置、B+樹的深度和位圖和根節(jié)點(diǎn); 在固態(tài)硬盤的前一部分作為元數(shù)據(jù)存儲區(qū),元數(shù)據(jù)以B+樹的形式組織,B+樹的葉子目錄項(xiàng)包含old chunk源卷中,new chunk快照倉卷中,這對映射屬于的snapshot ID范圍,B+樹的關(guān)鍵字Key由old chunk, snapshot ID range組成,在一個(gè)node中的最大目錄項(xiàng)號是有規(guī)定的,以至于一個(gè)node剛好填充一個(gè)塊; 內(nèi)部節(jié)點(diǎn)與葉子節(jié)點(diǎn)有相同的數(shù)據(jù)結(jié)構(gòu),如果是內(nèi)部節(jié)點(diǎn),new_chunk則代表指向從屬B+樹node的指針,如果是葉子節(jié)點(diǎn),new_chunk就是要查找的數(shù)據(jù)內(nèi)容; 查找元數(shù)據(jù)B+樹時(shí),從根節(jié)點(diǎn)開時(shí)查找,根據(jù)關(guān)鍵字key來比較,對節(jié)點(diǎn)內(nèi)的關(guān)鍵字序列進(jìn)行二分查找,直到達(dá)到葉子節(jié)點(diǎn)才能命中,內(nèi)部節(jié)點(diǎn)相當(dāng)于葉子節(jié)點(diǎn)的索引,葉子節(jié)點(diǎn)直接指向COW數(shù)據(jù)區(qū); 固態(tài)硬盤沒有物理機(jī)械臂,隨機(jī)讀寫性能很高,COW數(shù)據(jù)在例外倉卷中直接以隨機(jī)的方式存儲與固態(tài)硬盤中,其中元數(shù)據(jù)的neW_Chunk用于保存COW數(shù)據(jù)所存的扇區(qū)號,當(dāng)在元數(shù)據(jù)區(qū)查找到new_chunk后,直接讀寫例外倉卷的改chunk位置; 例外倉卷空閑空間由位圖管理,位圖由一顆基樹指向,每個(gè)內(nèi)部節(jié)點(diǎn)包含64位的指針,指向從屬節(jié)點(diǎn),葉節(jié)點(diǎn)為位掩碼,每個(gè)葉子節(jié)點(diǎn)包含單獨(dú)的位,I意味著已分配,0表示空閑,位圖的根節(jié)點(diǎn)位置存于超級塊中,深度由設(shè)備大小和chunk大小共同決定; 如果深度是0,則根位圖塊只包含單個(gè)的位,設(shè)備非常小,以至于I個(gè)塊用作位圖就足夠,如果深度是1,則根位圖塊是一組64位的指針,指向的塊用作單個(gè)位圖,如果深度是2,則是二級指針,以此類推; 位圖查找時(shí),根據(jù)位圖塊號從根節(jié)點(diǎn)開始遍歷,遍歷時(shí) ,由位圖塊號和深度求出每一層的索引,直到查找到葉子節(jié)點(diǎn)為止。
全文摘要
本發(fā)明提供一種利用固態(tài)硬盤提高快照性能的方法,該方法是兼顧性能的考慮,利用固態(tài)硬盤來提高快照性能的方法。提到的兼顧性能的考慮,是因?yàn)槿绻云胀ㄓ脖P存儲快照數(shù)據(jù),快照數(shù)據(jù)的操作會極大的降低快照的性能。利用固態(tài)硬盤來存儲快照數(shù)據(jù),是利用固態(tài)硬盤的高隨機(jī)讀寫性能來提高快照數(shù)據(jù)操作的速率。本發(fā)明的一種將固態(tài)硬盤作為快照的例外倉庫存儲設(shè)備的方法,利用固態(tài)硬盤高隨機(jī)讀寫性能,提高快照對元數(shù)據(jù)的操作性能,而且掉電元數(shù)據(jù)不丟失,達(dá)到了高性能、高可用性快照的技術(shù)效果。
文檔編號G06F12/02GK102968381SQ201210465199
公開日2013年3月13日 申請日期2012年11月19日 優(yōu)先權(quán)日2012年11月19日
發(fā)明者王少鋒 申請人:浪潮電子信息產(chǎn)業(yè)股份有限公司