專利名稱:一種數據處理方法、裝置及系統(tǒng)的制作方法
技術領域:
本發(fā)明涉及計算機領域,尤其涉及一種數據處理方法、裝置及系統(tǒng)。
背景技術:
如何解決IO瓶頸是服務器領域最熱門的話題。信息數據的爆炸使存儲容量成倍增長,但存儲和IO技術的增長無法跟上信息數據量增長的速度,造成IO的負擔越發(fā)嚴重。 壓縮技術利用富余的處理器計算能力,既可以減少數據存儲的容量,又可以降低IO傳輸帶寬;緩存技術(SSD緩存,Page Cache)將熱點數據放置在速度更快的存儲模塊,降低IO瓶頸。操作系統(tǒng)廠商提供文件系統(tǒng)和內存的數據壓縮功能;存儲廠商提供存儲壓縮功能;數據庫廠商提供數據庫壓縮功能;各廠商力爭各自的壓縮功能做到透明,避免對其它模塊功能的影響。但是,內存、文件系統(tǒng)等實時壓縮的功能對不同類型數據塊統(tǒng)一處理,實時壓縮算法壓縮比例并不高,這些都造成目前的壓縮技術存在諸多缺陷(I)從內存到文件系統(tǒng)到存儲,各個層級單獨提供透明壓縮功能,無法有效配合。 若同時開啟壓縮功能,可能帶來負面影響。(2)不同的壓縮算法對不同數據壓縮效率不同,統(tǒng)一處理,性能提升不明顯。(3)緩存熱點數據實時性要求高,壓縮帶來的額外開銷甚至有可能造成性能下降。
發(fā)明內容
針對目前各種壓縮方案無法相互有效配合,以及熱點數據壓縮帶來的額外開銷問題,本發(fā)明實施例將壓縮技術和緩存技術相結合,提供一種基于數據壓縮的數據存儲方法, 提聞存儲性能。具體技術方案如下本發(fā)明實施例提供一種計算節(jié)點,該計算節(jié)點包括硬件層、運行在硬件層之上的操作系統(tǒng)以及運行在操作系統(tǒng)之上的應用層,所述硬件層包括處理器、存儲控制器、第一存儲陣列和第二存儲陣列;所述第一存儲陣列對于操作系統(tǒng)呈現為兩個邏輯存儲區(qū)域,分別是第一存儲區(qū)和第二存儲區(qū);所述第二存儲陣列對操作系統(tǒng)呈現為兩個邏輯存儲區(qū)域,分別是第三存儲區(qū)和第四存儲區(qū);所述第一存儲區(qū)存儲未壓縮的熱點數據,所述第二存儲區(qū)存儲已壓縮的溫點數據,所述第三存儲區(qū)存儲未壓縮的溫點數據和未壓縮的冷點數據,所述第四存儲區(qū)存儲已壓縮的冷點數據;所述操作系統(tǒng)用于接收所述應用層發(fā)起的數據寫入請求,所述數據寫入請求包含待寫入的數據塊,所述數據塊具有熱度屬性和壓縮屬性,其中所述熱度屬性為熱點、溫點或冷點,所述壓縮屬性為可壓縮或不可壓縮,根據所述數據塊的熱度屬性和壓縮屬性,向所述處理器發(fā)送相應的數據寫入指令,由所述處理器將所述數據寫入指令發(fā)送給所述存儲控制器,所述數據寫入指令包含所述數據塊寫入的目標存儲區(qū);所述存儲控制器用于接收所述處理器發(fā)送的數據寫入指令,并根據所述數據寫入指令將所述數據塊寫入對應的目標存儲區(qū)。
本發(fā)明實施例還提供一種數據處理方法,該方法應用于計算節(jié)點,所述計算節(jié)點包含第一存儲陣列和第二存儲陣列,所述第一存儲陣列對于操作系統(tǒng)呈現為兩個邏輯存儲區(qū)域,分別是第一存儲區(qū)和第二存儲區(qū);所述第二存儲陣列對操作系統(tǒng)呈現為兩個邏輯存儲區(qū)域,分別是第三存儲區(qū)和第四存儲區(qū),該方法包括獲取數據寫入請求,所述數據寫入請求包含待寫入的數據塊,所述數據塊包含熱度屬性和壓縮屬性,其中所述熱度屬性為熱點、溫點或冷點,所述壓縮屬性為可壓縮或不可壓縮;根據所述數據塊的熱度屬性和壓縮屬性,將所述數據塊寫入對應的目標存儲區(qū), 所述目標存儲區(qū)為第一存儲區(qū)、第二存儲區(qū)、第三存儲區(qū)和第四存儲區(qū)中的一個或多個存儲區(qū)。本發(fā)明實施例還提供一種計算機系統(tǒng),該系統(tǒng)至少包括一個本發(fā)明實施例提供的計算節(jié)點。綜上所述,本發(fā)明實施例提供的計算節(jié)點及計算機系統(tǒng),利用數據壓縮技術,提高數據在緩存或熱點數據盤的命中率;另外,通過對數據的熱度進行區(qū)分,例如對訪問最頻繁的熱點數據不壓縮,而對訪問頻度居中的溫點數據進行壓縮處理,以及通過將存儲區(qū)域進一步細分為存儲壓縮數據的區(qū)域和存儲不壓縮數據的區(qū)域,在利用壓縮提高緩存命中率的同時,弱化了數據壓縮可能帶來的一些負面影響;再次,通過給數據增加熱度屬性和壓縮屬性,內存和數據存儲之間、緩存和普通存儲之間或熱點數據盤與普通存儲之間都可以通過信息共享來共享這些數據的信息,實現協同工作。
為了更清楚地說明本發(fā)明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。圖I為本發(fā)明實施例提供的計算節(jié)點的邏輯結構示意圖;圖2為本發(fā)明實施例提供的計算節(jié)點的存儲區(qū)域邏輯劃分示意圖;圖3為本發(fā)明實施例提供的計算機系統(tǒng)的邏輯結構示意圖;圖4為本發(fā)明實施例提供的一種數據處理方法的方法流程示意圖;圖5為本發(fā)明實施例提供的一種數據寫入方法的具體流程圖;圖6為本發(fā)明實施例提供的另一種數據處理方法的方法流程示意圖;圖7為本發(fā)明實施例提供的數據讀取方法的具體流程圖;圖8為本發(fā)明實施例提供的數據預取方法的具體流程圖;圖9為本發(fā)明實施例提供的數據替換方法的具體流程圖;圖10為本發(fā)明實施例提供的離線數據壓縮方法的具體流程圖。
具體實施例方式下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。請參與圖1,為本發(fā)明實施例提供的一種計算節(jié)點的結構示意圖。如圖I所示,該計算節(jié)點包括硬件層10、運行在硬件層之上的操作系統(tǒng)20以及運行在操作系統(tǒng)之上的應用層 30,硬件層10又包括處理器11、存儲控制器12、第一存儲陣列13和第二存儲陣列14 ;如圖2所示,第一存儲陣列13對于操作系統(tǒng)20呈現為兩個邏輯存儲區(qū)域,分別是第一存儲區(qū)131和第二存儲區(qū)132 ;第二存儲陣列14對操作系統(tǒng)20呈現為兩個邏輯存儲區(qū)域,分別是第三存儲區(qū)141和第四存儲區(qū)142 ;第一存儲區(qū)131存儲未壓縮的熱點數據,第二存儲區(qū) 132存儲已壓縮的溫點數據,第三存儲區(qū)141存儲未壓縮的溫點數據和未壓縮的冷點數據, 第四存儲區(qū)142存儲已壓縮的冷點數據。如圖2所示,第一存儲陣列13和第二存儲陣列14 可以通過存儲控制器12連接。通常而言,溫點數據的訪問頻度介于熱點數據和冷點數據之間。數據的訪問頻度,即數據的溫點、熱點、冷點屬性是可以變化的。在該計算節(jié)點中,操作系統(tǒng)20用于接收應用層30發(fā)起的數據寫入請求,所述數據寫入請求包含待寫入的數據塊,所述數據塊具有熱度屬性和壓縮屬性,其中所述熱度屬性為熱點、溫點或冷點,所述壓縮屬性為可壓縮或不可壓縮,根據所述數據塊的熱度屬性和壓縮屬性,向處理器11發(fā)送相應的數據寫入指令,由處理器11將所述數據寫入指令發(fā)送給存儲控制器12,所述數據寫入指令包含所述數據塊寫入的目標存儲區(qū);在一種實現方式,應用層30發(fā)起的數據寫入請求中包含的數據塊的壓縮屬性可以為可壓縮或不可壓縮,即當壓縮屬性為可壓縮時,用同一的壓縮算法對所有的數據進行壓縮和相應的解壓縮,當壓縮屬性為不可壓縮時,不需對數據進行壓縮;在另一種實現方式下,該壓縮屬性為可壓縮時,不同的數據塊還可以有不同的壓縮算法,即當數據塊的壓縮屬性為可壓縮時,根據數據塊壓縮屬性指向的具體壓縮算法對該數據塊進行壓縮操作。存儲控制器12用于接收操作系統(tǒng)20對數據塊的數據寫入指令,并根據所述數據寫入指令將所述數據塊寫入對應的目標存儲區(qū);這里目標存儲區(qū)可以為第一存儲區(qū)、第二存儲區(qū)、第三存儲區(qū)或第四存儲區(qū)。進一步地,操作系統(tǒng)20還用于當所述數據塊的壓縮屬性為可壓縮時,將數據壓縮指令發(fā)送給處理器11 ;相應的,處理器11用于接收操作系統(tǒng)20發(fā)送的數據壓縮指令,并對所述數據塊執(zhí)行數據壓縮操作。具體地,操作系統(tǒng)20根據所述數據塊的熱度屬性和壓縮屬性,向所述處理器發(fā)送相應的數據寫入指令可以包括以下幾種情況若所述數據塊的熱度屬性是熱點,向所述處理器發(fā)送將所述數據塊寫入第一存儲區(qū)的數據寫入指令;若所述數據塊的熱度屬性是溫點,且所述數據塊的壓縮屬性是可壓縮,向所述處理器發(fā)送將所述數據塊進行壓縮的數據壓縮指令,以及將壓縮后的數據塊寫入第二存儲區(qū)的數據寫入指令;若所述數據塊的熱度屬性是溫點,且所述數據塊的壓縮屬性是不可壓縮,向所述處理器發(fā)送將所述數據塊寫入第三存儲區(qū)的數據寫入指令;若所述數據塊的熱度屬性是冷點,且所述數據塊的壓縮屬性是可壓縮,向所述處理器發(fā)送將所述數據塊進行壓縮的數據壓縮指令,以及將壓縮后的數據塊寫入第四存儲區(qū)的數據寫入指令;若所述數據塊的熱度屬性是冷點,且所述數據塊的壓縮屬性是不可壓縮,向所述處理器發(fā)送將所述數據塊寫入第三存儲區(qū)的數據寫入指令。在本發(fā)明實施例提供的計算節(jié)點中,第一存儲陣列可以為固態(tài)硬盤SSD(Solid State Disk)陣列,所述第二存儲陣列為旋轉磁盤HDD (Hard Disk Drive)陣列;或者,所述第一存儲陣列和所述第二存儲陣列為訪問性能不同的SSD陣列。其中第一存儲陣列可以作為訪問性能高的存儲設備,該存儲設備可以做緩存,也可以做熱點數據盤。本發(fā)明實施例提供的計算節(jié)點可以是物理主機,具體可以是個人計算機 PC (Personal Computer)、筆記本電腦 laptop、工作站 Workstation、服務器 Server、大型機 Mainframe或者超級計算機Supercomputer,或者具體可以是手機、智能終端等等,也可以是虛擬機。除上述方法之外,在本發(fā)明實施例提供的計算節(jié)點中還可以執(zhí)行相應的數據讀取、數據替換、數據預取、離線數據壓縮等操作。另外,需要說明的是,本發(fā)明實施例中第一和第二只是為了區(qū)分存儲陣列或存儲區(qū),并無順序限定的意思。請參閱圖3,為本發(fā)明實施例提供的一種計算機系統(tǒng)的邏輯結構示意圖,該系統(tǒng)至少包括一個本發(fā)明實施例所述的計算節(jié)點,各個計算節(jié)點之間可以具有通信連接,也可以沒有通信連接。綜上所述,本發(fā)明實施例提供的計算節(jié)點及計算機系統(tǒng),利用數據壓縮技術,提高數據在緩存或熱點數據盤的命中率,并支持對不同的數據采取不同的壓縮算法,提高了數據的壓縮效率;另外,通過對數據的熱度進行區(qū)分,例如對訪問最頻繁的熱點數據不壓縮, 而對訪問頻度居中的溫點數據進行壓縮處理,以及通過將存儲區(qū)域進一步細分為存儲壓縮數據的區(qū)域和存儲不壓縮數據的區(qū)域,在利用壓縮提高緩存命中率的同時,弱化了數據壓縮可能帶來的一些負面影響;再次,通過給數據增加熱度屬性和壓縮屬性,內存和數據存儲之間、緩存和普通存儲之間或熱點數據盤與普通存儲之間都可以通過信息共享來共享這些數據的信息,實現協同工作。請參與圖4,為本發(fā)明實施例提供的一種數據處理方法的方法流程示意圖。該方法應用于計算節(jié)點,所述計算節(jié)點包含第一存儲陣列和第二存儲陣列,所述第一存儲陣列對于操作系統(tǒng)呈現為兩個邏輯存儲區(qū)域,分別是第一存儲區(qū)和第二存儲區(qū);所述第二存儲陣列對操作系統(tǒng)呈現為兩個邏輯存儲區(qū)域,分別是第三存儲區(qū)和第四存儲區(qū)。進一步的,該方法可以應用于本發(fā)明實施例提供的計算節(jié)點中。如圖4所示,該方法包括S101、獲取數據寫入請求,所述數據寫入請求包含待寫入的數據塊,所述數據塊包含熱度屬性和壓縮屬性,其中所述熱度屬性為熱點、溫點或冷點,所述壓縮屬性為可壓縮或不可壓縮;所述數據寫入請求一般是由應用層發(fā)起的。S102、根據所述數據塊的熱度屬性和壓縮屬性,將所述數據塊寫入對應的目標存儲區(qū),所述目標存儲區(qū)為第一存儲區(qū)、第二存儲區(qū)、第三存儲區(qū)和第四存儲區(qū)中的一個或多個存儲區(qū)。具體地,該步驟S102可以包括以下幾種情況
若所述數據塊的熱度屬性是熱點,將所述數據塊寫入所述第一存儲區(qū);若所述數據塊的熱度屬性是溫點,且所述數據塊的壓縮屬性是可壓縮,將所述數據塊壓縮后寫入所述第二存儲區(qū);若所述數據塊的熱度屬性是溫點,且所述數據塊的壓縮屬性是不可壓縮,將所述數據塊寫入所述第三存儲區(qū);若所述數據塊的熱度屬性是冷點,且所述數據塊的壓縮屬性是可壓縮,將所述數據塊壓縮后寫入所述第四存儲區(qū);若所述數據塊的熱度屬性是冷點,且所述數據塊的壓縮屬性是不可壓縮,將所述數據塊寫入所述第三存儲區(qū)。應當理解的是,本發(fā)明實施例所提供的第一存儲陣列可以做緩存,也可以做熱點數據盤。當第一存儲陣列做熱點數據盤時,第二存儲陣列只存儲除第一存儲陣列存儲的數據之外的數據;當第一存儲陣列做緩存時,第二存儲陣列存儲的是全部的系統(tǒng)的全部數據, 包括熱點、溫點和冷點數據。因此,當第一存儲陣列為緩存時,上述方法寫入第一存儲陣列, 即第一存儲區(qū)和第二存儲區(qū)的數據還可以寫入第二存儲陣列相應的存儲區(qū),因此,在上述方法的步驟若所述數據塊的熱度屬性是熱點,將所述數據塊寫入第一存儲區(qū)之后,所述方法還包括若所述數據塊的壓縮屬性是可壓縮,將所述數據塊壓縮后寫入第四存儲區(qū);若所述數據塊的壓縮屬性是不可壓縮,將所述數據塊寫入第三存儲區(qū)。相應的,在上述方法步驟若所述數據塊的熱度屬性是溫點,且所述數據塊的壓縮屬性是可壓縮,將所述數據塊壓縮后寫入第二存儲區(qū)之后,所述方法還包括將所述壓縮后的數據塊寫入第四存儲區(qū)。應當理解的是,這里將所述數據塊壓縮后獲得壓縮后的數據塊,然后執(zhí)行將壓縮后的數據塊寫入第二存儲區(qū)的步驟和將壓縮后的的數據塊寫入第四存儲區(qū)的步驟,這兩個步驟的意義是將數據塊即寫入緩存,又寫入存儲全部數據的磁盤,二者的順序并沒有特殊的限定,可以同時執(zhí)行,也可以一個在先一個在后。同理前述步驟也類似,在此不再贅述。如圖5所示,是本發(fā)明實施例提供的數據處理方法的一種實現方式的流程圖401、獲取數據寫入請求;該數據寫入請求可以是某種應用自動定時或不定時發(fā)起的,也可以是由用戶操作引起的。402、根據數據的熱度屬性判斷數據是否是熱點數據,若是,轉步驟403,若否,轉步驟 404 ;403、將數據寫入第一存儲區(qū),數據寫入操作結束;404、根據數據的壓縮屬性判斷數據是否可壓縮,若不可壓縮,轉步驟406,若可壓縮,轉步驟405 ;405根據數據的熱度屬性判斷數據是否是溫點數據,若是,轉步驟407,若否,轉步驟 408 ;406將數據寫入第三存儲區(qū),數據寫入操作結束;407根據數據的壓縮屬性選擇相應的壓縮算法將數據壓縮后寫入第二存儲區(qū),數據寫入操作結束;408根據數據的壓縮屬性選擇相應的壓縮算法,將數據壓縮后寫入第四存儲區(qū),數據寫入操作結束。
這里數據的壓縮屬性不但可以指示數據是否可壓縮,還可以指示數據可采取的壓縮算法,例如壓縮屬性為不可壓縮代表數據不能被壓縮,壓縮屬性為 LZff (Lempel-Ziv-ffelch Encoding)壓縮算法,則代表數據可壓縮且推薦的壓縮算法是LZW 壓縮算法,這樣不同的數據塊就能賦予不同的壓縮算法,從而根據數據塊的特性選擇合適的壓縮算法壓縮,提高壓縮效率,進而提高存儲性能。需要說明的是,圖5只是示例說明,是本發(fā)明實施例提供的數據處理方法的一種實現方式,本領域普通技術人員據此容易想到其它的實現方式,例如首先判斷數據的壓縮屬性,將數據分類,然后判斷數據的熱度屬性,確定數據的存儲區(qū)域等。請參閱圖6,為本發(fā)明實施例提供的另一數據處理方法的方法流程示意圖,如圖6 所示,該方法包括S201、獲取數據讀取請求,所述數據讀取請求包含待讀取的數據塊標識;該數據讀取請求一般是由應用層的應用發(fā)起的。S202、以所述待讀取的數據塊標識為索引從操作系統(tǒng)維護的元數據信息中獲取所述待讀取的數據塊的存儲區(qū)域以及所述待讀取數據塊的壓縮狀態(tài),所述壓縮狀態(tài)為已壓縮或未壓縮;在一種實現方式,操作系統(tǒng)可以維護一個或多個元數據信息表,該元數據信息表由于訪問頻繁可以存儲在緩存或熱點數據盤中,該元數據信息表包含所有數據塊的元數據信息,例如數據塊的數據熱度屬性、壓縮屬性、壓縮狀態(tài)屬性(已壓縮或未壓縮)、存儲位置等信息。其中壓縮可以為可壓縮或不可壓縮,可壓縮又可以具體為不同的壓縮算法;存儲位置可以為第一存儲陣列或第二存儲陣列,也可以具體到第一或二或三或四存儲區(qū),或者更具體的某一扇區(qū),或者存儲位置從大的存儲陣列到小的存儲區(qū)到具體的某一扇區(qū)信息都保存,本發(fā)明實施例對此不做限定。S203、若所述待讀取的數據塊的存儲區(qū)域是第一存儲陣列,且所述待讀取的數據塊的壓縮狀態(tài)是未壓縮,從所述第一存儲區(qū)讀取所述待讀取的數據塊;S204、若待讀取的數據塊的存儲區(qū)域是第一存儲陣列,且所述待讀取的數據塊的壓縮狀態(tài)是已壓縮,將所述數據塊解壓縮并遷移或復制至第一存儲區(qū),并從所述第一存儲區(qū)讀取所述數據塊;S205、若待讀取的數據塊的存儲區(qū)域是第二存儲陣列,且所述待讀取的數據塊的壓縮狀態(tài)是未壓縮,將所述待讀取的數據塊遷移或復制到第一存儲區(qū),并從所述第一存儲區(qū)讀取所述數據塊;S206、若待讀取的數據塊的存儲區(qū)域是第二存儲陣列,且所述待讀取的數據塊的壓縮狀態(tài)是已壓縮,將所述待讀取的數據塊解壓縮并遷移或復制至第一存儲區(qū),并從所述第一存儲區(qū)讀取所述數據塊。圖7為本發(fā)明實施例提供的該數據處理方法,即數據讀取方法的一種實現方式的流程圖600、流程開始;601、獲取數據讀取請求,該數據讀取請求可以是某一應用自動定時或不定時發(fā)起的,也可以是由用戶操作觸發(fā)的;602、判斷數據是否在第一存儲陣列,若是,執(zhí)行步驟603,若否,轉步驟605,本發(fā)明實施例中第一存儲陣列是緩存或熱點數據盤,用來存儲較常訪問的熱點或溫點數據;603、判斷數據是否已壓縮,若是,執(zhí)行步驟604,若否,轉步驟608 ;604、將數據從第二存儲區(qū)解壓縮至第一存儲區(qū),這里數據的解壓縮算法可以根據數據的壓縮屬性相應選取,也可以采用統(tǒng)一的解壓縮算法;605、判斷數據是否已壓縮,若是,執(zhí)行步驟606,若否,轉步驟607 ;606、將數據從第四存儲區(qū)解壓縮至第一存儲區(qū);607、將數據從第三存儲區(qū)遷移或復制到第一存儲區(qū),應當理解的是,當第一存儲陣列做緩存時,需要將第三存儲區(qū)的數據復制到第一存儲區(qū),當第一存儲陣列做熱點數據盤時,可以將第三存儲區(qū)的數據遷移到第一存儲區(qū);608、從第一存儲區(qū)讀取數據;609、數據讀取操作結束。需要說明的是,圖7僅是本發(fā)明實施例提供的數據讀取方法的一種實現方式,本領域普通技術人員據此容易得出可替代或等同的其它實現方式,本發(fā)明在此不再贅述。本發(fā)明實施例還提供另一數據處理方法的方法流程示意圖。該方法可以看做操作系統(tǒng)發(fā)起的數據預取操作,即將定期或不定期將需要經常訪問的數據從訪問速度慢的存儲區(qū)預取到訪問速度較快的存儲區(qū),例如本發(fā)明實施例中將數據從訪問性能稍差的HDD構建的第一存儲陣列(包括第三存儲區(qū)和第四存儲區(qū))預取到作緩存或做熱點數據盤的第一存儲陣列(包括第一存儲區(qū)和第二存儲區(qū)),該第一存儲陣列可以實現為高速的SSD陣列。該方法包括獲取數據預取請求,所述數據預取請求包含待預取的數據塊標識;以所述待預取的數據塊標識為索引從操作系統(tǒng)維護的元數據信息中獲取所述待預取的數據塊的壓縮狀態(tài),所述壓縮狀態(tài)為已壓縮或未壓縮;若所述待預取的數據塊的壓縮狀態(tài)是未壓縮,將所述數據塊標識對應的數據塊從第三存儲區(qū)遷移或復制到所述第一存儲區(qū),并將所述數據塊標記為熱點數據;若所述待預取的數據塊的壓縮狀態(tài)是已壓縮,在所述第一存儲區(qū)有空閑區(qū)域時, 將所述數據塊解壓縮并遷移或復制到所述第一存儲區(qū),并將所述數據塊標記為熱點數據; 在所述第一存儲區(qū)沒有空閑區(qū)域時,將所述數據塊遷移或復制到所述第二存儲區(qū),并將所述數據塊標記為溫點數據。需要說明的是,本發(fā)明實施例無意限定是先判斷數據塊是否已壓縮,還是先判斷數據塊存儲在那個存儲區(qū)。圖8為上述數據處理方法的具體實現流程圖,如圖8所示,該方法包括801、數據預取啟動;數據預取請求通常是操作系統(tǒng)定期或不定期發(fā)起的,獲取到該數據預取請求之后啟動數據預取操作。802、判斷數據是否已壓縮。本發(fā)明實施例中通過查詢元數據信息獲得數據的壓縮狀態(tài)信息。若是,執(zhí)行步驟803,若否,轉步驟804 ;803、將數據從第四存儲區(qū)預取至第二存儲區(qū);804、將數據從第三存儲區(qū)預取至第一存儲區(qū);805、判斷第一存儲區(qū)是否為空,若是,執(zhí)行步驟806,若否,轉步驟808 ;806、將數據從第二存儲區(qū)解壓縮并讀入第一存儲區(qū);
807、將數據標記為熱點數據;808、將數據標記為溫點數據;809、流程結束。需要說明的是,以上只是舉例說明,具體實現的時候可以有其它方式,例如在步驟804將數據讀入第一存儲區(qū)之前也可以判斷第一存儲區(qū)是否有空閑,若有空閑執(zhí)行步驟 804,若沒空閑,可以放棄數據預取或將數據壓縮后讀入第二存儲區(qū)。本發(fā)明實施例中通過數據預取操作,能將訪問相對頻繁的熱點數據從訪問性能差的存儲陣列預取到訪問性能高的存儲陣列,并在預取的過程中根據數據的壓縮屬性對數據塊進行壓縮,使得更多的熱點或溫點數據能夠存儲在訪問性能高的存儲陣列,提高數據讀取的命中率,同時根據數據的熱度屬性對熱點數據選擇不壓縮存儲,以免解壓縮帶來的額外開銷影響數據的讀取效率。本發(fā)明實施例還提供另一數據處理方法的方法流程示意圖。該方法可以看做數據替換操作,即當訪問性能高的存儲陣列中訪問頻繁的數據變得不再頻繁被訪問時,將其從訪問性能高的存儲陣列替換到訪問性能低的存儲陣列,這里的替換可以是將這些數據取出,也可以在取出的同時用其它訪問頻繁的數據代替。該方法包括獲取數據替換請求,所述數據替換請求包含待替換的數據塊標識;以所述待替換的數據塊標識為索引從操作系統(tǒng)維護的元數據信息中獲取所述待替換的數據塊的熱度屬性和壓縮屬性;若所述待替換的數據塊的熱度屬性是溫點,且所述待替換的數據塊的壓縮屬性是可壓縮,將所述數據塊壓縮并從第一存儲區(qū)遷移到第二存儲區(qū);若所述待替換的數據塊的熱度屬性是溫點,且所述待替換的數據塊的壓縮屬性是不可壓縮,將所述數據塊從第一存儲區(qū)遷移到第三存儲區(qū);若所述待替換的數據塊的熱度屬性是冷點,且所述待替換的數據塊的壓縮屬性是可壓縮,將所述數據塊壓縮后從第一存儲區(qū)遷移到第四存儲區(qū);若所述待替換的數據塊的熱度屬性是冷點,且所述待替換的數據塊的壓縮屬性是不可壓縮,將所述數據塊從第一存儲區(qū)遷移到第三存儲區(qū)。圖9為上述數據處理方法的具體流程圖,如圖9所示,該方法包括901、數據替換操作開始。此操作通常是操作系統(tǒng)定期或不定期發(fā)起的。902、判斷數據是否是溫點數據,若是,執(zhí)行步驟903,若否,轉步驟906 ;應當理解的是,這里的判斷的數據通常是第一存儲區(qū)或第二存儲區(qū)的數據,這些數據之所以被存儲在這兩個存儲區(qū)是因為它們訪問頻繁度較高,但是數據的訪問頻繁度,也即數據的熱度是會發(fā)生變化的,因此一段時間之后可以對這些數據執(zhí)行替換操作,判斷這些數據是否仍然是熱點數據。903、判斷該數據是否可壓縮,若是,執(zhí)行步驟904 ;若否,轉步驟905。904、將該數據壓縮后從第一存儲區(qū)替換至第二存儲區(qū)。這里應當理解的是,數據壓縮可以采用統(tǒng)一壓縮算法,也可以根據數據的壓縮屬性選擇合適的壓縮算法。905、將數據從第一存儲區(qū)替換至第三存儲區(qū)。906、判斷數據是否已壓縮,若是,執(zhí)行步驟907 ;若否,轉步驟908。907、將數據從第二存儲區(qū)替換至第四存儲區(qū)。
908、將數據從第一存儲區(qū)替換至第三存儲區(qū)。909、數據替換操作結束。從上述所有實施例提供的數據處理方法可以看出,在執(zhí)行數據讀取或數據寫入等操作時可以根據需求進行在線的數據壓縮或解壓縮處理,而本發(fā)明實施例提供的數據處理方法也支持數據離線壓縮操作,如圖10所示,該示例是對第三存儲區(qū)的數據進行離線壓縮的過程,該方法包括1001、離線壓縮開始。1002、判斷是否有數據未壓縮,若是,執(zhí)行步驟1003 ;若否,轉步驟1005。需要說明的是,本發(fā)明實施例是假設對第三存儲區(qū)的數據全部進行壓縮處理,第三存儲區(qū)的數據往往沒有被壓縮,這里判斷是為了更準確的保證沒有對已壓縮數據的冗余操作。當然這一判斷步驟也可以根據實際需要另行定義,例如,如果有目的數據需要壓縮,那么直接對這些數據進行壓縮即可,不需要判斷。1003、選擇壓縮算法,可以根據數據的壓縮屬性選擇壓縮算法,也可以對所有數據采取同樣的壓縮算法。1004、將數據從第三存儲區(qū)壓縮后移動到第四存儲區(qū),這里的移動可以是遷移,也可以是復制。1005、離線壓縮操作結束。綜上所述,本發(fā)明實施例提供的數據處理方法,利用數據壓縮技術,提高數據在緩存或熱點數據盤的命中率,并支持對不同的數據采取不同的壓縮算法,提高了數據的壓縮效率;另外,通過對數據的熱度進行區(qū)分,例如對訪問最頻繁的熱點數據不壓縮,而對訪問頻度居中的溫點數據進行壓縮處理,以及通過將存儲區(qū)域進一步細分為存儲壓縮數據的區(qū)域和存儲不壓縮數據的區(qū)域,在利用壓縮提高緩存命中率的同時,弱化了數據壓縮可能帶來的一些負面影響;再次,通過給數據增加熱度屬性和壓縮屬性,內存和數據存儲之間、緩存和普通存儲之間或熱點數據盤與普通存儲之間都可以通過信息共享來共享這些數據的信息,實現協同工作。
權利要求
1.一種計算節(jié)點,其特征在于,所述計算節(jié)點包括硬件層、運行在硬件層之上的操作系統(tǒng)以及運行在操作系統(tǒng)之上的應用層,所述硬件層包括處理器、存儲控制器、第一存儲陣列和第二存儲陣列;所述第一存儲陣列對于操作系統(tǒng)呈現為兩個邏輯存儲區(qū)域,分別是第一存儲區(qū)和第二存儲區(qū);所述第二存儲陣列對操作系統(tǒng)呈現為兩個邏輯存儲區(qū)域,分別是第三存儲區(qū)和第四存儲區(qū);所述第一存儲區(qū)存儲未壓縮的熱點數據,所述第二存儲區(qū)存儲已壓縮的溫點數據,所述第三存儲區(qū)存儲未壓縮的溫點數據和未壓縮的冷點數據,所述第四存儲區(qū)存儲已壓縮的冷點數據;所述操作系統(tǒng)用于接收所述應用層發(fā)起的數據寫入請求,所述數據寫入請求包含待寫入的數據塊,所述數據塊具有熱度屬性和壓縮屬性,其中所述熱度屬性為熱點、溫點或冷點,所述壓縮屬性為可壓縮或不可壓縮,根據所述數據塊的熱度屬性和壓縮屬性,向所述處理器發(fā)送相應的數據寫入指令,由所述處理器將所述數據寫入指令發(fā)送給所述存儲控制器,所述數據寫入指令包含所述數據塊寫入的目標存儲區(qū);所述存儲控制器用于接收所述處理器發(fā)送的數據寫入指令,并根據所述數據寫入指令將所述數據塊寫入對應的目標存儲區(qū)。
2.根據權利要求I所述的方法,其特征在于,所述操作系統(tǒng)還用于當所述數據塊的壓縮屬性為可壓縮時,將數據壓縮指令發(fā)送給所述處理器;所述處理器用于接收所述操作系統(tǒng)發(fā)送的數據壓縮指令,并對所述數據塊執(zhí)行數據壓縮操作。
3.根據權利要求2所述的方法,其特征在于,所述根據所述數據塊的熱度屬性和壓縮屬性,向所述處理器發(fā)送相應的數據寫入指令,具體包括若所述數據塊的熱度屬性是熱點,向所述處理器發(fā)送將所述數據塊寫入第一存儲區(qū)的數據寫入指令;若所述數據塊的熱度屬性是溫點,且所述數據塊的壓縮屬性是可壓縮,向所述處理器發(fā)送將所述數據塊進行壓縮的數據壓縮指令,以及將壓縮后的數據塊寫入第二存儲區(qū)的數據寫入指令;若所述數據塊的熱度屬性是溫點,且所述數據塊的壓縮屬性是不可壓縮,向所述處理器發(fā)送將所述數據塊寫入第三存儲區(qū)的數據寫入指令;若所述數據塊的熱度屬性是冷點,且所述數據塊的壓縮屬性是可壓縮,向所述處理器發(fā)送將所述數據塊進行壓縮的數據壓縮指令,以及將壓縮后的數據塊寫入第四存儲區(qū)的數據寫入指令;若所述數據塊的熱度屬性是冷點,且所述數據塊的壓縮屬性是不可壓縮,向所述處理器發(fā)送將所述數據塊寫入第三存儲區(qū)的數據寫入指令。
4.根據權利要求I至3任一項所述的方法,其特征在于,所述第一存儲陣列為固態(tài)硬盤SSD陣列,所述第二存儲陣列為旋轉磁盤HDD陣列;或者,所述第一存儲陣列和所述第二存儲陣列為訪問性能不同的SSD陣列。
5.一種數據處理方法,其特征在于,所述方法應用于計算節(jié)點,所述計算節(jié)點包含第一存儲陣列和第二存儲陣列,所述第一存儲陣列對于操作系統(tǒng)呈現為兩個邏輯存儲區(qū)域,分別是第一存儲區(qū)和第二存儲區(qū);所述第二存儲陣列對操作系統(tǒng)呈現為兩個邏輯存儲區(qū)域,分別是第三存儲區(qū)和第四存儲區(qū),所述方法包括獲取數據寫入請求,所述數據寫入請求包含待寫入的數據塊,所述數據塊具有熱度屬性和壓縮屬性,其中所述熱度屬性為熱點、溫點或冷點,所述壓縮屬性為可壓縮或不可壓縮;根據所述數據塊的熱度屬性和壓縮屬性,將所述數據塊寫入對應的目標存儲區(qū),所述目標存儲區(qū)為第一存儲區(qū)、第二存儲區(qū)、第三存儲區(qū)和第四存儲區(qū)中的一個或多個存儲區(qū)。
6.根據權利要求5所述的方法,其特征在于,所述根據所述數據塊的熱度屬性和壓縮屬性,將所述數據塊寫入對應的目標存儲區(qū),包括若所述數據塊的熱度屬性是熱點,將所述數據塊寫入所述第一存儲區(qū);若所述數據塊的熱度屬性是溫點,且所述數據塊的壓縮屬性是可壓縮,將所述數據塊壓縮后寫入所述第二存儲區(qū);若所述數據塊的熱度屬性是溫點,且所述數據塊的壓縮屬性是不可壓縮,將所述數據塊寫入所述第三存儲區(qū);若所述數據塊的熱度屬性是冷點,且所述數據塊的壓縮屬性是可壓縮,將所述數據塊壓縮后寫入所述第四存儲區(qū);若所述數據塊的熱度屬性是冷點,且所述數據塊的壓縮屬性是不可壓縮,將所述數據塊寫入所述第三存儲區(qū)。
7.根據權利要求6所述的方法,其特征在于,所述若所述數據塊的熱度屬性是熱點,將所述數據塊寫入所述第一存儲區(qū)之后,所述方法還包括若所述數據塊的壓縮屬性是可壓縮,將所述數據塊壓縮后寫入第四存儲區(qū);若所述數據塊的壓縮屬性是不可壓縮,將所述數據塊寫入第三存儲區(qū)。
8.根據權利要求6所述的方法,其特征在于,所述若所述數據塊的熱度屬性是溫點,且所述數據塊的壓縮屬性是可壓縮,將所述數據塊壓縮后寫入第二存儲區(qū)之后,所述方法還包括將所述壓縮后的數據塊寫入第四存儲區(qū)。
9.根據權利要求5所述的方法,其特征在于,所述方法還包括獲取數據讀取請求,所述數據讀取請求包含待讀取的數據塊標識;以所述待讀取的數據塊標識為索引從操作系統(tǒng)維護的元數據信息中獲取所述待讀取的數據塊的存儲區(qū)域以及所述待讀取數據塊的壓縮狀態(tài),所述壓縮狀態(tài)為已壓縮或未壓縮;若所述待讀取的數據塊的存儲區(qū)域是第一存儲陣列,且所述待讀取的數據塊的壓縮狀態(tài)是未壓縮,從所述第一存儲區(qū)讀取所述待讀取的數據塊;若待讀取的數據塊的存儲區(qū)域是第一存儲陣列,且所述待讀取的數據塊的壓縮狀態(tài)是已壓縮,將所述數據塊解壓縮并遷移或復制至第一存儲區(qū),并從所述第一存儲區(qū)讀取所述數據塊;若待讀取的數據塊的存儲區(qū)域是第二存儲陣列,且所述待讀取的數據塊的壓縮狀態(tài)是未壓縮,將所述待讀取的數據塊遷移或復制到第一存儲區(qū),并從所述第一存儲區(qū)讀取所述數據塊;若待讀取的數據塊的存儲區(qū)域是第二存儲陣列,且所述待讀取的數據塊的壓縮狀態(tài)是已壓縮,將所述待讀取的數據塊解壓縮并遷移或復制至第一存儲區(qū),并從所述第一存儲區(qū)讀取所述數據塊。
10.根據權利要求5所述的方法,其特征在于,所述方法還包括獲取數據預取請求,所述數據預取請求包含待預取的數據塊標識;以所述待預取的數據塊標識為索引從操作系統(tǒng)維護的元數據信息中獲取所述待預取的數據塊的壓縮狀態(tài),所述壓縮狀態(tài)為已壓縮或未壓縮;若所述待預取的數據塊的壓縮狀態(tài)是未壓縮,將所述數據塊標識對應的數據塊從第三存儲區(qū)遷移或復制到所述第一存儲區(qū),并將所述數據塊標記為熱點數據;若所述待預取的數據塊的壓縮狀態(tài)是已壓縮,在所述第一存儲區(qū)有空閑區(qū)域時,將所述數據塊解壓縮并遷移或復制到所述第一存儲區(qū),并將所述數據塊標記為熱點數據;在所述第一存儲區(qū)沒有空閑區(qū)域時,將所述數據塊遷移或復制到所述第二存儲區(qū),并將所述數據塊標記為溫點數據。
11.根據權利要求5所述的方法,其特征在于,所述方法還包括獲取數據替換請求,所述數據替換請求包含待替換的數據塊標識;以所述待替換的數據塊標識為索引從操作系統(tǒng)維護的元數據信息中獲取所述待替換的數據塊的熱度屬性和壓縮屬性;若所述待替換的數據塊的熱度屬性是溫點,且所述待替換的數據塊的壓縮屬性是可壓縮,將所述數據塊壓縮并從第一存儲區(qū)遷移到第二存儲區(qū);若所述待替換的數據塊的熱度屬性是溫點,且所述待替換的數據塊的壓縮屬性是不可壓縮,將所述數據塊從第一存儲區(qū)遷移到第三存儲區(qū);若所述待替換的數據塊的熱度屬性是冷點,且所述待替換的數據塊的壓縮屬性是可壓縮,將所述數據塊壓縮后從第一存儲區(qū)遷移到第四存儲區(qū);若所述待替換的數據塊的熱度屬性是冷點,且所述待替換的數據塊的壓縮屬性是不可壓縮,將所述數據塊從第一存儲區(qū)遷移到第三存儲區(qū)。
12.—種計算機系統(tǒng),其特征在于,包括至少一個如權利要求I至4任一項所述的計算節(jié)點。
全文摘要
本發(fā)明實施例提供一種數據處理的方法、裝置及系統(tǒng),其中該數據處理方法通過獲取數據寫入請求,所述數據寫入請求包含待寫入的數據塊,所述數據塊包含熱度屬性和壓縮屬性,其中所述熱度屬性為熱點、溫點或冷點,所述壓縮屬性為可壓縮或不可壓縮;根據所述數據塊的熱度屬性和壓縮屬性,將所述數據塊寫入對應的目標存儲區(qū),從而利用數據壓縮技術,提高數據在緩存或熱點數據盤的讀取命中率。
文檔編號G06F3/06GK102609360SQ201210008939
公開日2012年7月25日 申請日期2012年1月12日 優(yōu)先權日2012年1月12日
發(fā)明者章曉峰 申請人:華為技術有限公司